ElasticSearch / Lucene запрашивает дочерние поля со строгим соответствием

Скажем, у меня есть эластичный поисковый индекс песен, а поле artist может содержать несколько исполнителей.

Я хочу найти песни Майкла Джексона, поэтому могу использовать такой запрос:

artist.first_name: Michael AND artist.last_name: Jackson

Однако недавно я заметил, что это может вернуть мне такой результат:

{
    title: 'Some Janet Jackson Song feat. Michael Bublé',
    artist: [
        {first_name: 'Michael', last_name: 'Bublé'}
        {first_name: 'Janet', last_name: 'Jackson'}
    ]
}

Обратите внимание: у меня есть один исполнитель с именем «Майкл», а другой - с фамилией «Джексон», так что технически эта песня соответствует моему запросу.

Я не знаю подходящих слов для поиска этой проблемы. Проблема в том, как устроен мой поисковый индекс? Могу ли я сформулировать свой запрос, чтобы этого избежать? В идеале я не хочу иметь поле full_name с объединенными этими значениями или что-то в этом роде.

да, поправить можно, на всякий случай поделитесь маппингами?

Mysterion 20.01.2019 21:32
1
1
42
0

Другие вопросы по теме