Elasticsearch / полнотекстовый запрос с агрегацией и сортировкой на основе агрегации - PullRequest
0 голосов
/ 26 декабря 2018

Мой вопрос:

Как получить результаты, основанные на агрегациях?

с использованием облака эластичного поиска и атласа 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 документов

на самом деле я не уверен, что это правильный путь, и я не уверен, возможно ли это, поэтому помощь и объяснения были бы очень важны.

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...