【问题标题】:Overhead of an elasticsearch river?弹性搜索河流的开销?
【发布时间】:2014-10-30 21:14:56
【问题描述】:

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

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

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

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

编辑:

我想我的主要问题是我将基础数据存储两次还是 elasticsearch 只存储索引?

【问题讨论】:

    标签: mysql search elasticsearch diskspace overhead


    【解决方案1】:

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

    _source

    _source 字段是一个自动生成的字段,用于存储 用作索引文档的实际 JSON。它没有被索引 (可搜索),刚刚存储。执行“获取”请求时,例如 get 或搜索,默认返回_source字段。

    虽然很方便,但源字段确实会产生存储空间 索引内的开销。因此,它可以被禁用。

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

    您可以根据需要关闭此功能,但这意味着除非您随后存储各个字段,否则查询将不会返回完整文档。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2021-05-24
      • 1970-01-01
      • 2015-11-16
      • 2021-03-18
      相关资源
      最近更新 更多