我以前存储了一些带有映射"keyword"的字段.但是,它们具有案例敏感性.
为了解决这个问题,可以使用分析仪,例如
{
"index": {
"analysis": {
"analyzer": {
"keyword_lowercase": {
"tokenizer": "keyword",
"filter": [
"lowercase"
]
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
与映射
{
"properties": {
"field": {
"type": "string",
"analyzer": "keyword_lowercase"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,聚合术语不起作用.
引起:java.lang.IllegalArgumentException:默认情况下,在文本字段上禁用Fielddata.在[a]上设置fielddata = true,以便通过反转倒排索引来在内存中加载fielddata.请注意,这可能会占用大量内存.
它适用于映射type = keyword,但是type = keyword不允许使用分析器.
如何将其作为小写关键字索引,但仍然可以在不设置fielddata = true的情况下使用聚合?
Val*_*Val 13
如果您使用的是ES 5.2或更高版本,则现在可以将normalizers用于keyword字段.只需声明您的索引设置和映射,就可以了
PUT index
{
"settings": {
"analysis": {
"normalizer": {
"keyword_lowercase": {
"type": "custom",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"type": {
"properties": {
"field": {
"type": "keyword",
"normalizer": "keyword_lowercase"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3592 次 |
| 最近记录: |