我在Elasticsearch索引中有一个'grade'字段,其中包含文本和数字。我已将字段映射设置为'not_analyized'但我无法搜索等级===='第1年'。
我已阅读了文档的finding exact values部分,但它似乎对我不起作用。
创建索引。
curl -XPUT http://localhost:9200/my_test_index
创建映射模板。
curl -XPUT http://localhost:9200/_template/my_test_index_mapping -d '
{
"template" : "my_test_index",
"mappings" : {
"my_type": {
"properties": {
"grade": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
'
创建一些文档。
curl -XPUT 'http://localhost:9200/my_test_index/my_type/1' -d '{
"title" : "some title",
"grade" : "Year 1"
}'
curl -XPUT 'http://localhost:9200/my_test_index/my_type/3' -d '{
"title" : "some title",
"grade" : "preschool"
}'
查询“Year 1”会返回0结果。
curl -XPOST http://localhost:9200/my_test_index/_search -d '{
"query": {
"filtered" : {
"filter" : {
"term": {
"grade": "Year 1"
}
}
}
}
}'
查询'学前班'会返回1个结果。
curl -XPOST http://localhost:9200/my_test_index/_search -d '{
"query": {
"filtered" : {
"filter" : {
"term": {
"grade": "preschool"
}
}
}
}
}'
检查映射和“成绩”字段不会显示“not_analyzed”。
curl -XGET http://localhost:9200/my_test_index/_mapping
{
"my_test_index" : {
"mappings" : {
"my_type" : {
"properties" : {
"grade" : {
"type" : "string"
},
"title" : {
"type" : "string"
}
}
}
}
}
}
答案 0 :(得分:1)
模板只会影响新创建的索引。
在创建模板后重新创建索引。
或者,在创建索引时指定映射,而不是将模板依赖于单个索引。
答案 1 :(得分:0)
如果您不想分析字段,可以指定" index" :" not_analyzed"在映射中。然后,您可以根据需要搜索完全匹配。
请参阅:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html#string
在您的情况下,请尝试重新创建映射。