2016-01-07 2 views
1

я два документа хранится в elasticsearch базыпоиска значение массива по индексу в elasticsearch

один

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

и другого

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

теперь моя проблема заключается в search документ, в котором python есть на указателе 0 и foo есть на указателе 1 как это осуществить? Я читал о bool запросе elasticsearch, но не мог понять, как использовать его любезно!

ответ

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