我正在尝试对括号内的名称进行 flex 搜索。我正在使用名称数据库,某些名称在“名字”字段中包含处女名称。少女的名字用方括号表示,例如“Samantha [Murray]”。我的客户希望我们的“精确搜索”功能起作用,这样,如果您搜索“Murray”,则只会获得以Murray为名的结果,而不包括姓氏;但是,如果您搜索“[Murray]”,则会得到娘家姓,但不是“firstname” = Murray,即搜索“Murray” >>“Murray Smith”,而不是“Samantha [Murray] Jones”,则搜索“[Murray]” >>反之亦然。
到目前为止,我的问题是 flex 搜索似乎完全忽略了方括号。这是我的查询...
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field" : "first_name",
"query" : "\\[Murray\\]"
}
}
]
}
}
}
}
}
但是我得到的结果与“query”:“Murray”相同,完全没有括号。我尝试了一个正则表达式,但结果却更糟,我得到的名字甚至与“Murray”(我有“Rogers”之类的名字)都不接近。
Elastic中是否可能存在此类请求?如果是这样,我需要更改什么?
最佳答案
熟悉分析仪-http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-analyzers.html
如果您使用默认值,则您的分析仪可能会删除括号。
如果您希望能够使用它进行搜索,则需要定义一个不删除括号的分析器。