【发布时间】:2017-12-26 10:38:56
【问题描述】:
在 Elasticsearch 中,查询 1,000,000 个文档中的 50 个字段还是 50,000,000 个文档中的 1 个字段更好。我会用一个例子来解释我的问题:
对于案例 1,我们的文档如下所示:
doc1: {
"f1": "abc",
"f2": "pqr",
"f3": "lmn",
...
"f50": "xyz"
}
这里应该查询从“f1”到“f50”。
对于案例 2,我们的文档将如下所示:
doc1.1: {
"f": "abc"
}
doc1.2: {
"f": "pqr"
}
doc1.3: {
"f": "lmn"
}
...
...
doc1.50: {
"f": "xyz"
}
假设我关心包含查询值的文档,而与字段无关。
【问题讨论】:
-
未知数太多(分片数,节点数,是否可缓存过滤器,...),我认为您无法获得权威答案。 IMO 这应该足够小,以至于它不会产生太大的影响,而且你想多了。只需构建它,如果它爆炸/变慢,请考虑重构。如果您只有几 GB 的数据并使用常规查询,则没有必要。
标签: multithreading elasticsearch optimization querydsl