ইলাস্টিক অনুসন্ধান সার্ভারে সমস্ত সূচি তালিকাবদ্ধ করবেন?


250

আমি একটি ইলাস্টিক অনুসন্ধান সার্ভারে উপস্থিত সমস্ত সূচীর তালিকা করতে চাই। আমি এটি চেষ্টা করেছি:

curl -XGET localhost:9200/

তবে এটি আমাকে এটি দেয়:

{
  "ok" : true,
  "status" : 200,
  "name" : "El Aguila",
  "version" : {
    "number" : "0.19.3",
    "snapshot_build" : false
  },
  "tagline" : "You Know, for Search"
}

আমি সমস্ত সূচকের একটি তালিকা চাই ..

উত্তর:


403

আপনার ক্লাস্টারের সমস্ত সূচকের সংক্ষিপ্ত তালিকার জন্য, কল করুন

curl http://localhost:9200/_aliases

এটি আপনাকে সূচকগুলির তালিকা এবং তাদের উপস্বের তালিকা দেবে।

আপনি যদি এটি সুন্দর ছাপতে চান তবে যুক্ত করুন pretty=true:

curl http://localhost:9200/_aliases?pretty=true

যদি আপনার সূচকগুলি বলা হয় old_deuteronomyএবং mungojerrie: ফলাফলটি এরকম কিছু দেখাচ্ছে :

{
  "old_deuteronomy" : {
    "aliases" : { }
  },
  "mungojerrie" : {
    "aliases" : {
      "rumpleteazer" : { },
      "that_horrible_cat" : { }
    }
  }
}

5
@ পাওলোকেক উত্তর এখন দেখে মনে হচ্ছে এটি সঠিক সমাধান; পরিষ্কার মনে হচ্ছে। curl http://localhost:9200/_stats/indexes\?pretty\=1
নোটপ্যাচ

1
প্লেইন (নন-জসন) তালিকার জন্য আমার 2 সেন্ট:curl -s localhost:9200/_aliases?pretty=true | awk -F\" '!/aliases/ && $2 != "" {print $2}'
ইয়ারন

ইলাস্টিকসার্চ 6.5 এর জন্য হয় শেষের /statsপয়েন্টে আঘাত করুন , বা পরমের সাহায্যে স্বাস্থ্য শেষ করুন_cluster/health?level=indices
জাস্টিন ডাব্লু।

কার্ল লোকালহোস্ট: 9200 / _ ক্যাট / সূচক? v আমার পক্ষে কাজ করেছেন (ইলাস্টিক 6.2.4 এ)
ম্যাট এল।

78

চেষ্টা

curl 'localhost:9200/_cat/indices?v'

এটি আপনাকে একটি সারণী পদ্ধতিতে নিম্নলিখিত স্ব-বর্ণনামূলক আউটপুট দেবে

health index    pri rep docs.count docs.deleted store.size pri.store.size
yellow customer   5   1          0            0       495b           495b

বাছাইয়ের জন্য একটি পাইপ যুক্ত করা কী সবুজ হয়ে উঠছে তা দেখতে এটি সহজ করে তোলে। এছাড়াও store.size পরিবর্তন অতিরিক্ত অগ্রগতি নির্দেশিত।
কেভিপি

আপনি উদাহরণস্বরূপ & h = স্বাস্থ্য, সূচি এবং সেইসাথে & s = স্বাস্থ্যের সাথে বাছাই করে কলামগুলি নির্বাচন করতে বা অর্ডার করতে পারেন: ডেস্ক
জর্জি এঙ্গেল

33

আপনি জিজ্ঞাসা করতে পারেন localhost:9200/_statusএবং এটি আপনাকে সূচকগুলির তালিকা এবং প্রতিটি সম্পর্কে তথ্য দেবে। প্রতিক্রিয়াটি এরকম কিছু দেখবে:

{
  "ok" : true,
  "_shards" : { ... },
  "indices" : {
    "my_index" : { ... },
    "another_index" : { ... }
  }
}

3
আপনি যদি কেবল সূচকের নামের তালিকা জানতে চান তবে এই পদ্ধতিটি খুব বেশি এবং ধীর। আরও ভাল ব্যবহার -GET /_stats/indexes
asyncwait

