目前,我用来获取具有精确查询但不同位置偏移大小为1的多个文档的方式是使用Elastic Search Multi Search API。我想知道是否有更好的方法可以达到更好的性能。
我正在使用的当前查询示例:
{"index" : "test"}
{"query" : {"term" : { "user" : "Kimchy" }}, "from" : a, "size" : 1}
{}
{"query" : {"term" : { "user" : "Kimchy" }}, "from" : b, "size" : 1}
{}
{"query" : {"term" : { "user" : "Kimchy" }}, "from" : c, "size" : 1}
{}
{"query" : {"term" : { "user" : "Kimchy" }}, "from" : d, "size" : 1}
{}
{"query" : {"term" : { "user" : "Kimchy" }}, "from" : e, "size" : 1}
....
其中a,b,c,d,e是查询时给出的参数。
答案 0 :(得分:0)
如果我理解正确a,b,c,d,e都将是数字吗?所以你基本上想要能够提出弹性搜索说出第3,第4和第7个文件出现在具体查询?
我不确定这是否是最好的做事方式,但是找到最小和最大的数字肯定会更快,然后做“从:最小”和“大小:最小 - 最小” 。然后获取ES返回的结果并自行完成以获取特定文档。
每次执行from / size查询弹性搜索都必须在该数字之前找到所有查询,因此您目前基本上都在重复重复相同的搜索。
如果您的最小数字和最大数字之间存在很大差异,这种方法确实很粗略,您可能最终会尝试发回数千个文档。