elasticsearch - 如何在字段上进行敏感和不敏感的大小写搜索
问题描述
当我像这样使用小写过滤器时,我可以对 foo 字段进行不敏感的大小写搜索,但是我不能对 foo 字段进行敏感的大小写搜索。就我而言,我需要根据情况决定对 foo 字段进行不敏感或敏感的大小写搜索。
{
"settings": {
"analysis": {
"normalizer": {
"lowercase_keyword": {
"type": "custom",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"annotation_type": {
"properties": {
"foo": {
"type": "keyword"
"normalizer": "lowercase_keyword"
}
}
}
}
}
解决方案
这个想法是使用两个keyword
字段,如下所示:
"mappings": {
"annotation_type": {
"properties": {
"foo": {
"type": "keyword",
"fields": {
"insensitive": {
"type": "keyword",
"normalizer": "lowercase_keyword"
}
}
}
}
}
}
然后您可以使用foo
以区分大小写的方式foo.insensitive
进行搜索和不区分大小写进行搜索。
推荐阅读
- c# - 使用 LINQ 包含 - 如何确保不跟随特定字符
- javascript - 如何将 Vue 插件发布到 NPM?
- ruby-on-rails - Capybara 测试反向代理域
- mysql - 执行 Mariadb 更新语句时出错
- java - Flink - 多源集成测试
- oracle - ORA-01882: 在 Liquibase Gradle 插件中找不到时区
- c - C语言中i++和(i)++的区别
- python - Tensorflowjs 转换错误:“ValueError:不支持的操作”
- batch-file - 仅当源文件夹和目标文件夹中的文件名不同(主要是名称的版本部分)时复制/替换(镜像)文件
- python - jython 的 PyCryptodome 替代品