【问题标题】:Elasticsearch document structure for performance optimization用于性能优化的 Elasticsearch 文档结构
【发布时间】: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


【解决方案1】:

我会采用 5000 万份文档的方法。 ElasticSearch 可以通过适当的硬件轻松处理该大小(自我体验),并且查询和数据操作会更容易。

【讨论】:

  • 你能解释一下为什么查询会更容易吗?
  • 我认为他的意思很简单,我们将不得不为一个字段而不是 50 个字段编写查询/映射。
  • @demas 是的。开发人员更容易只查询/映射 1 个字段。另外,如果您使用查询而不是搜索,我建议您使用 MongoDB。阅读everypageispageone.com/2011/07/13/search-vs-query了解更多信息。
猜你喜欢
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2014-12-17
  • 1970-01-01
相关资源
最近更新 更多