我以前用映射“关键字”存储了一些字段。但是,它们是区分大小写的。
为了解决这个问题,可以使用分析仪,例如
{ "index": { "analysis": { "analyzer": { "keyword_lowercase": { "tokenizer": "keyword", "filter": [ "lowercase" ] } } } } }
与映射
{ "properties": { "field": { "type": "string", "analyzer": "keyword_lowercase" } } }
但是,按期进行汇总不起作用。
原因:java.lang.IllegalArgumentException:默认情况下,在文本字段上禁用Fielddata。在[a]上设置fielddata = true,以通过反转取反的索引将字段数据加载到内存中。请注意,这可能会占用大量内存。
它适用于映射type = keyword,但type = keyword似乎不允许分析器。
如何将其索引为小写关键字,但仍可以在不设置fielddata = true的情况下使用聚合?
如果您使用的是ES 5.2或更高版本,则现在可以将normalizers用于keyword字段。只需像这样声明您的索引设置和映射,就可以了
normalizer
keyword
PUT index { "settings": { "analysis": { "normalizer": { "keyword_lowercase": { "type": "custom", "filter": ["lowercase"] } } } }, "mappings": { "type": { "properties": { "field": { "type": "keyword", "normalizer": "keyword_lowercase" } } } } }