gpt4 book ai didi

mysql - Elasticsearch 河的开销?

转载 作者:行者123 更新时间:2023-11-29 12:44:07 26 4
gpt4 key购买 nike

我是elasticsearch的新手,但真的不知道如何考虑设置河流(在我的例子中是mysql河流)所涉及的磁盘空间和内存使用情况。

河流涉及的开销是多少?特别是关于磁盘空间和内存使用情况? This has been asked但没有得到答复。

换句话说,假设我有一个包含 3 列的表:primary_key(整数)、url(varchar)和 document_text(文本)。另外,假设我目前正在 mysql 中 100% 进行全文搜索(我知道这很愚蠢,但只是为了论证)。 3 列中的每一列都有一个索引,其中“document_text”索引是全文索引。这是一个非常大的表,我想尽量减少重复数据。

我应该如何思考 mysql River 发生了什么?对于河流,我是否可以简单地从“document_text”列中删除全文索引并将其移至elasticsearch(以及来自mysql的primary_key)? Elasticsearch 不需要索引“url”,因为我们不搜索它,对吗? document_text 的数据存储在 mysql 中,但索引存储在 elasticsearch 中,因此使用的磁盘空间实际上为零增加?

编辑:

我想我的主要问题是我会存储底层数据两次还是elasticsearch只存储索引?

最佳答案

Elasticsearch 默认情况下会创建一个名为“_source”的字段,其中包含提交用于索引的所有 json 格式的源数据。这是当您查询 Elasticsearch 时将从中检索文档数据的位置:

_source

The _source field is an automatically generated field that stores the actual JSON that was used as the indexed document. It is not indexed (searchable), just stored. When executing "fetch" requests, like get or search, the _source field is returned by default.

Though very handy to have around, the source field does incur storage overhead within the index. For this reason, it can be disabled.

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html

如果您愿意,您可以关闭此功能,但这意味着除非您存储各个字段,否则查询将不会返回完整的文档。

我需要更多地了解您的具体用例,以确定您是否应该删除 mysql 中的全文索引,但一般来说,使用 Elasticsearch mysql River 的主要原因是为了方便文本搜索,那么为什么两者都做吗?

另外两个想法给你。首先,除了测试和开发之外,我会避免在与 MySQL 相同的服务器上运行 ES - 它们会相互竞争 cpu、磁盘空间,尤其是内存,并且将两者都放在同一服务器上会使调整它们变得更加困难。其次,如果您要对大量文档建立索引,无论您做什么,都将占用大量空间。您可以通过使用 _source 字段来限制这一点,但最终 ES 索引需要索引每个标记及其位置 - 它不像存储完整文档那么多,但它确实占用了相当大的空间。多少取决于您的文档 - 您需要使用特定设置(字段类型、分析链和合理的数据样本)运行测试索引,以确定粗略的磁盘使用情况。

关于mysql - Elasticsearch 河的开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25693978/

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