Elasticsearch:专门搜索括号内的单词

时间:2014-10-06 15:57:45

标签: search elasticsearch escaping character

我试图对括号内的名称进行弹性搜索。我正在使用名称数据库,其中一些名称包括名字字段中的首页名称。少女姓名用括号表示,例如" 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中是否可行?如果是这样,我需要改变什么?

1 个答案:

答案 0 :(得分:2)

熟悉分析仪 - http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-analyzers.html

如果您使用的是默认值,您的分析仪可能会剥离括号。 如果您希望能够通过它进行搜索,则需要定义一个不会删除括号的分析器。