创建 mapping 时,可以为字符串(专指 keyword) 指定 ignore_above
,用来限定字符长度。超过 ignore_above
的字符会被存储,但不会被索引。
注意,是字符长度,一个英文字母是一个字符,一个汉字也是一个字符。
在动态生成的 mapping 中,keyword
类型会被设置ignore_above: 256
。
ignore_above
可以在创建 mapping 时指定。
PUT my_index { "mappings" : { "properties" : { "note" : { "type" : "keyword", "ignore_above": 4 } } } }
使用 _bulk
创建文档
POST _bulk { "index" : { "_index" : "my_index", "_id" : "1" } } { "note" : "一二三"} { "index" : { "_index" : "my_index", "_id" : "2" } } { "note" : "一二三四"} { "index" : { "_index" : "my_index", "_id" : "3" } } { "note" : "一二三四五"}
使用下面的指令可以查询所有数据:
GET my_index/_search
可以看到,上面创建的三个文档都存起来了。
我们用下面的查询验证 ignore_above
:
# 能查到数据 GET my_index/_search { "query": { "match": { "note": "一二三" } } } # 能查到数据 GET my_index/_search { "query": { "match": { "note": "一二三四" } } } # 不能查导数据 GET my_index/_search { "query": { "match": { "note": "一二三四五" } } }
可以通过下面的方式改:
PUT my_index/_mappings { "properties" : { "note" : { "type" : "keyword", "ignore_above": 2 } } }
改大改小都行,但只对新数据有效。
不支持。
# 删除索引 DELETE my_index # 尝试重建索引,note字段为text类型,并指定了 ignore_above,执行时会报错 PUT my_index { "mappings" : { "properties" : { "note" : { "type" : "text", "ignore_above": 2 } } } } # 报错结果如下 { "error": { "root_cause": [ { "type": "mapper_parsing_exception", "reason": "Mapping definition for [note] has unsupported parameters: [ignore_above : 2]" } ], "type": "mapper_parsing_exception", "reason": "Failed to parse mapping [_doc]: Mapping definition for [note] has unsupported parameters: [ignore_above : 2]", "caused_by": { "type": "mapper_parsing_exception", "reason": "Mapping definition for [note] has unsupported parameters: [ignore_above : 2]" } }, "status": 400 }
最新评论: