2014-02-25 82 views
0

我有一個multi_match查詢。有2個領域,我希望兩個領域的不同。 現在斜坡對於兩者都是1,但對於生物來說,我希望斜坡是1,對於位置,我希望斜坡是2.我該怎麼做?ElasticSearch匹配多個字段,不同的污點

這是我的查詢看起來像現在:

{ 
    "query":{ 
     "multi_match":{ 
     "query":"San Diego", 
     "type":"phrase", 
     "slop":1, 
     "fields":[ 
      "bio","location" 

     ] 
     } 
    }, 
    "sort":[ 
     { 
     "_score":"desc" 
     } 
    ], 
    "size":50, 
    "from":0, 
    "fields":[ 
     "id", 
     "bio", 
     "location", 

    ] 

回答

0

所有多匹配查詢確實是產生比對查詢,幷包裝他們在一個dismax query。它的方便,但如果你需要以不同的方式配置每個匹配查詢,您可以創建這種查詢自己的:

"dis_max" : { 
    "queries" : [ 
     { 
      "match" : { 
       "bio" : { 
        "query" : "San Diego", 
        "type" : "phrase", 
        "slop" : 1 
       } 
      } 
     }, 
     { 
      "match" : { 
       "location" : { 
        "query" : "San Diego", 
        "type" : "phrase", 
        "slop" : 2 
       } 
      } 
     } 
    ] 
} 
+0

我怎樣才能讓這個2個查詢之一必須匹配。他們都不一定是真的。 –

+0

情況已經如此。從dis_max的鏈接文檔中:「生成由其子查詢生成的文檔聯合的查詢...」 – femtoRgon