使用 ES 1.2.1
我的聚合
{
"size": 0,
"aggs": {
"cities": {
"terms": {
"field": "city","size": 300000
}
}
}
问题是一些城市名称中有空格并单独聚合。
例如洛杉矶
{
"key": "Los",
"doc_count": 2230
},
{
"key": "Angeles",
"doc_count": 2230
},
我想这与分析器有关?我会使用哪一个来不按空格拆分?
最佳答案
对于要对其执行聚合的字段,我建议使用关键字分析器或根本不分析该字段。来自关键字分析器文档:
An analyzer of type keyword that "tokenizes" an entire stream as a single token. This is useful for data like zip codes, ids and so on. Note, when using mapping definitions, it might make more sense to simply mark the field as not_analyzed.
但是,如果您仍想对该字段执行分析以包括其他搜索,请考虑使用 ES 1.x 的字段设置 如 field/multi_field documentation 中所述.这将使您拥有用于搜索的字段值和用于聚合的字段值。
关于Elasticsearch 计数项忽略空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189381/