4
@ আসনকোয়েট আমি /_stats/indicesএটির পরামর্শ দিচ্ছি যেহেতু এটি সঠিক বহুবচন এবং এর মধ্যে /_statusএবং ভিতরে কী ব্যবহার করা হয়েছে /_stats
নিকোলাস শ্যাঙ্কস

2
সংস্করণ 5.6 এ আর কোনও বৈধ URL বলে মনে হয় না।
অজানা দেব

1
এপিআই শেষবিন্দু পরিবর্তিত হয়েছে _nodes/statsএবং _nodes/status@KimberlyW
maxymoo

২.২.০ এ অবমূল্যায়িত হয়েছে।
জারমড

26

_ স্ট্যাটাস কমান্ড মেট্রিক্সে ইচ্ছুক নির্দিষ্ট করে ফলাফলগুলি কাস্টমাইজ করার উপায় সরবরাহ করে। সূচকগুলি পেতে কোয়েরিটি নিম্নরূপ:

GET /_stats/indices

_statsক্যোয়ারির সাধারণ ফর্ম্যাটটি হ'ল:

/_stats
/_stats/{metric}
/_stats/{metric}/{indexMetric}
/{index}/_stats
/{index}/_stats/{metric}

মেট্রিকগুলি যেখানে:

indices, docs, store, indexing, search, get, merge, 
refresh, flush, warmer, filter_cache, id_cache, 
percolate, segments, fielddata, completion

আমার কাছে অনুশীলন হিসাবে, আমি একটি ছোট ইলাস্টিক সন্ধান প্লাগইন লিখেছি যা অন্য কোনও তথ্য ছাড়াই স্থিতিস্থাপক সূচকগুলি তালিকার কার্যকারিতা সরবরাহ করে। আপনি নিম্নলিখিত url এ এটি পেতে পারেন:

http://blog.iterativ.ch/2014/04/11/listindices-writing-your-first-elasticsearch-java-plugin/

https://github.com/iterativ/elasticsearch-listindices


2
কাজ করে না:"type": "illegal_argument_exception", "reason": "request [/_stats/indices] contains unrecognized metric: [indices]"
ইভান ইয়ুরচেঙ্কো

@ ইভানইউরচেনকো আমি আমার ইলাস্টিক সন্ধান প্লাগইনটি অনেক আগে প্রয়োগ করেছি। খুব সম্ভবত সম্ভব যে API গুলি পরিবর্তিত হয়েছে এবং এটি আর কাজ করে না .. '_aliases' কমান্ডটি ব্যবহার করা সবচেয়ে ভাল। এটি ইলাস্টিক অনুসন্ধানে সমস্ত সূচক সম্পর্কেও তথ্য সরবরাহ করবে।
paweloque

18

আমি সমস্ত সূচক পেতে এটি ব্যবহার করি:

$ curl --silent 'http://127.0.0.1:9200/_cat/indices' | cut -d\  -f3

এই তালিকা সহ আপনি কাজ করতে পারেন ...

উদাহরণ

$ curl -s 'http://localhost:9200/_cat/indices' | head -5
green open qa-abcdefq_1458925279526           1 6       0     0   1008b    144b
green open qa-test_learnq_1460483735129    1 6       0     0   1008b    144b
green open qa-testimportd_1458925361399       1 6       0     0   1008b    144b
green open qa-test123p_reports                1 6 3868280 25605   5.9gb 870.5mb
green open qa-dan050216p_1462220967543        1 6       0     0   1008b    144b

উপরের তৃতীয় কলামটি (সূচকের নাম) পেতে:

$ curl -s 'http://localhost:9200/_cat/indices' | head -5 | cut -d\  -f3
qa-abcdefq_1458925279526
qa-test_learnq_1460483735129
qa-testimportd_1458925361399
qa-test123p_reports
qa-dan050216p_1462220967543

দ্রষ্টব্য: আপনি এর awk '{print $3}'পরিবর্তে ব্যবহার করতে পারেন cut -d\ -f3

কলাম শিরোনাম

