我被迫通过电子邮件搜索问题。电子邮件具有关键字类型。一些用户添加的电子邮件中包含大写字母,因此我无法通过 term 构造来搜索所有电子邮件。我在本地尝试将关键字更改为文本,但是出现了新问题。 示例:通过email@gmail.com进行搜索-Elastic将此电子邮件拆分为多个部分,并返回错误结果:email @ site.com,new @ gmail.com等。 通过弹性进行这种搜索的最佳方法是什么? (最好避免完全重新索引)
ElasticSearch 6.6.1
"mappings": {
"_doc": {
"properties": {
"email": {
"type": "text"
}
答案 0 :(得分:1)
您将不得不为索引重新索引(或使用不区分大小写的分析器添加辅助字段并对该字段进行查询,删除第一个字段并重命名字段名,但这可能会有些复杂)。确实,就好像您可以通过关闭和重新打开索引来添加分析器一样,elastic必须重新索引较旧的数据。
对于分析仪,您可以使用小写字母。
"analyzer":{
"analyzer_lowcase":{
"tokenizer":"keyword",
"filter":"lowercase"
}