栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

es之settings和mappings设置

es之settings和mappings设置

Elasticsearch之settings和mappings的意义

  简单的说

  1.   settings是修改分片和副本数的。
  2.   mappings是修改字段和类型的。

可以用url方式来操作它们,建议。

1、ES中的settings

  查询索引库的settings信息

PUT /my_index
{
  "settings": {
    "index": {
      "creation_date": "1618640626017",  # 顾名思义索引的创建时间戳
      "uuid": "dINnupzNSf27KsfOO-69eg",  # 索引的 uuid 信息
      "version": {
                "created": "7040299"     #  索引的版本号
            },
      "number_of_shards": "1",           # 索引的主分片数,默认值是 51024。
      "number_of_replicas": "1",         # 索引主分片的副本数,默认值是 1,
      "provided_name": "article_news_2019-01" ,  # 
      "refresh_interval": "60s",         # 执行新索引数据的刷新操作频率
	  "analysis": {
		    # 定制化分析器
			"analyzer": {
				"my_custom_analyzer": {
					"type": "custom",
					"char_filter": [
						"emoticons"
					],
					"tokenizer": "punctuation",
					"filter": [
						"lowercase",
						"english_stop"
					]
				}
			},
			# 自定义分词器
			"tokenizer": {
				"punctuation": {
					"type": "pattern",
					# 遇到以下的字符,则分词
					"pattern": "[ .,!?]"
				}
			},
			# 字符过滤器
			"char_filter": {
				"emoticons": {
					"type": "mapping",
					# 将图形符号翻译为其他映射
					"mappings": [
						":) => _happy_",
						":( => _sad_"
					]
				}
			},
			# 分词过滤器
			"filter": {
				"english_stop": {
				    #  定义根据停止次过滤,_english_为默认的英语停止词集
					"type": "stop",
					"stopwords": "_english_"
				}
			}
		}

}
索引静态配置 

      只能在索引创建时或者在状态为 closed index(闭合的索引)上设置

  • index.analysis:文本分析是指将文本进行特定的过滤、分词和转换的过程,最外层的配置项,内部主要分为 char_filter、tokenizer、filter 和 analyzer。
    • char_filter:定义新的字符过滤器件。
    • tokenizer:定义新的分词器。
    • filter:定义新的 token filter,如同义词 filter。
    • analyzer:配置新的分析器,一般是char_filter、tokenizer 和一些 token filter 的组合。
  • index.number_of_shards:索引的主分片数,默认值是 5。这个配置在索引创建后不能修改;在 es 层面,可以通过 es.index.max_number_of_shards 属性设置索引最大的分片数,默认为 1024
  • index.codec:数据存储的压缩算法,默认值为 LZ4,可选择值还有 best_compression,它比 LZ4 可以获得更好的压缩比(即占据较小的磁盘空间,但存储性能比 LZ4 低)。
  • index.routing_partition_size:路由分区数,如果设置了该参数,其路由算法为:( hash(_routing) + hash(_id) % index.routing_parttion_size ) % number_of_shards。如果该值不设置,则路由算法为 hash(_routing) % number_of_shardings,_routing 默认值为 _id。

索引动态配置

  • index.number_of_replicas:索引主分片的副本数,默认值是 1,该值必须大于等于 0,这个配置可以随时修改。
  • index.refresh_interval:执行新索引数据的刷新操作频率,该操作使对索引的最新更改对搜索可见,默认为 1s。也可以设置为 -1 以禁用刷新。更详细信息参考 Elasticsearch 动态修改 refresh_interval 刷新间隔设置。
2、ES中的mapping

         映射指的是 mapping,用来定义一个文档以及其所包含的字段如何被存储和索引, 可以在映射中事先定义字段的数据类型、字段的权重、分词器等属性,就如同在关系型数据库中创建数据表时会设置字段的类型。Elasticsearch 中一个字段可以是核心类型之一,如字符串或者数值型,也可以是一个从核心类型派生的复杂类型,如数值。

静态映射

       静态映射是在创建索引时手工指定索引映射,和 SQL 中在建表语句中指定字段属性类似。相比动态映射,通过静态映射可以添加更详细、更精准的配置信息

动态映射

         Elasticsearch 自动识别的,不需要在创建索引的时候设置字段的类型。在实际项目中,如果遇到的业务在导入数据之前不确定有哪些字段,也不清楚字段的类型是什么,使用动态映射非常合适。当 Elasticsearch 在文档中碰到一个以前没见过的字段时,它会利用动态映射来决定该字段的类型,并自动把该字段添加到映射中,根据字段的取值自动推测字段类型的规则见下表:

                        Elasticsearch 自动推测字段类型的规则

JSON 格式的数据自动推测的字段类型
null没有字段被添加
true or falseboolean 类型
浮点类型数字float 类型
数字long 类型
JSON 对象object 类型
数组由数组中第一个非空值决定
string有可能是 date 类型(若开启日期检测)、double 或 long 类型、text 类型、keyword 类型

在 mapping 中可以通过 dynamic 设置来控制是否自动新增字段,接受以下参数:

  • true:默认值为 true,自动添加字段。
  • false:忽略新的字段。
  • strict:严格模式,发现新的字段抛出异常。

核心类型有字符串类型、数字类型、日期类型、布尔类型、二进制类型、范围类型

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号