2015-03-10 4 views

ответ

1

Есть несколько подходов, основанных на том, что вы пытаетесь достичь.

  1. Вы можете смоделировать ваши данные, чтобы вы хранить индексированные значения для автора типа книги, и, возможно, ссылки на этот автор.
  2. В противном случае вы должны иметь возможность запрашивать 2 типа, однако вы не можете указать, какое значение нужно искать в каком типе. Они бы технически были 2 отдельными запросами, и вам придется смешать результаты 2 сами, если это то, что вы желаете.

Можно выполнить поиск как при условии, что книга не имеет атрибута «имя», а у автора нет атрибута «title». Если вы ищете поле, которое не существует, elasticsearch все еще будет пытаться, учитывая, что данные в модели не имеют схемы, а сопоставление просто определяет, как индексировать поля, но не обязательно определяет структуру документов.

Если вы пытаетесь сделать один поиск как для книги, так и для автора, я бы рекомендовал сделать 2 отдельных запроса, так как вы получите два отдельных типа документов, которые, возможно, потребуется обработать соответственно.

5

Вы можете сделать запрос к индексу, а не только по типу:/yourindex/_search.

Теперь, вы должны использовать мульти запрос спичку, чтобы лучше контролировать свои результаты:

{ 
    "multi_match" : { 
     "query": "Will Smith", "fields": [ 
      "type1.title", "type2.name" 
     ] 
    } 
} 

Подробнее: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.html

+1

Это должно быть принято ответ! – Bald

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