【发布时间】:2016-09-20 10:19:09
【问题描述】:
我最近运行了一个 Elasticsearch 过滤请求,它是
{
"from" : 0,
"size" : 10,
"query" : {
"filtered" : {
"filter" : {
"bool" : {
"must" : {
"terms" : {
"a_id" : [ 257793, 257798, 257844 ]
}
}
}
}
}
},
"explain" : false,
"fields" : "a_id"
}
这样我就可以在257793, 257798, 257844 中找到所有带有a_id 的文档,结果是257844, 257798, 257793。到目前为止一切顺利。
然后我发现无论术语编号的顺序是什么,返回的文档总是在相同的a_id 顺序中。也就是说,即使我运行
"terms" : {
"a_id" : [257798, 257844, 257793 ]
}
结果文档的顺序也是257844, 257798, 257793。
所以我对 Elasticsearch 过滤背后的机制非常好奇。谁能帮助我并给我一个提示?
【问题讨论】:
-
我认为这可能与存储在 ES 中的“索引序列”有关,但我认为没有“成熟的理论”来证明这一点。
-
另外
a_id是一种“unique_id”,没有两个文档具有相同的a_id。所以倒排索引就像257798 -> doc_257798,257844 -> doc_257844
标签: sql database search elasticsearch lucene