页面树结构

2017-11-09 ApacheCN 开源组织,第二期邀请成员活动,一起走的更远 : http://www.apachecn.org/member/209.html


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

禁用不需要的功能

默认情况下,elasticsearch 索引并且新增数据到大多数的字段中,以便于它们能够被索引和聚合。比如,你有一个叫 foo 的数字 field(字段),你想要一个 histograms(直方图) 但是不需要过滤,那么就可以在 mappings(映射) 中禁用这用这个 field(字段)的索引。

PUT index
{
  "mappings": {
    "type": {
      "properties": {
        "foo": {
          "type": "integer",
          "index": false
        }
      }
    }
  }
}

text field(文本字段)在索引中规范化的存储是为了对 documents 进行评分。如果你只想要 text field(文本字段)的匹配功能,不关心生成的分数,可以在 elasticsearch中配置中成不向索引编写规范:

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

text field(文本字段) 默认情况下还存储了在索引的频率和位置,频率用于计算得分,而位置用于短语查询;如果不需要进行短语查询,你可以告诉 elasticsearch  不索引位置:

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

此外,如果你不关心得分,可以配置 elasticsearch   只索引匹配到的 documents  (文档)。这个字段仍然可以被搜索,但是短语查询的时候会报错并且得分将假设每个 documents  (文档)中只出现一次。

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

不要使用默认的动态字符串映射

默认的 dynamic string mappings (动态字符串映射)将以 text(文本)keywords(关键字)的形式对字符串字段进行索引。如果你只需要使用它们中的一种,这么做是浪费的。通常 id field(id 字段)只需要被当成 keywords(关键字)来索引,而 body field(字段)只需要被当成 text(文本) field(字段)来索引。

禁用 dynamic string mappings (动态字符串映射)方法有:明确 string fields(字符串字段) mapping(映射)或者为 text(文本)keywords(关键字)映射的字符串字段设置动态 templates(模版) 。

 例如,这是一个将字符串字段映射为 keywords(关键字) 的模版:

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

禁用 _all

_all field(字段) 将会索引所有字段中的所有值,这将会很大的空间。如果你不需要同时搜索所有字段,可以禁用 _all field(字段)

使用 best_compression

_source 和 存储的字段将会占用很大的存储空间。可以使用 best_compression  codec(编解码器) 进行有效的压缩。

使用最合适的最小数字类型

您为数字数据选择的类型可能会对磁盘使用量产生重大影响。特别地,整数应该使用整数类型(byte, short, integer or long)(字节,短整数或长整数)存储,并且浮点应该被存储在 scaling_float 中,如果合适的话也可以存储在符合用例的最小类型中:使用 float over double 浮点数的 half_float 将有助于节省存储空间。

  • 无标签