我正在使用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/