RPM*_*984 8 elasticsearch elasticsearch-query
我有一个这样的关键字字段:
"address": {
"type": "keyword"
}
Run Code Online (Sandbox Code Playgroud)
该值以驼峰式大小写形式编写,因为它是用于显示的。例如“1/10 某处路,某处 AAA 3333”
现在,我想对该字段进行不区分大小写的搜索,最好不要重新索引整个索引。
到目前为止我发现它match可以用于不区分大小写的搜索,但仅适用于text字段。
我唯一的选择是重新索引,例如通过text字段或使用小写/自定义标准化器/分析器?有什么办法可以在不重新索引的情况下做到这一点?
Ami*_*wal 11
您是对的,match查询可用于不区分大小写的搜索,因为它应用了在索引时使用的相同分析器,但仅适用于text字段。
这里的问题是,在索引时,由于您使用了keyword字段,因此用于匹配搜索查询的标记的elasticsearch倒排索引中的标记不是lowercased,因此根本不可能提供不区分大小写的搜索。
让我们用一个例子来理解上面的说法:
假设您Foo BAR的文档中有使用keyword字段对其进行索引的文档。请注意每个字符的大小写,因此倒排索引将具有以下标记。
Foo BAR,现在在查询时通过某种手段,您可以将搜索词转换为全部大写或小写,但在这种情况下它仍然与标记不匹配,因此您在搜索结果中仍然会遇到很多问题。
我建议,添加一个使用reindex API 的text新字段,并使用reindex API创建一个新索引并以干净的方式实现它,也使用 reindex API,您可以从旧索引构建新索引,并且构建新索引要快得多,而不是从事实来源构建(大多数情况下是 SQL)。
| 归档时间: |
|
| 查看次数: |
13162 次 |
| 最近记录: |