gpt4 book ai didi

elasticsearch - ElasticSearch可以仅用于聚合吗?

转载 作者:行者123 更新时间:2023-12-02 22:19:38 25 4
gpt4 key购买 nike

在当前用例中,我将ElasticSearch用作文档存储,并在其上构建多面搜索功能。
docs声明以下内容:

Sorting, aggregations, and access to field values in scripts requires a different data access pattern.

Doc values are the on-disk data structure, built at document index time, which makes this data access pattern possible. They store the same values as the _source but in a column-oriented fashion that is way more efficient for sorting and aggregations.


这是否意味着 聚合不依赖于索引?如果是这样,是否建议通过设置 {“index”:“no”} 来阻止对整个字段进行索引?
这是一个很小的偏差,但是设置 enabled 进入哪里?它与 索引有何不同?
从更广泛的意义上讲,如果我只想要聚合,我应该使用ElasticSearch吗?我应该选择像MongoDB这样的其他解决方案吗?如果是这样,性能考虑因素是什么?
救命!

最佳答案

绝对有可能仅将Elasticsearch用于汇总数据。我已经看过几次这样的设置。例如,在过去的一个项目中,我们将对数据建立索引,但仅运行聚合以生成财务报告,而我们很少需要获取文档/匹配数据。 99%的用例只是在汇总数据。

如果您有这样的用例,则可以将映射调整为
enabled的作用是决定是否对您的数据建立索引。默认情况下为true,但是如果将其设置为false,您的数据将只存储(在_source中),但被分析器完全忽略,即,不会对其进行分析,标记和索引,因此不会可搜索,您将能够检索_source,但无法搜索它。如果需要使用聚合,则enabled必须为true(默认值)
store参数决定是否要存储该字段。默认情况下,该字段值已编入索引,但未存储,因为它已经与_source本身一起存储了,您可以使用源过滤来检索它。对于聚合,此参数不起作用。

如果您的用例仅涉及聚合,则可能会尝试设置_source: false,即根本不存储_source,因为您所需要的只是索引字段值以对其进行聚合,但这并不是一个好主意for various reasons

因此,要回答您的主要问题,聚合确实取决于索引,但是用于聚合的(doc-)值是写在专用文件中的,专用文件的内部结构比从索引访问数据的性能更好,性能更好。建立集合。

如果您使用的是ES 1.x,请确保将要聚合的所有字段(分析的字符串和 bool(boolean) 字段除外)的 doc_values 设置为true。

如果您使用的是ES 2.x,默认情况下doc_values为true,因此您无需执行任何特殊操作。

更新:

值得注意的是,聚合依赖于doc_values(即Per Document Values .dvd.dvm Lucene文件),该文件基本上包含与反向索引中相同的信息,但是以面向列的方式进行组织,这使得聚合效率更高。

关于elasticsearch - ElasticSearch可以仅用于聚合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com