У меня есть индекс с вложенным отображением.Я хочу предварительно сформировать запрос, который вернет следующее: дайте мне все документы, в которых каждое слово в поисковом запросе встречается в одном или нескольких вложенных документах.
Вот индекс:
properties: {
column_values_index_as_objects: {
type: "nested",
properties: {
value: {
ignore_above: 256,
type: 'keyword',
fields: {
word_middle: {
analyzer: "searchkick_word_middle_index",
type: "text"
},
analyzed: {
term_vector: "with_positions_offsets",
type: "text"
}
}
}
}
}
}
Вот последний запрос, который я пробую:
nested: {
path: "column_values_index_as_objects",
query: {
bool: {
must: [
{
match: {
"column_values_index_as_objects.value.analyzed": {
query: search_term,
boost: 10 * boost_factor,
operator: "or",
analyzer: "searchkick_search"
}
}
}
Например, если я ищу слова «еда и вода», я хочу, чтобы каждое слово появилось хотя бы во вложенном документе.Текущий поиск возвращает документ, даже если существует только одно из слов
Спасибо за помощь!
Обновление: Как предположил Кристоф, решение работает.Теперь у меня есть следующая проблема.
Вот мой индекс:
properties: {
name: {
type: "text"
},
column_values_index_as_objects: {
type: "nested",
properties: {
value: {
ignore_above: 256,
type: 'keyword',
fields: {
word_middle: {
analyzer: "searchkick_word_middle_index",
type: "text"
},
analyzed: {
term_vector: "with_positions_offsets",
type: "text"
}
}
}
}
}
}
И запрос, который я хочу выполнить, - это если я ищу «меня зовут парень» и выдаст вседокументы, в которых найдены все слова - могут быть во вложенных документах и могут находиться в поле имени.Например, у меня может быть документ со значением «парень» в поле имени и другие слова во вложенных документах