?vকলামটি শিরোনাম যুক্ত করতে আপনি কোয়েরিকেও প্রত্যয় করতে পারেন । এটি cut...করার ফলে পদ্ধতিটি ভেঙে যাবে তাই আমি awk..এই মুহূর্তে নির্বাচনটি ব্যবহার করার পরামর্শ দেব ।

$ curl -s 'http://localhost:9200/_cat/indices?v' | head -5
health status index                              pri rep docs.count docs.deleted store.size pri.store.size
green  open   qa-abcdefq_1458925279526             1   6          0            0      1008b           144b
green  open   qa-test_learnq_1460483735129      1   6          0            0      1008b           144b
green  open   qa-testimportd_1458925361399         1   6          0            0      1008b           144b
green  open   qa-test123p_reports                  1   6    3868280        25605      5.9gb        870.5mb

1
curl -s 'http://localhost:9200/_cat/indices?h=index'কেবল সূচকের নাম মুদ্রণ করবে। কলামটি ফিল্টার করতে শেল ট্র্যাকগুলি ব্যবহার করার দরকার নেই।
hgf

না শুধুমাত্র আপনি awk ব্যবহার করার আগে আপনার উচিত awk (অথবা অন্য ব্যবহারের ব্যবহার tr -s ' 'করার আগে cutস্পেস ঘনীভূত রান করার জন্য) বা স্থিতি হলে আপনি অন্য সূচক নাম পাবেন না redকারণ এটি স্পেস এবং সঙ্গে padded করা হবে cutএকইরূপে delimiting যেমন প্রতিটি স্থান এমনকি যদি "ফিল্ড" খালি শেষ হয় তবে একটি নতুন ক্ষেত্র
kbolino

11

আমি / _ বিড়াল / সূচকগুলি করারও সুপারিশ করব যা আপনার সূচকগুলির একটি সুন্দর মানব পাঠযোগ্য তালিকা দেয়।


8

কেবলমাত্র সূচকের তালিকা পাওয়ার সহজ উপায় হ'ল 'h = সূচক' প্যারামিটার সহ উপরের উত্তরটি ব্যবহার করা:

curl -XGET "localhost:9200/_cat/indices?h=index"

7

curl -XGET 'http://localhost:9200/_cluster/health?level=indices'

এটি নীচের মত আউটপুট হবে

