使用存储的字段检索elasticsearch中字段的子集

hyrbngr7  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(393)

在elasticsearch中使用存储字段功能的文档和建议一直在变化。在最新版本(7.9)中,不建议存储\u字段-https://www.elastic.co/guide/en/elasticsearch/reference/7.9/search-fields.html 有什么原因吗?
在7.4.0版中,没有负面评论-https://www.elastic.co/guide/en/elasticsearch/reference/7.4/mapping-store.html
使用此功能的指导是什么?使用源代码过滤是更好的选择吗?我这么问是因为在其他文档中,源代码过滤应该会破坏性能-https://www.elastic.co/blog/found-optimizing-elasticsearch-searches
如果您使用\u源或\u字段,您将很快扼杀性能。它们访问存储字段数据结构,该结构用于访问结果命中,而不是处理数百万个文档。
用ElasticSearch过滤字段而不降低性能的最佳方法是什么?

q3aa0525

q3aa05251#

源代码过滤是获取字段的推荐方法,您会因为博客而感到困惑,但是您似乎错过了非常重要的概念和适用的用例。请仔细阅读以下声明。
_源代码旨在访问结果命中时使用,而不是在处理数百万个文档时使用。
默认情况下,elasticsearch只返回10个点击/搜索结果,这些结果可以根据size参数进行更改,如果在搜索结果中,您只想获取比使用 source_filter 在最终结果集(不是所有匹配搜索结果的文档)上执行时非常有意义,
如果使用脚本并使用source value尝试读取字段值并过滤搜索结果,这将导致查询扫描作为上述语句第二部分的所有索引(而不是在处理数百万个文档时)
除此之外,由于所有字段值都已存储为默认启用的源字段的一部分,因此如果显式地将少数字段标记为已存储(默认情况下禁用以保存索引大小)以检索字段值,则不需要分配额外的空间。

相关问题