我正在寻找一种方法将多个查询传递到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服务器上发送多个请求的开销,但仍然可以将结果看作是我逐个发送查询。
答案 0 :(得分:1)
multi search API正是您正在寻找的。 p>
您可以发送许多查询,响应将包含一个数组,其中包含对每个查询的响应,顺序相同:
curl -XPOST localhost:9200/_msearch -d '
{"index" : "test1"}
{"query" : {"match_all" : {}}, "from" : 0, "size" : 10}
{"index" : "test2",}
{"query" : {"match_all" : {}}}
'
上述多搜索查询的响应数组将包含两个ES响应,其中包含来自第一个和第二个查询的文档。