2016-11-10 16 views
0

私は、複数のクエリを弾性検索にパイプライン化する方法を探しています。私の主な問題は、結果を受け取ったときに、結果を生成したクエリがどれであるかを知りたいということです。擬似コードでは、私は重要な機能は、私はESサーバー上で複数の要求を送信するのオーバーヘッドを回避送信したいということですが、それでもかのような結果を処理することができるよう弾性検索パイプライン検索クエリ

query1="James Bond" 
query2="Sean Connery" 
query3="Charlie Chaplin" 

pipeline=new ElasticSearchPipeline() 
pipeline.add(query1);pipeline.add(query2);pipeline.add(query3) 

pipeline.execute() 
jamesBondResults=pipeline.getResultsForQuery(query1) 
seanConneryResults=pipeline.getResultsForQuery(query2) 
charleChaplinResults=pipeline.getResultsForQuery(query3)  

を、次のような何かをしたいと思います私は質問を一つずつ送ってきました。

答えて

1

multi search APIはあなたが探しているものです。

あなたは多くのクエリを送信することができ、応答が同じ順序で各クエリに対する応答を持つ配列が含まれています:

curl -XPOST localhost:9200/_msearch -d ' 
{"index" : "test1"} 
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10} 
{"index" : "test2",} 
{"query" : {"match_all" : {}}} 
' 

上記マルチ検索クエリの応答配列を持つ2個のES応答が含まれています1番目と2番目のクエリのドキュメント