2016-12-01 35 views
0

我想混合搜索整個文檔(例如「developer」)和搜索某個字段中的另一個術語(例如「php」) 。 我可以單獨做每個搜索,但我不能混合它們。Elastic:在_all上搜索兩個術語,其中一個在字段上

這裏我舉的例子(簡化爲只顯示我的問題):

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "match": { 
      "_all": "developer" 
     }, 
     "multi_match": { 
      "query": "php", 
      "fields": [ 
      "skills.description", 
      "skills.description", 
      "skills.details" 
      ], 
      "operator": "or", 
      "type": "most_fields" 
     } 
     } 
    } 
} 

如果我運行這個例子,我有一個錯誤:

Parse Failure [Failed to parse source 

有沒有辦法在兩個_all搜索和具有兩個術語的特定字段?

謝謝。

回答

1

是,你幾乎沒有,您需要將它們合併成一個bool/must查詢:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "bool": { 
      "must": [ 
      { 
       "match": { 
       "_all": "developer" 
       } 
      }, 
      { 
       "multi_match": { 
       "query": "php", 
       "fields": [ 
        "skills.description", 
        "skills.description", 
        "skills.details" 
       ], 
       "operator": "or", 
       "type": "most_fields" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

哦,只是這個! 非常感謝您指點我。 – Bacteries

+0

真棒很高興它幫助! – Val

相關問題