Мой вопрос:
Как получить результаты, основанные на агрегациях?
с использованием облака эластичного поиска и атласа mongodb (облачная версия для mongodb) имеют следующие поля вasticsearch, релевантные для этого варианта использования:
Title
Description_Short
MainCat
ItemCat
Выполнение следующего запроса, если пользователь вводит что-то в поле ввода на моей странице:
async function asyncSearch(query) {
return new Promise((resolve, reject) => {
Product.esSearch(
{
from: 0,
size: 25,
query: {
multi_match: {
query: query.suche,
fields: ["Title", "Description_Short"],
}
},
"aggs": {
"itemCats": {
"terms": { "field" : "ItemCat" }
}
},
},
{},
async (err, results) => {
if (err) throw err;
let res = await results;
console.log("-------------Results---------------");
console.log(res.aggregations.itemCats.buckets);
console.log("-----------------------------------------");
res = results.hits;
resolve(res);
}
);
});}
функция запрашивает es-db и возвращает результаты (т. Е. Если вы ищете «Smart-TV», вы получите все, что связано с «Smart-TV», даже «Smart-TV-Remote-Controller или«Smart-TV-Sticks», что не является ошибкой, но не является результатом, который я хочу.
Цель состоит в том, чтобы перечислить все причины «Smart-TV», это то, что мы ожидаем, если мы ищем терминвот так.
На приведенном ниже снимке экрана вы видите клавиши "ItemCat", которые обозначают "ItemCategory".
Агрегация ItemCategories (ItemCats) <-Извините, не разрешается вставлять изображения непосредственно в мои сообщения ->
Как вы можете видеть на изображении, у нас есть «ключ: TV-Geräte» с «doc_count: 596». Это означает, чтос этим, идея заключается в следующем:
"поиск в":
"Title",
"Description_Short"
"Объединить результаты" на основе:
"ItemCategory"
"ЗаказатьРезультаты на основе ":
"count of ItemCategory"
и возвращают результаты.
В этом примере это может означать: 1. поиск Smart-Tv 2. возвращениеn результатов агрегирования 3. возвращать результаты на основе 596 документов
на самом деле я не уверен, что это правильный путь, и я не уверен, возможно ли это, поэтому помощь и объяснения были бы очень важны.
спасибо