我试图对括号内的名称进行弹性搜索。我正在使用名称数据库,其中一些名称包括名字字段中的首页名称。少女姓名用括号表示,例如" Samantha [Murray]"。我的客户想要我们的确切搜索'工作的功能,以便,如果你搜索"默里"你只能得到Murray名字的结果,不包括婚前姓名;但是如果你搜索" [Murray]",你会得到婚前的名字但不是名字= Murray,即搜索" Murray" >> "默里史密斯"但不是" Samantha [Murray] Jones",搜索" [Murray]" >>反之亦然。
到目前为止,我的问题是弹性搜索似乎完全忽略括号。这是我的询问......
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field" : "first_name",
"query" : "\\[Murray\\]"
}
}
]
}
}
}
}
}
但是我得到的结果与我所做的相同"查询" :"默里"根本没有括号。我尝试了一个正则表达式,但结果更糟糕,我得到的名字甚至不接近"默里" (我得到了像#34; Rogers")。
这种类型的请求在Elastic中是否可行?如果是这样,我需要改变什么?
答案 0 :(得分:2)
熟悉分析仪 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-analyzers.html
如果您使用的是默认值,您的分析仪可能会剥离括号。 如果您希望能够通过它进行搜索,则需要定义一个不会删除括号的分析器。