对大小写不敏感的关键字运行聚合elasticsearch 5.1
我想在索引中的某些关键字上运行聚合,但我想在索引和搜索时小写所有关键字,但弹性5.1不支持标准化。另外,我不想将它们索引为文本并启用fielddata。有什么其他的选择来完成这个?对大小写不敏感的关键字运行聚合elasticsearch 5.1
您可以使用由keyword
标记器和lowercase
标记过滤器组成的分析器。
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_keyword": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
},
"mappings": {
"my_type": {
"properties": {
"my_field": {
"type": "text",
"analyzer": "standard",
"fields": {
"keyword": {
"type": "text",
"analyzer": "my_keyword"
}
}
}
}
}
}
}
我们无法对关键字应用分析器吗?也不能在文本上运行聚合。 –
好的,另一种选择是在将数据发送给ES之前将数据小写。或者在发送之前升级到5.3 – Val
只是将数据小写。我没有看到这方面的困难。你必须重新索引 –
你知道,fielddata在所有情况下并没有那么糟糕。如果你的节点允许从fielddata额外使用内存,为什么不呢? –
@AndreiStefan我认为弹性不建议使用它,这就是为什么我怀疑。 –
正确,我们不建议使用它,因为大多数时候它在分析字段上聚合是没有意义的。但这并不是来自糟糕的设计或错误,例如,这只是对内存使用的改进。但是,如果您的内存使用情况良好,并且您没有其他选择,请使用它。 –