Elasti c группа поиска и получить первую запись - PullRequest
1 голос
/ 30 марта 2020

Я новичок в Elasti c Поиск, я хочу создать запрос в поиске elasti c, который работает как группа по SQL. Вот мой SQL запрос

SELECT top 100  *
FROM (
SELECT ROW_NUMBER()
OVER(PARTITION BY columnA
ORDER BY columnB) AS StRank, *
FROM table where columnA in ('a','b','c') ) n
WHERE StRank IN (1) 
GO

Я хочу одну группу строк по столбцу A и Порядок по столбцу B

1 Ответ

1 голос
/ 30 марта 2020

Вы можете использовать свернуть .

Позволяет свернуть результаты поиска на основе значений поля. Свертывание выполняется путем выбора только самого отсортированного документа для каждого ключа свертывания

{
  "query": {
    "bool": {
      "filter": {- -> filter doesn't calculate score(if score needed use must)
        "terms": {
          "columnA": ["a","b","c"]
        }
      }
    }
  },
  "collapse": {      --> top 1 Group by column A
    "field": "columnA"
  },
  "sort": [          --> sort 
    {
      "columnB": {
        "order": "desc"
      }
    }
  ]
}
...