ElasticSearch Tune for disk usage Translation

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 官网 Tune for disk usage(调整磁盘利用率)文档直译。
1.禁用不需要的属性
index:默认情况下,es会对大多数字段进行索引并添加doc值,以便可以直接索引和聚合它们,但是对于一个必须要使用的字段eg:你需要使用foo这个数值型字段展示直方图,那么这个字段永远不会被过滤掉,那么你可以安全地禁用映射中此字段的索引。

PUT index
{
  "mappings": {
    "_doc": {
      "properties": {
        "foo": {
          "type": "integer",
          "index": false
        }
      }
    }
  }
}
text:该属性在索引中存储了作为文档计分所需要的基本的因素,如果你索引的只是文本而不关注文本分数,那么你可以配置该索引不使用norms参数

PUT index
{
  "mappings": {
    "_doc": {
      "properties": {
        "foo": {
          "type": "text",
          "norms": false
        }
      }
    }
  }
}
text:默认情况下该属性还存储了frequencies和positions两个属性,第一个属性在积分系统中被使用到,第二个在短语查询中使用到。如果你不需要执行短语查询,那么你可以禁用positions属性

PUT index
{
  "mappings": {
    "_doc": {
      "properties": {
        "foo": {
          "type": "text",
          "index_options": "freqs"
        }
      }
    }
  }
}

另外,如果你不关心计分系统,你可以配置es在每个查询中仅仅索引文档。当然你也可以索引这个字段,但是短语查询将会报错并且计分系统会假定每次查询在每个文档中只会出现一次

PUT index
{
  "mappings": {
    "_doc": {
      "properties": {
        "foo": {
          "type": "text",
          "norms": false,
          "index_options": "freqs"
        }
      }
    }
  }
}

2.不要使用默认动态字符串映射
默认的动态字符串索引将字符串属性索引为文本和关键词,如果你只需要使用其中的一种这将会是很大的浪费,典型的id只需要被索引为关键字而body字段只需要被索引为文本属性。
可以通过在字符串上显式映射类型或者配置动态模板为文本或关键词来禁用上面的特性

PUT index
{
  "mappings": {
    "_doc": {
      "dynamic_templates": [
        {
          "strings": {
            "match_mapping_type": "string",
            "mapping": {
              "type": "keyword"
            }
          }
        }
      ]
    }
  }
}

3.关注你的分片大小
分片越大在存储数据的时候越高效,通过使用更少的分片数量来创建索引从而减少一个索引中的主分片数量来增大分片大小或者通过使用Sharking API来修改目前已经存在的索引
注意:巨大的分片大小会带来一定的缺点,例如需要很久的恢复时间

4.禁用_all
_all属性会索引一个文档中的所有字段值并且会使用巨大的空间。如果你不需要在同个时间索引所有字段,可以将_all属性禁用

5.禁用_source
_source存储文档的原始json数据,如果你不需要这些可以直接禁用了。然而,像update和reindex这种需要访问_source的APIs将不起作用

6.使用best_compression
_source和存储属性会很容易消耗掉不可忽视的磁盘空间。它们可以使用best_compression:codec 来进一步压缩空间

7.聚焦整合
es中的索引会被存储在一个或多个分片上。每一个分片就是一个Lucene索引并且有一个或多个片段组成,这些片段才是真正磁盘文件。越大的片段意味着越高效以及越能存储数据
_forcemerge API可以减少每个分片上的片段数量来增大每个片段的大小。在大多数情况下,每个分片的片段数量可以通过max_num_segments=1被设置为1

8.收缩索引
Shrink API帮助减少一个索引的分片数量。和上面的force_merge API一起使用可以显著地减少分片和片段的数量

9.在合适的情况下使用最小的数字类型
数值类型的类型选择将会在很大程度上影响磁盘使用率。具体地说,使用整值类型存储整数,在合适的情况下浮点数应该被存储在scaled_float中或更小的类型中。使用float而不是double,使用half_float而不是float将会帮助减少存储空间

10.使用索引排序来共置相同的文档
当es存储_source时,它会一次性压缩多个文档以提高整体压缩率。例如文档之间具有相同字段名称甚至字段值是很普遍的,特别是在基数较低或者遵循zipfian分布的情况下。
默认情况下,文档会被压缩在一起以便能够被添加到索引中,如果你提供索引排序那么它们会被有序压缩。有序并且结构,字段以及值都一样的文档会被压缩在一起以提高压缩率

11.文档字段保持相同的顺序
因为多个文档会被压缩到块中存储,如果字段遵循相同的顺序就更有可能在_source找到相同的长串。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6月前
|
Java Windows
windows下 安装 Elasticsearch报错warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
windows下 安装 Elasticsearch报错warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME
421 0
|
索引 运维 监控
ElasticSearch Reading and Writing documents Translation
开门见山,根据es官网的doc:下面是根据我自己的理解(先从网上学习了基本的es教程并在虚机上搭了...
1228 0
|
存储 缓存 UED
ElasticSearch Tune for search speed Translation
本译文原文取自https://www.elastic.co/guide/en/elasticsearch/reference/current/tune-for-search-speed.html#_search_rounded_dates
1378 0
|
存储 缓存 Java
ElasticSearch Tune for indexing speed Translation
关于如何提高es查询性能的文章,该文章完全是从官网上拿来翻译的,一字不差,希望通过翻译一边敲键盘一边进行更深层次地理解,另外也能为以后做个记忆储备,谈不上对社区的贡献啦,慢慢学好了
1130 0
|
24天前
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
85 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
2月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
3月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
3月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
35 0
|
3月前
|
存储 Ubuntu Oracle
在Ubuntu 14.04上安装和配置Elasticsearch的方法
在Ubuntu 14.04上安装和配置Elasticsearch的方法
41 0

热门文章

最新文章