2017-08-24 30 views
1

對於單值匹配,elaticsearch發現多個精確值 - 如何逃脫結腸值

{ 
    "match" : { 
    "price" : 20 
    } 
} 

如果搜索值是:,如「地址:1史密斯街」,我可以逃避:

{ 
    "match" : { 
    "address" : "address\\:1 smith street" 
    } 
} 

上述查詢將工作。

但是當我嘗試,而不是找到多個精確值,「投其所好」我需要用「術語」

https://www.elastic.co/guide/en/elasticsearch/guide/master/_finding_multiple_exact_values.html

{ 
    "terms" : { 
    "price" : [20, 30] 
    } 
} 

那麼當與搜索值:在其中,逃生:將無法正常工作

以下查詢都沒有工作

{ 
    "terms" : { 
    "residence" : ["address:1 Smith Street", "address:2 David Road"] 
    } 
} 

{ 
    "terms" : { 
    "residence" : ["address\\:1 Smith Street", "address\\:2 David Road"] 
    } 
} 

請幫忙。

+1

您還可以對多個'match'查詢使用'bool/should'。 – Val

+0

謝謝瓦爾。 它的工作原理! – searain

回答

1

根據瓦爾,布爾/應與多個匹配查詢將工作。

{ 
    "query": { 
    "bool": { 
     "should" : [ 
      {"match" : {"residence": "address\\:1 smith road"}}, 
      {"match" : {"residence": "address\\:2 david street"}}] 

      } 
     } 
    } 
}