Elasticsearch:专门搜索括号内的单词
我试图对括号内的名字进行弹性搜索。我正在使用一个姓名数据库,其中一些姓名在“名字”字段中包含处女姓名。少女的名字用括号表示,如“萨曼莎[Murray]”。我的客户希望我们的“精确搜索”功能能够发挥作用,这样,如果你搜索“Murray”,你只会得到名为Murray的结果,不包括处女姓名;但是如果你搜索“[Murray]”,你会得到处女的名字而不是名字=Murray,即搜索“Murray”>>“Murray Smith”而不是“Samantha[Murray]Jones”,搜索“[Murray]”>>反之亦然 到目前为止,我的问题是弹性搜索似乎完全忽略了括号。这是我的疑问Elasticsearch:专门搜索括号内的单词,search,elasticsearch,escaping,character,Search,elasticsearch,Escaping,Character,我试图对括号内的名字进行弹性搜索。我正在使用一个姓名数据库,其中一些姓名在“名字”字段中包含处女姓名。少女的名字用括号表示,如“萨曼莎[Murray]”。我的客户希望我们的“精确搜索”功能能够发挥作用,这样,如果你搜索“Murray”,你只会得到名为Murray的结果,不包括处女姓名;但是如果你搜索“[Murray]”,你会得到处女的名字而不是名字=Murray,即搜索“Murray”>>“Murray Smith”而不是“Samantha[Murray]Jones”,搜索“[Murray]”>
{
"query": {
"filtered": {
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field" : "first_name",
"query" : "\\[Murray\\]"
}
}
]
}
}
}
}
}
但我得到的结果和我对“查询”的结果一样:“Murray”没有括号。我尝试了一个regexp,但结果更糟,我得到的名字甚至不接近“Murray”(我得到了“Rogers”之类的名字)
这种类型的请求在Elastic中是否可行?如果是,我需要更改什么?熟悉分析仪- 如果您使用的是默认值,那么您的分析器可能正在剥离括号。
如果您想通过分析器进行搜索,则需要定义一个不删除括号的分析器。我认为“\[”是在逃避反斜杠,而不使用括号。那么“[”呢?这会导致错误,因为[是弹性搜索中的一个特殊字符