{
  "cluster_name": "XXXXXX:name",
  "status": "green",
  "timed_out": false,
  "number_of_nodes": 3,
  "number_of_data_nodes": 3,
  "active_primary_shards": 199,
  "active_shards": 398,
  "relocating_shards": 0,
  "initializing_shards": 0,
  "unassigned_shards": 0,
  "delayed_unassigned_shards": 0,
  "number_of_pending_tasks": 0,
  "number_of_in_flight_fetch": 0,
  "task_max_waiting_in_queue_millis": 0,
  "active_shards_percent_as_number": 100,
  "indices": {
    "logstash-2017.06.19": {
      "status": "green",
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "active_primary_shards": 3,
      "active_shards": 6,
      "relocating_shards": 0,
      "initializing_shards": 0,
      "unassigned_shards": 0
    },
    "logstash-2017.06.18": {
      "status": "green",
      "number_of_shards": 3,
      "number_of_replicas": 1,
      "active_primary_shards": 3,
      "active_shards": 6,
      "relocating_shards": 0,
      "initializing_shards": 0,
      "unassigned_shards": 0
    }}

অন্য সমস্ত শেষ পয়েন্টগুলি আমার পক্ষে কার্যকর হয়নি। আপনার উত্তর কাজ! ধন্যবাদ. দেখুন stackoverflow.com/questions/49204526/...
অরুণ

আমিও, এটি কি নতুন সংস্করণের জিনিস। মূল উত্তরগুলি দেখে মনে হচ্ছে ২.x তবে x.x নয়
অ্যান্ড্রু জোন ডড্ডস

5

আমি আপনাকে যে ক্যোয়ারায় চালাতে পারি সে প্রশ্নের উত্তর দেব।

GET /_cat/indices?v

এবং সিআরএল সংস্করণ হবে

CURL -XGET http://localhost:9200/_cat/indices?v


3

সূচকগুলি তালিকাভুক্ত করতে আপনি করতে পারেন: কার্ল 'লোকালহোস্ট: 9200 / _ক্যাট / সূচকগুলি? V' ইলাস্টিকসার্ক ডকুমেন্টেশন


3

সুরক্ষিত স্থিতিস্থাপক অনুসন্ধান অ্যাক্সেস কার্ল যদিও (আপডেট 2020)

যদি Elastic Searchসুরক্ষিত হয়, আপনি সূচকগুলি তালিকা করতে এই কমান্ডটি ব্যবহার করতে পারেন

curl http://username:password@localhost:9200/_aliases?pretty=true

2

_stats/indicesসঙ্গে ফলাফল দেয় indices

$ curl -XGET "localhost:9200/_stats/indices?pretty=true"
{
  "_shards" : {
    "total" : 10,
    "successful" : 5,
    "failed" : 0
  },
  "_all" : {
    "primaries" : { },
    "total" : { }
  },
  "indices" : {
    "visitors" : {
      "primaries" : { },
      "total" : { }
    }
  }
}

2

এখানকার লোকেরা উত্তরটি দিয়েছেন কীভাবে এটি কার্ল এবং অর্থে করবেন, কিছু লোককে জাভাতে এটি করার প্রয়োজন হতে পারে।

এখানে এটা যায়

client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()


2

ইলাস্টিকসার্চ 6. এক্স এর জন্য আমি নিম্নলিখিতটি সবচেয়ে সহায়ক বলে মনে করেছি। প্রত্যুত্তরগুলিতে প্রত্যেকে বিভিন্ন ডেটা সরবরাহ করে।

# more verbose
curl -sS 'localhost:9200/_stats' | jq -C ".indices" | less

# less verbose, summary
curl -sS 'localhost:9200/_cluster/health?level=indices' | jq -C ".indices" | less

2

ব্যবহার করে আপনি নির্দিষ্ট সূচকও পেতে পারেন

curl -X GET "localhost:9200/<INDEX_NAME>"
e.g.   curl -X GET "localhost:9200/twitter"
You may get output like:
{
  "twitter": {
     "aliases": { 

     },
     "mappings": { 

     },
     "settings": {
     "index": {
        "creation_date": "1540797250479",
        "number_of_shards": "3",
        "number_of_replicas": "2",
        "uuid": "CHYecky8Q-ijsoJbpXP95w",
        "version": {
            "created": "6040299"
        },
       "provided_name": "twitter"
      }
    }
  }
}

আরও তথ্যের জন্য

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html


1

ডিবিতে সূচকগুলি দেখার জন্য এখানে আরও একটি উপায় রয়েছে:

curl -sG somehost-dev.example.com:9200/_status --user "credentials:password" | sed 's/,/\n/g' | grep index | grep -v "size_in" | uniq


{ "index":"tmpdb"}

{ "index":"devapp"}

1

তালিকার সাথে এর স্থিতি প্রদর্শন করার জন্য সূচকগুলি তালিকাভুক্ত করার অন্যতম সেরা উপায়: কেবল নীচে কোয়েরি চালানো by

দ্রষ্টব্য: যথাযথ আউটপুট পেতে সেন্স ব্যবহার করুন।

curl -XGET 'http://localhost:9200/_cat/shards'

নমুনা আউটপুট নীচে হিসাবে। মূল সুবিধাটি হ'ল এটি মূলত সূচকের নাম এবং এটিতে সংরক্ষণ করা শার্ডগুলি, সূচির আকার এবং শার্ডস আইপি ইত্যাদি প্রদর্শন করে

index1     0 p STARTED     173650  457.1mb 192.168.0.1 ip-192.168.0.1 
index1     0 r UNASSIGNED                                                 
index2     1 p STARTED     173435  456.6mb 192.168.0.1 ip-192.168.0.1 
index2     1 r UNASSIGNED                                                 
...
...
...

1

আমি ডেটিংয়ের জসন_stats/indexes ব্লব পেতে শেষ পয়েন্টটি ব্যবহার করি এবং তারপরে জিকিউ দিয়ে ফিল্টার করি

curl 'localhost:9200/_stats/indexes' | jq '.indices | keys | .[]'

"admin"
"blazeds"
"cgi-bin"
"contacts_v1"
"flex2gateway"
"formmail"
"formmail.pl"
"gw"
...

আপনি যদি উদ্ধৃতি চান না, -rjq এ একটি পতাকা যুক্ত করুন ।

হ্যাঁ, শেষের অবস্থানটি indexesএবং ডেটা কীটি রয়েছে indicesতাই তারা নিজের মনও তৈরি করতে পারেনি :)

