对大小写不敏感的关键字运行聚合elasticsearch 5.1

问题描述:

我想在索引中的某些关键字上运行聚合,但我想在索引和搜索时小写所有关键字,但弹性5.1不支持标准化。另外,我不想将它们索引为文本并启用fielddata。有什么其他的选择来完成这个?对大小写不敏感的关键字运行聚合elasticsearch 5.1

+0

你知道,fielddata在所有情况下并没有那么糟糕。如果你的节点允许从fielddata额外使用内存,为什么不呢? –

+0

@AndreiStefan我认为弹性不建议使用它,这就是为什么我怀疑。 –

+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" 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

我们无法对关键字应用分析器吗?也不能在文本上运行聚合。 –

+0

好的,另一种选择是在将数据发送给ES之前将数据小写。或者在发送之前升级到5.3 – Val

+0

只是将数据小写。我没有看到这方面的困难。你必须重新索引 –