Как отсортировать документ по порядку строк вasticsearch6.8 - PullRequest
0 голосов
/ 04 февраля 2020

В Elasticsearch 6.8 у меня есть документ ниже:

{
   ...
   item: 'AAA',
   ...
},
{
   ...
   item: 'BBB',
   ...
},
{
   ...
   item: 'CCC',
   ...
}

И в запросе запроса есть фильтр для поля item, как показано ниже.

"query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "item": [
              "BBB", "CCC"
            ]
          }
        }
      ],
      "should": [
        {
          "match": {
            "name": "Mike"
          }
        }
      ],
      "minimum_should_match": 1
    }

То, что я хочу, это отсортировать соответствующий документ на основе порядка элементов в массиве запросов. Взять выше в качестве примера, он фильтрует документ, который имеет BBB или CCC в их поле item. Мне бы хотелось, чтобы документ с BBB имел более высокий балл, чем документ с CCC, потому что пользователи ставят BBB перед CCC в запросе запроса. Как я могу добиться этого в Elasticsearch?

1 Ответ

0 голосов
/ 04 февраля 2020

Чтобы добиться оценки на основе даты создания, вам нужно будет добавить create_timestamp к каждой операции c. (Вы можете реализовать это с помощью конвейера. Например: https://discuss.elastic.co/t/creation-and-update-timestamps-for-each-doc/93456/2)

Получив метку create_timestamp, вы можете отсортировать результаты, используя то же самое. Вот как это делается: https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-request-sort.html

Чтобы изменить размеры документов с помощью create_timestamp, вы можете использовать «function_score» с «field_value_factor» на дату. Вот пример: https://github.com/elastic/elasticsearch/issues/11872

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