2014-10-06 66 views
1

我正在嘗試對括號內的名稱進行彈性搜索。我正在處理名稱數據庫,並且其中一些名稱包含姓名字段中的婚前姓名。少女的名字用方括號表示,比如「Samantha [Murray]」。我的客戶希望我們的'精確搜索'功能可以正常工作,因此如果您搜索「Murray」,您只能以Murray的名字獲得結果,不包括婚前姓名;但是如果你搜索「[Murray]」,你會得到未婚名,但不是名字= Murray,即搜索「Murray」>>「Murray Smith」而不是「Samantha [Murray] Jones」,搜索「[Murray]」 >>反之亦然。Elasticsearch:專門搜索括號內的單詞

到目前爲止我的問題是,彈性搜索似乎完全忽略括號。這是我的查詢...

{ 
    "query": { 
     "filtered": { 
      "query": { 
       "bool": { 
        "must": [ 
         { 
          "query_string": { 
           "default_field" : "first_name", 
           "query" : "\\[Murray\\]" 
          } 
         } 
        ] 
       } 
      } 
     } 
    } 
} 

但我得到了同樣的結果,我爲「查詢」:「默裏」根本沒有括號。我嘗試了一個正則表達式,但結果更糟糕,我得到的名字甚至都沒有接近「Murray」(我得到了諸如「Rogers」之類的東西)。

這種類型的請求可能在彈性?如果是這樣,我需要改變什麼?

+0

我會認爲「\\ [」是逃避反斜槓和孤立的支架。怎麼樣 」\[」 ? – 2014-10-07 05:11:26

+2

由於[是彈性搜索中的特殊字符,會導致錯誤 – 2014-10-07 16:07:27

回答