2016-01-07 149 views
1

我已經存儲在elasticsearch數據庫兩個文件搜索數組值

一個是

{ 
    q :["python" , "foo"] 
} 

等是

{ 
    q :["python" , "moo","foo"] 
} 

我現在的問題是search文件,其中, python在索引0foo在索引1如何實現這個目標? 我已閱讀boolelasticsearch的查詢,但無法弄清楚如何使用它的幫助!

回答

1

你可以用scripting做到這一點,試試這個

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "script": { 
       "script": "_source.q[0] == \"python\" && _source.q[1] == \"foo\" " 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

雖然document fields的建議,因爲它們被加載到內存中,並快速訪問,但他們沒有下令。請參閱this,因此在這種情況下,我們需要使用_source

+2

此外,您還需要確保[腳本啓用](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules- scripting.html#enable-dynamic-scripting)爲此工作。 – Val

+0

非常感謝你:) – maq

+0

很高興我可以幫助 – ChintanShah25