2017-03-06 27 views
0

也許這是一個基本問題;順便說一下,我需要在每個索引字段中搜索併爲另一個字段指定一個固定值。 我該怎麼辦?使用固定參數在每個字段中搜索

目前,我有一個簡單的:query("aValue", array_of_models)

我嘗試沒有成功許多選項,例如:

query({ 
    "query": { 
    "bool": { 
     "query": "aValue", 
     "filter": { 
     "term": { 
      "published": "true" 
     } 
     } 
    } 
    } 
}) 

我寧願避免指定字段,因爲我用的是相同的搜索來搜索不同型號的參數。

+1

2X布爾必須查詢應滿足您的要求。一個用於固定期限,一個用於任何領域的比賽。我知道避免必須指定字段(除非使用通配符)的唯一方法是使用'_all'。儘管不鼓勵使用'_all',所以最好指定字段。 – ryanlutgen

+0

@ryanlutgen我似乎很奇怪,通用形式(查詢(「價值」))搜索無處不在,但如果我指定一些選項與DSL我不能做同樣的... – Mat

+0

目前我使用'_all' - 我剛剛寫了一個回覆我當前的工作有效載荷 – Mat

回答

1

我找到了解決辦法,也許它不是優化,但工作原理:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "_all": "aValue" 
      } 
     } 
     ], 
     "filter": { 
     "term": { 
      "published": true 
     } 
     } 
    } 
    } 
} 
+0

我現在接受了我自己的答案,如果有人有更好的解決方案,請寫下來 – Mat

0

不知道我是否正確理解你的意圖。

_all字段是默認啓用。因此,如果沒有特殊映射,則將每個索引字段的值作爲文本字符串添加到_all字段。

可以使用

有了這樣一個簡單的查詢,這應該爲你工作。

GET my_index/_search 
{ 
    "query": { 
    "simple_query_string": { 
     "query": "aValue", 
     "fields": [] 
    } 
    } 
} 

這兩個查詢類型都包含參數,這應該足以滿足您的用例恕我直言。

+0

這不是我要找的,我需要搜索所有字段併爲特定字段具有特定值 – Mat

+0

當前示例在** all * *字段,如果您將某些字段放入其中,則會限制其搜索僅限於這些字段。你可以過濾特定的領域,但沒有更多的信息,很難說。 – cinhtau

+0

我爲我的情況寫了一個工作解決方案作爲答案 – Mat