博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch中Mapping
阅读量:5331 次
发布时间:2019-06-15

本文共 2239 字,大约阅读时间需要 7 分钟。

映射(Mapping)

概念:创建索引时,可以预先定义字段的类型以及相关属性。从而使得索引建立得更加细致和完善。如果不预先设置映射,会自动识别输入的字段类型。

官方文档(字段数据类型):https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html

官方文档(映射参数):https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-params.html

 

映射分为静态映射动态映射

动态映射:文档中碰到一个以前没见过的字段时,动态映射可以自动决定改字段的类型,并对改字段添加映射。通过dynamic属性进行控制,默认值为true,动态添加;false忽略新字段;strict碰到陌生字段抛出异常。

 

建立静态映射:

curl -XPOST 'http://localhost:9200/library' -d '{  "settings": {    "number_of_shards": 5,    "number_of_replicas": 1  },  "mappings": {    "books": {      "properties": {        "title": {          "type": "string"        },        "name": {          "type": "string",          "index": "not_analyzed"        },        "publish_date": {          "type": "date",          "index": "not_analyzed"        },        "price": {          "type": "double"        },        "number": {          "type": "integer"        }      }    }  }}'

动态映射:

必须为object类型才能添加dynamic动态映射

{    "mappings": {        "books": {            "dynamic": "strict",            "properties": {                "title": {                    "type": "string"                },                "name": {                    "type": "string",                    "index": "not_analyzed"                },                "publish_date": {                    "type": "date",                    "index": "not_analyzed"                },                "price": {                    "type": "double"                },                "number": {                    "type": "object",                    "dynamic": true                }            }        }    }}

获取某个索引下的映射信息

curl -XGET localhost:9200/library/_mapping

 

更新修改映射

mapping一旦建立,就不能修改现有的字段映射。如果要推倒现有的映射,必须得重新建立一个索引,然后重新定义映射,将之前索引里的数据导入到新建立得索引中。

  1. 给现有的索引定义一个别名,并且把现有的索引指向这个别名
  2. 运行 curl -XPUT localhost:9200/现有索引/_alias/别名A
  3. 新创建一个索引,定义好最新的映射
  4. 将别名指向新的索引,并且删除之前索引的执行
  5. 运行
curl -XPOST 'localhost:9200/_aliases' -d '{    "actions": [        {            "remove": {                "index": "现有索引名",                "alias": "别名A"            }        },        {            "add": {                "index": "新建索引名",                "alias": "别名A"            }        }    ]}'

以上无需停机即可完成。

 

转载于:https://www.cnblogs.com/zqwby-0708/p/7872973.html

你可能感兴趣的文章
使用pycharm编写自动化脚本
查看>>
browser-sync启动命令
查看>>
HttpWebRequest请求返回非200的时候 HttpWebResponse怎么接受返回错误提示
查看>>
VBScript 内置函数
查看>>
java打jar包的几种方式详解
查看>>
关于sublime3中package controle不出来的问题
查看>>
groovy
查看>>
对象扩展
查看>>
js学习总结----事件基础
查看>>
7_20 day25 总结
查看>>
Fliter(过滤器)的认识
查看>>
sd 卡驱动--基于高通平台
查看>>
java开发中的那些事(6)------一次ajax调用中的问题
查看>>
34 数组中的逆序对+改进低效归并排序
查看>>
python异常
查看>>
隐藏状态栏
查看>>
别人的负能量
查看>>
fedora 20下安装vim的C++补全插件clang_complete
查看>>
Git使用摘要
查看>>
基础总结篇之中的一个:Activity生命周期
查看>>