弹性搜索管道搜索查询

时间:2016-11-10 14:01:08

标签: elasticsearch

我正在寻找一种方法将多个查询传递到Elastic搜索中。我的主要问题是,当我收到结果时,我希望能够知道哪个是生成结果的查询。在伪代码中,我想做类似的事情

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 个答案:

答案 0 :(得分: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响应,其中包含来自第一个和第二个查询的文档。