2016-11-10 292 views
0

我正在尋找一種將多個查詢傳送到彈性搜索的方法。我的主要問題是,當我收到結果時,我希望能夠知道哪個是產生結果的查詢。在僞代碼,我想這樣做以下彈性搜索管道搜索查詢

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)  

的關鍵特徵是,我想送避免ES服務器上發送多個請求的開銷,但仍然能夠處理結果,如果我已經逐個發送了這些查詢。

回答

1

multi search API正是你要找的。

您可以發送許多查詢和響應將包含在反饋以相同的順序每個查詢的數組:

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

上述多搜索查詢的響應陣列將包含兩個ES響應來自第一個和第二個查詢的文檔。