Я создаю сайт React JS, используя ReactiveSearch для извлечения данных из Elastic Search (AWS).
Я пытаюсь обеспечить поиск и выделение вложенного поля в моем эластичном поисковом индексе.
Я слышал, что inner_hits - это способ включения подсветки во вложенных элементах.
Я использую customQuery
prop для моего DataSearch
компонента, чтобы предоставить следующий DSL-запрос.
<DataSearch
componentId="myCustomShit"
dataField="col_attr.completion_column_name"
title="Column Name"
highlight={false}
placeholder="Enter Column Name"
URLParams
customQuery={(value, props) => {
// if the search is blank then do nothing
if (!value) return {};
//else return a custom
return {
size: 15,
from: "0",
highlight: {
pre_tags: ["<mark>"],
post_tags: ["</mark>"],
order: "score",
fields: {
table_name: {},
rs_table_description: {},
user_table_description: {}
}
},
query: {
bool: {
should: [
{
multi_match: {
query: value,
fields: [
"table_name^2",
"user_table_description",
"rs_table_description"
]
}
},
{
nested: {
path: "col_attr",
inner_hits: {
size: 10,
_source: true,
highlight: {
pre_tags: ["<mark>"],
post_tags: ["</mark>"],
tags_schema: "styled",
fragmenter: "span",
fragment_size: 60,
number_of_fragments: 2,
order: "score",
fields: {
"col_attr.column_name": {},
"col_attr.rs_column_description": {},
"col_attr.user_column_description": {}
}
}
},
query: {
bool: {
should: [
{
match: {
"col_attr.column_name": value
}
},
{
match: {
"col_attr.user_column_description": value
}
},
{
match: {
"col_attr.rs_column_description": value
}
}
]
}
}
}
}
]
}
}
};
}}
/>
Поля данных, которые я пытаюсь найти,
col_attr.rs_column_description , col_attr.user_column_description и col_attr.column_name .
Обратите внимание, что col_attr
- это массив объектов, и в каждом из этих объектов расположены rs_column_description , user_column_description и column_name .
проблема
Хотя поиск, кажется, работает нормально, как и ожидалось, я заметил, что результаты выделения для вложенных полей расположены в отдельном объекте с именем inner_hits
, который реактивный поиск не обрабатывает и не возвращает.
ReactiveList предоставляет доступ к параметру data
, который по сути является объектом hits
, возвращаемым из es.
Есть ли способ получить доступ к inner_hits
? Есть ли альтернативный способ получения подсветки для вложенных элементов в реактивном поиске?