如何为弹性搜索全局设置 "index" : "not_analyzed"
how to set "index" : "not_analyzed" globally for elastic search
我面临一个问题,如何设置 "index" : "not_analyzed" 全局弹性搜索映射 json 格式文件中的字符串值,这样它就不会被标记化做报告的时候。目前我已经单独进行了检查。但是,当一个新的 属性 进来时,它会产生问题。
(使用弹性搜索版本 1.7.2)
例如:- 如果我给一个新的字符串字段说地址,当出现像 "bangalore india" 这样的值时,它将被视为 2 个单独的值,如 "Bangalore" 和 "india" 正在做报告。
这是我正在使用的示例 json 映射器文件格式。让我知道如何在全局范围内设置它......
{
"user" : {
"_index" : {
"enabled" : true
},
"_id" : {
"index": "not_analyzed",
"store" : "yes"
},
"properties" : {
"id" : {
"type" : "long"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
},
"presentValue" : {
"type" : "string",
"index" : "not_analyzed"
},
"dateOfBirth" : {
"type" : "date"
}
}
}
}
创建索引时需要使用 dynamic_template
。使用下面的动态 strings
映射,将动态创建的所有新字符串字段都将是 not_analyzed
PUT my_index
{
"mappings": {
"user": {
"_index": {
"enabled": true
},
"_id": {
"store": "yes"
},
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"match": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
],
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "string",
"index": "not_analyzed"
},
"presentValue": {
"type": "string",
"index": "not_analyzed"
},
"dateOfBirth": {
"type": "date"
}
}
}
}
}
以下将确保索引 myindex 中的所有字段都有一个额外字段作为原始字段
curl -X PUT "http://localhost:9200/myindex" -d '{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 1
}
},
"mapping": {
"_default_": {
"dynamic_templates": [
{
"multi_strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
]
}
}
}'
我面临一个问题,如何设置 "index" : "not_analyzed" 全局弹性搜索映射 json 格式文件中的字符串值,这样它就不会被标记化做报告的时候。目前我已经单独进行了检查。但是,当一个新的 属性 进来时,它会产生问题。 (使用弹性搜索版本 1.7.2)
例如:- 如果我给一个新的字符串字段说地址,当出现像 "bangalore india" 这样的值时,它将被视为 2 个单独的值,如 "Bangalore" 和 "india" 正在做报告。
这是我正在使用的示例 json 映射器文件格式。让我知道如何在全局范围内设置它......
{
"user" : {
"_index" : {
"enabled" : true
},
"_id" : {
"index": "not_analyzed",
"store" : "yes"
},
"properties" : {
"id" : {
"type" : "long"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
},
"presentValue" : {
"type" : "string",
"index" : "not_analyzed"
},
"dateOfBirth" : {
"type" : "date"
}
}
}
}
创建索引时需要使用 dynamic_template
。使用下面的动态 strings
映射,将动态创建的所有新字符串字段都将是 not_analyzed
PUT my_index
{
"mappings": {
"user": {
"_index": {
"enabled": true
},
"_id": {
"store": "yes"
},
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"match": "*",
"mapping": {
"type": "string",
"index": "not_analyzed"
}
}
}
],
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "string",
"index": "not_analyzed"
},
"presentValue": {
"type": "string",
"index": "not_analyzed"
},
"dateOfBirth": {
"type": "date"
}
}
}
}
}
以下将确保索引 myindex 中的所有字段都有一个额外字段作为原始字段
curl -X PUT "http://localhost:9200/myindex" -d '{
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 1
}
},
"mapping": {
"_default_": {
"dynamic_templates": [
{
"multi_strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
]
}
}
}'