Я хочу получить все поля из индекса, как сопоставления (localhost: 9200 / indx / _mapping /), но с условием или термином.
Возможно ли это? пожалуйста, помогите.
- _mapping отправляет все поля (есть более 6000 параметров), мне нужно только из одного раздела.
- пробовал метаполе "_field_names" в части aggs,но она устарела
Я пытаюсь создать страницу с некоторыми продуктами, там вы можете выбрать необходимый раздел и получить список параметров для фильтрации продуктов.
Например, для кабелей этобудет материальным, для питания микросхем и т. д.
Если я задаю имя поля вручную, я получу необходимые значения для этого параметра, но мне нужно получить список параметров динамически и по условию.
Пример запроса:
{
"query":{"bool":{"must":[{"bool":{"must":[{"bool":{"should":[{"multi_match":{"query":"12758","fields":["desq^1","title^2","partnum^3","partnumrs^4"],"type":"best_fields","operator":"or","fuzziness":1}},{"multi_match":{"query":"12758","fields":["desq^1","title^2","partnum^3","partnumrs^4"],"type":"phrase_prefix","operator":"or"}}],"minimum_should_match":"1"}}]}}]}},
"highlight":{"pre_tags":["<mark>"],"post_tags":["</mark>"],"fields":{"desq":{},"title":{},"partnum":{},"partnumrs":{}}},
"aggs":{
"power.keyword":{"terms":{"field":"power.keyword","size":30,"order":{"_count":"desc"},"missing":"N/A"}},
"brand.keyword":{"terms":{"field":"brand.keyword","size":30,"order":{"_count":"desc"},"missing":"N/A"}}},
"_source":{"includes":["*"],"excludes":[]},"from":0,"size":8
}
Альтернатива: комментарий Вала, создание мета-индекса вручную. Запросите все документы для нужного раздела по условиям, получите уникальные поля документов, сохраните поля в мета-индекс для каждого раздела. Когда клиент открывает раздел, я могу получить список полей и агрегирование запросов для них.