Как получить порядок последних 3 записей по обновлению на основе поискового запроса из каждой группы по программеasticsearch - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть несколько типов контента "услуги, профиль, новости, вакансии", которые индексируются в упругом поиске.Я пытаюсь получить документ на основе искомого термина.В качестве примера -

Если тип пользователя - "California" - система должна вернуть 3 наиболее подходящие записи из каждого типа контента.У меня есть следующие элементы для создания запросов - условие поиска, поля для соответствия [название, описание, местоположение, услуги, специализация], фильтр по типам контента [профиль, услуги, вакансии, блог].

Я попробовал сам,вот запрос

{
  "aggs": {
    "group": {
      "terms": {
        "field": "type.raw"
      },
      "aggs": {
        "group_docs": {
          "top_hits": {
            "sort": [
              {
                "date.updated": {
                  "order": "asc",
                  "unmapped_type": "date"
                }
              }
            ],
            "size": 3
          }
        }
      }
    }
  },
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "query": "work",
          "fields": [
            "title",
            "description",
            "services",
            "location",
            "area_of_specialization"
          ]
        }
      },
      "filter": {
        "bool": {
          "should": [
            {
              "term": {
                "type": "profile"
              }
            },
            {
              "term": {
                "type": "blog"
              }
            },
            {
              "term": {
                "type": "jobs"
              }
            },
            {
              "term": {
                "type": "services"
              }
            }
          ]
        }
      }
    }
  }
}

Я использую упругий поиск версии 6.5.3.

Любая помощь будет оценена.

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