2016-01-07 2 views
0

Я очень новичок в Elasticsearch и постарался изо всех сил найти ответ на мой вопрос как через документы, так и в Google, и, что самое главное, здесь.Elasticsearch объединяет запросы при поиске через ребенка или родителя

В настоящее время мне приходится отделять свои запросы через детей или родителей, чтобы найти то, что я ищу. Это то, что я прямо сейчас (я использую модуль Kibana под названием Sense для моих запросов Curl):

GET /raow/raower/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "has_child": { 
      "type": "break", 
      "query": { 
       "match": { 
       "smoke": false 
       } 
      } 
      } 
     }, 
     { 
      "has_child": { 
      "type": "break", 
      "query": { 
       "match": { 
       "time": "12:00" 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

Как вы можете видеть, мои два запроса на has_child оба полистать ребенка raower который является перерыв матч, но я изо всех сил пытаюсь совместить эти два. Любая помощь будет оценена по достоинству. Как я уже говорил, я очень новичок в Elasticsearch, поэтому, если что-нибудь еще о синтаксисе было бы лучше всего изменить, скажите мне!

Увидев, что это мой первый вопрос, я действительно надеюсь, что он не был задан раньше, я сделал все возможное, чтобы найти его, чтобы его могли спросить до моих извинений.

+0

Добро пожаловать в Stack Overflow, Thomas! Я четко не понял ваш вопрос. Что вы подразумеваете под «комбинировать два»? Каков результат, которого вы ожидаете, и что вы получаете вместо этого? Также обратите внимание на определение отображения «raver» и «break». Эта информация может пригодиться. – bittusarkar

+0

То, что я имел в виду, объединив два, было более чистым способом получения результата более чем одним соответствием для ребенка или родителя. В основном более чистый код, Брук Б (одобренный) дал отличный ответ. Извините за то, что я был ненадолго, я был немного занят. –

ответ

1

С has_child принимает любые запросы, возможно, вам будет удобно просто вложить запрос bool в ваш запрос has_child. Например:

GET /raow/raower/_search 
{ 
    "query": { 
    "has_child": { 
     "type": "break", 
     "query": { 
     "bool": { 
      "must": [ 
      { 
       "match": { 
       "smoke": false 
       } 
      }, 
      { 
       "match": { 
       "time": "12:00" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

Отлично! Большое вам спасибо, это выглядит намного лучше и чище, чем мой старый метод. –

Смежные вопросы