অভ্যন্তরীণ সুরক্ষা স্ক্যান (নেসাসেস) দ্বারা নির্মিত এই আবর্জনা সূচকগুলি পরিষ্কার করার জন্য আমার এটির দরকার ছিল।

পুনশ্চ. আপনি যদি কমান্ড লাইন থেকে ইএসের সাথে ইন্টারঅ্যাক্ট করতে চলেছেন তবে আমি জেকিউর সাথে পরিচিত হওয়ার পরামর্শ দিচ্ছি ।


1
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.4.0</version>
</dependency>

জাভা এপিআই

Settings settings = Settings.settingsBuilder().put("cluster.name", Consts.ES_CLUSTER_NAME).build();
TransportClient client = TransportClient.builder().settings(settings).build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("52.43.207.11"), 9300));
IndicesAdminClient indicesAdminClient = client.admin().indices();
GetIndexResponse getIndexResponse = indicesAdminClient.getIndex(new GetIndexRequest()).get();
for (String index : getIndexResponse.getIndices()) {
    logger.info("[index:" + index + "]");
}

আপনি
কোডটির

1

আপনি যদি Futureস্কেলে কাজ করছেন, তবে এটি করার একটি উপায় হল একটি অনুরোধএক্সেকিউটার তৈরি করা, তারপরে আপনার অনুরোধ জমা দেওয়ার জন্য সূচি স্ট্যাটস রেকুয়েস্টবিল্ডার এবং প্রশাসনিক ক্লায়েন্ট ব্যবহার করুন ।

import org.elasticsearch.action.{ ActionRequestBuilder, ActionListener, ActionResponse }
import scala.concurrent.{ Future, Promise, blocking }

/** Convenice wrapper for creating RequestExecutors */
object RequestExecutor {
    def apply[T <: ActionResponse](): RequestExecutor[T] = {
        new RequestExecutor[T]
    }
}

/** Wrapper to convert an ActionResponse into a scala Future
 *
 *  @see http://chris-zen.github.io/software/2015/05/10/elasticsearch-with-scala-and-akka.html
 */
class RequestExecutor[T <: ActionResponse] extends ActionListener[T] {
    private val promise = Promise[T]()

    def onResponse(response: T) {
        promise.success(response)
    }

    def onFailure(e: Throwable) {
        promise.failure(e)
    }

    def execute[RB <: ActionRequestBuilder[_, T, _, _]](request: RB): Future[T] = {
        blocking {
            request.execute(this)
            promise.future
        }
    }
}

এই ব্লগ পোস্টটি থেকে এক্সিকিউটারকে তোলা হয়েছে যা আপনি যদি ES কে প্রোগ্রামিমেটিকভাবে জিজ্ঞাসা করার চেষ্টা করছেন এবং কার্লের মাধ্যমে নয় তবে অবশ্যই এটি ভাল পড়া। আপনার কাছে এটির একটি আপনি খুব সহজেই খুব সহজেই সমস্ত সূচকের তালিকা তৈরি করতে পারেন:

def totalCountsByIndexName(): Future[List[(String, Long)]] = {
    import scala.collection.JavaConverters._
    val statsRequestBuider = new IndicesStatsRequestBuilder(client.admin().indices())
    val futureStatResponse = RequestExecutor[IndicesStatsResponse].execute(statsRequestBuider)
    futureStatResponse.map { indicesStatsResponse =>
        indicesStatsResponse.getIndices().asScala.map {
            case (k, indexStats) => {
                val indexName = indexStats.getIndex()
                val totalCount = indexStats.getTotal().getDocs().getCount()
                    (indexName, totalCount)
                }
        }.toList
    }
}

