Elasticsearch索引mapping的写入、查看与修改
来源:互联网 发布:淘宝手机膜评价 编辑:程序博客网 时间:2024/05/29 19:09
mapping的写入与查看
首先创建一个索引:
curl -XPOST "http://127.0.0.1:9200/productindex"{"acknowledged":true}
现在只创建了一个索引,并没有设置mapping,查看一下索引mapping的内容:
curl -XGET "http://127.0.0.1:9200/productindex/_mapping?pretty" { "productindex" : { "mappings" : { } }}
可以看到mapping为空,我们只创建了一个索引,并没有进行mapping配置,mapping自然为空。
下面给productindex这个索引加一个type,type name为product
,并设置mapping:
curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping?pretty" -d ' { "product": { "properties": { "title": { "type": "string", "store": "yes" }, "description": { "type": "string", "index": "not_analyzed" }, "price": { "type": "double" }, "onSale": { "type": "boolean" }, "type": { "type": "integer" }, "createDate": { "type": "date" } } } }'{ "acknowledged" : true}
上面的操作中,我们给productindex加了一个type,并写入了product的mapping信息,再次查看:
curl -XGET "http://127.0.0.1:9200/productindex/_mapping?pretty"{ "productindex" : { "mappings" : { "product" : { "properties" : { "createDate" : { "type" : "date", "format" : "strict_date_optional_time||epoch_millis" }, "description" : { "type" : "string", "index" : "not_analyzed" }, "onSale" : { "type" : "boolean" }, "price" : { "type" : "double" }, "title" : { "type" : "string", "store" : true }, "type" : { "type" : "integer" } } } } }}
修改mapping
如果想给product新增一个字段,那么需要修改mapping,尝试一下:
curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping?pretty" -d '{ "product": { "properties": { "amount":{ "type":"integer" } } } }'{ "acknowledged" : true}
新增成功。
如果要修改一个字段的类型呢,比如onSale字段的类型为boolean,现在想要修改为string类型,尝试一下:
curl -XPOST "http://127.0.0.1:9200/productindex/product/_mapping?pretty" -d '{ "product": { "properties": { "onSale":{ "type":"string" } } }}'
返回错误:
{ "error" : { "root_cause" : [ { "type" : "illegal_argument_exception", "reason" : "mapper [onSale] of different type, current_type [boolean], merged_type [string]" } ], "type" : "illegal_argument_exception", "reason" : "mapper [onSale] of different type, current_type [boolean], merged_type [string]" }, "status" : 400}
为什么不能修改一个字段的type?原因是一个字段的类型修改以后,那么该字段的所有数据都需要重新索引。Elasticsearch底层使用的是lucene库,字段类型修改以后索引和搜索要涉及分词方式等操作,不允许修改类型在我看来是符合lucene机制的。
这里有一篇关于修改mapping字段的博客,叙述的比较清楚:Elasticsearch 的坑爹事——记录一次mapping field修改过程,可以参考.
2 0
- Elasticsearch索引mapping的写入、查看与修改
- Elasticsearch索引mapping的写入、查看与修改
- Elasticsearch索引mapping的写入、查看与修改
- Elasticsearch索引mapping的写入、查看与修改
- ElasticSearch学习30_Elasticsearch索引mapping的写入、查看与修改
- ES02--索引mapping的写入、查看与修改
- Elasticearch索引mapping写入、查看、修改(head、kopf插件)
- elasticsearch查看type的mapping
- 查看与修改索引
- elasticsearch 修改 mapping
- elasticsearch 修改mapping
- Elasticsearch修改mapping
- ElasticSearch实战 (三)索引的Mapping映射那些事
- elasticsearch-不停服务修改mapping
- elasticsearch的mapping设置
- elasticsearch更改mapping(不停服务重建索引)
- elasticsearch更改mapping(不停服务重建索引)
- elasticsearch 字段别名(创建索引并指定索引类型的mapping)
- java - 利用cookie实现记住用户名方便之后登陆
- View动画、activity切换动画、属性动画及其原理
- java中的final
- java中的泛型
- 【VS开发】【图像处理】V4L2 pixel format
- Elasticsearch索引mapping的写入、查看与修改
- 高并发下接口的并发问题
- 防止表单重复提交
- 使用flume,伪分布式集群配置
- 栈与队列
- 《算法竞赛》第二版 237页 uva 1152 和为0的4个值
- POJ 2785 upper_bound找到上界和下界
- mit 6.824 mapreduce
- Git使用教程