2016-12-28 13 views
0

elasticsearchにjava apiを使用してインデックスからインデックスIDを取得する際に問題があります。elasticsearchのインデックスからインデックスIDを取得する方法

IndexResponseを作成するときに、「IndexResponse」オブジェクトからIndexResponse IDを取得できます。インデックスを作成するときはidを指定しないので、elasticsearchでこれを処理させます。特定のインデックスのIDのリストを取得するにはどうすればよいですか?

次に、idsを繰り返して他のリクエスト(GET、DELETEなど)を送信します。

私はJava APIを使用しており、スプリングデータは使用していません。興味のある方は1.7です。

答えて

0

インデックスからすべてのIDを取得することは、通常、ひどい考えです。これは、インデックスの大きさによってはさらにひどくなります。本当に必要な場合は、scrollクエリを使用して必要なものを達成することを検討してください。

https://www.elastic.co/guide/en/elasticsearch/guide/master/scroll.html#CO33-1

ガイドがElasticsearch 2.xのために書かれていますが、あなたはそれを使用している場合、それはElasticsearch 5.xのために働きます。

基本的にそれがどのように動作するか、このです: は資源がyの時間Elasticsearchによって割り当てられているなど、サイズxのスクロールウィンドウを作成してスコアリングのオーバーヘッドなしに最初の1000件の結果を返す、分析。最初の応答は、最初のx文書を返すだけでなく、次のx文書をフェッチするために使用できる_scroll_idを返します。

GET http://yourhost:9200/old_index/_search?scroll=1m 
{ 
    "query": { "match_all": {}}, 
    "sort" : ["_doc"], 
    "size": 1000 
} 

は、上記のクエリに対する応答は、あなたは、次のx結果をフェッチするので、同じよう_scroll_idを使用することになり、何かのような...

{ 
    "_scroll_id": "abcdefghijklmnopqrstuvwxyz", 
    "took": 15, 
    "timed_out": false, 
    "terminated_early": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 1027, 
    "max_score": null, 
    "hits": [ 
     { 
     ... 

であると言います。

GET http://yourhost:9200/_search/scroll 
{ 
    "scroll": "1m", 
    "scroll_id" : "abcdefghijklmnopqrstuvwxyz" 
} 

これは、上記と同様の応答を返します。必ず各要求応答から_scroll_idを取り出して、次の要求応答に使用してください。これらのすべての応答を使用して、ヒットを繰り返し、IDを抽出することができます。

関連する問題