clientক্লায়েন্টের একটি উদাহরণ যা কোনও নোড বা পরিবহন ক্লায়েন্ট হতে পারে, যে কোনও আপনার প্রয়োজন অনুসারে কাজ করে। আপনার একটি অন্তর্ভুক্ত থাকা দরকার needExecutionContext এই অনুরোধটির সুযোগের অন্তর্ভুক্ত থাকা । আপনি যদি এই কোডটি ছাড়াই সংকলন করার চেষ্টা করেন তবে আপনি যদি ইতিমধ্যে আমদানি না করে থাকেন তবে কীভাবে তা পাবেন সে সম্পর্কে আপনি স্কেল সংকলক থেকে একটি সতর্কতা পাবেন।

আমার নথির গণনা প্রয়োজন, তবে আপনার যদি কেবল সূচকগুলির নাম প্রয়োজন হয় তবে আপনি মানচিত্রের কীগুলি থেকে এগুলি টেনে আনতে পারেন IndexStats:

indicesStatsResponse.getIndices().keySet()

আপনি যদি প্রোগ্রামালিকভাবে এটি করার চেষ্টা করছেন এমনকি আপনি কীভাবে এটি করবেন তা সন্ধান করার সময় এই প্রশ্নটি প্রকাশিত হয়, সুতরাং আমি আশা করি যে এটি যে কাউকে স্কালা / জাভাতে এটি করতে দেখায় সহায়তা করবে। অন্যথায়, কার্ল ব্যবহারকারীরা শীর্ষ উত্তর যেমনটি বলেছেন এবং ব্যবহার করেন ঠিক তেমনই করতে পারেন

curl http://localhost:9200/_aliases

1

আপনি এই আদেশটি চেষ্টা করতে পারেন

কার্ল-এক্স জিইটি http: // লোকালহোস্ট: 9200 / _ক্যাট / সূচকগুলি? ভি


1
হ্যালো, একটি দ্রুত নোট। উপরের উত্তরগুলিতে এটি প্রায় 3 বার নির্দিষ্ট করা হয়েছে। দয়া করে পুনরাবৃত্ত উত্তরগুলি পোস্ট করবেন না যা ইতিমধ্যে দেওয়া হয়েছে আপনি যদি এটিকে সম্পাদনা করার পরিকল্পনা না করেন এবং আরও কিছু তথ্য যোগ করেন যা পূর্বের উত্তরে আগে পোস্ট করা হয়নি। আমি আশা করি আমি আপনাকে নিরুৎসাহিত করছি না তবে এটি নিশ্চিত করার জন্য যে সমস্ত প্রশ্ন এবং উত্তরগুলি সদৃশ এবং পুনরাবৃত্তি হবে না।
অপস্টার ইএস নিনজা - কামাল

1

আমি একটি মেশিনে কিবানা এবং ইএস ইনস্টল করেছি। তবে আমি সেই যন্ত্রটির ইএস নোড (কোন পথে, বা বন্দরে) ছিল তা বিশদ জানতাম না।

সুতরাং আপনি কীবানা (সংস্করণ 5.6) থেকে এটি কীভাবে করতে পারেন?

  • দেব সরঞ্জামগুলিতে যান
  • কনসোল বিভাগ দেখুন , এবং নিম্নলিখিত কোয়েরি চালান:

GET _cat/indices

আমি একটি নির্দিষ্ট ইএস সূচকের আকার সন্ধান করতে আগ্রহী ছিলাম


0

যদি আপনি আপনার সিস্টেমে কার্ল ইনস্টল করেছেন, তবে এই সাধারণ কমান্ডটি ব্যবহার করে দেখুন: কার্ল-এক্সজিইটি xx.xx.xx.xx: 9200 / _cat / সূচি? ভি

উপরে বর্ণিত কমান্ড আপনাকে এই ফর্ম্যাটটিতে ফলাফল দেয়: সমস্ত সূচক আনার ফলাফল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.