2015-06-06 197 views
1

關於Elasticsearch如何查詢忽略空格的字符串屬性?Elasticsearch查詢忽略空格

該場景將電話號碼編入索引爲字符串,具有不同的格式。查詢沒有空格的手機,可以查看所有擁有該手機的字符串(有無空格)。例如:

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match_all": {} 
     } 
     ], 
     "must_not": [], 
     "should": [] 
    } 
    }, 
    "filter": { 
    "nested": { 
     "path": "Contacts", 
     "query": { 
     "query_string": { 
      "default_field": "Contacts.ContactValue", 
      "query": "261981255" 
     } 
     } 
    } 
    } 
} 

該查詢將返回如聯繫人: 「261981255」, 「261 981 255」, 「26 19 81 25 5」 等

+1

不是特定的問題(dadoonet覆蓋),但不要使用過濾器的方式。 [生活在查詢之外的過濾器是後過濾器](https://www.elastic.co/guide/en/elasticsearch/reference/1.5/search-request-post-filter.html)。你想像鏈接顯示一樣使用它(在查詢內部)以避免額外的工作。此外,'match_all'可以只是'「query」:{「match_all」:{}}'。 – pickypg

+0

@ jovin4:你是否設法得到解決方案? – Anna

回答

1

你需要使用哪個打破了具體分析你的查詢變成克。

您可以通過爲您的字段設置un search_analyzer映射。

+0

我可以通過應用默認條款分析器來獲得該信息嗎?分析器將按照克(克?)分割屬性值,但是它們會匹配以返回匹配的記錄,同時加入所有項?這是一種OOTB行爲嗎?謝謝! – jovin4

0

嘗試使用分析器中的字符過濾器重新索引數據,以識別這些模式並調整爲所需的方式。

通過這種方式,如果您在整個數據中只有一個模式,所有將來的查詢都將很容易執行。