博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch索引mapping的写入、查看与修改(转)
阅读量:6695 次
发布时间:2019-06-25

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

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字段的博客,叙述的比较清楚:,可以参考.

 

转载于:https://www.cnblogs.com/sandea/p/10557125.html

你可能感兴趣的文章
如何以并发方式在同一个流上执行多种操作?--复制流
查看>>
Spring Boot 参考指南(开发Web应用程序)
查看>>
策略模式总结
查看>>
javascript块级作用域处理闭包和释放内存的垃圾回收
查看>>
快速入门React
查看>>
正则表达式语法入门
查看>>
关于顶级、一级、二级域名如何理解?
查看>>
图解CRM(客户关系管理)全流程
查看>>
微信小程序开发BUG经验总结
查看>>
Python学习--最完整的基础知识大全
查看>>
自定义组件间通信
查看>>
记录一个未解决的错误
查看>>
Laravel 5.6 正式发布(文档翻译工作将在春节后启动)
查看>>
兼容浏览器原生DOM的各种特性总结
查看>>
第一个GUI程序
查看>>
解析hierarchical.py from sklearn
查看>>
推荐引擎
查看>>
Mac版:上传图片到远程图床哪家强?
查看>>
Android学习系列-----2 Activity的生命周期与启动模式
查看>>
前端真的能做到彻底权限控制吗?
查看>>