elasticsearch - 不区分大小写的查询

标签 elasticsearch case-insensitive

我正在使用ElasticSearch,并且我有这个 Realm :

"name": {
      "type": "string",
      "index": "not_analyzed"
},

我运行此查询以获取所有名称为“Charles”的员工:
GET company_employee/employee/_search
{
   "query": {
      "bool": {
         "must": [
            {
                "match_phrase": {
                   "name": "Charles"
                }
            }
         ]
      }
   }
}

问题是我需要进行不敏感的搜索。我需要检索所有“查尔斯”,即使我向查询提供的值是ChaRleS或Charles,还是CHarles等。我需要做什么?

最佳答案

如果不能选择重新编制索引,则可以更改查询

尽管regexp方法不允许搜索不区分大小写的代码,但是您可以“手动”执行。

如果该字符始终是第一个字母,则可以使用以下命令:

GET company_employee/employee/_search
{
   "query": {
         "regexp": { "name": "[Cc]harles" }
    }
}

否则,对于“true”不区分大小写:
GET company_employee/employee/_search
{
   "query": {
         "regexp": { "name": "[Cc][Hh][Aa][Rr][Ll][Ee][Ss]" }
    }
}

这绝不是有效的,但是可以满足您不更改索引的约束条件。

关于elasticsearch - 不区分大小写的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43328837/

相关文章:

c# - 对区分大小写的字典 C# 进行不区分大小写的搜索

python - python中不区分大小写的字符串类

url - 区分大小写的 URL - 这可以避免吗?

java - 通过curl 的Elasticsearch REST api 无法从java.runtime.exec 运行

java - 如何在java中翻译嵌套的 Elasticsearch 查询?

windows - Windows 是如何做到不区分大小写的文件名和路径的?

elasticsearch - 将类型名称传递给ElasticClient对象Nest

elasticsearch - 显示和更改参数 threadpool.bulk.queue_size

Python 不区分大小写替换所有多个字符串