45.mapping建立、修改
主要知识点
1、如何建立索引
2、修改mapping
3、测试mapping
一、如何建立索引
语法
PUT /website
{
"mappings": {
"article": {
"properties": {
"author_id": {
"type": "long",
"index":"anaalyzed"
},
}
}
analyzed 分词
not_analyzed 不分词
no 不能被索引和搜索
二、修改mapping
只能创建index时手动建立mapping,或者新增field mapping,不能update field mapping(也就是不能修改已创建好的field的mapping)
1、先插入一个index
PUT /website
{
"mappings": {
"article": { #--->type
"properties": {
"author_id": { # ---->field
"type": "long"
},
"title": { # ---->field
"type": "text",
"analyzer": "english"
},
"content": { # ---->field
"type": "text"
},
"post_date": { # ---->field
"type": "date"
},
"publisher_id": { # ---->field
"type": "text",
"index": "not_analyzed"
}
}
}
}
}
2、修改已存在的field的type
PUT /website
{
"mappings": {
"article": {
"properties": {
"author_id": {
"type": "text"
}
}
}
}
}
执行结果是:
{
"error": {
"root_cause": [
{
"type": "index_already_exists_exception",
"reason": "index [website/co1dgJ-uTYGBEEOOL8GsQQ] already exists",
"index_uuid": "co1dgJ-uTYGBEEOOL8GsQQ",
"index": "website"
}
],
"type": "index_already_exists_exception",
"reason": "index [website/co1dgJ-uTYGBEEOOL8GsQQ] already exists",
"index_uuid": "co1dgJ-uTYGBEEOOL8GsQQ",
"index": "website"
},
"status": 400
}
3、插入新的field,并指定mapping
PUT /website/_mapping/article
{
"properties" : {
"new_field" : {
"type" : "string",
"index": "not_analyzed"
}
}
}
三、测试mapping
1、测试可分词
GET /website/_analyze
{
"field": "content",
"text": "my-dogs"
}
2、测试不可分词
GET website/_analyze
{
"field": "new_field",
"text": "my dogs"
}
执行结果是:
{
"error": {
"root_cause": [
{
"type": "remote_transport_exception",
"reason": "[4onsTYV][127.0.0.1:9300][indices:admin/analyze[s]]"
}
],
"type": "illegal_argument_exception",
"reason": "Can't process field [new_field], Analysis requests are only supported on tokenized fields"
},
"status": 400
}