Запрос Elasticsearch, начиная с определенного значения - PullRequest
0 голосов
/ 22 марта 2020

Есть ли способ сделать запрос, начиная с определенного значения, и получить следующие n записей в Elasticsearch?

Например, я хочу получить 10 записей, начиная с идентификатора сотрудника "ABC_123". В приведенном ниже запросе выдается ошибка:

[термины] запрос не поддерживает [empId]

GET /_search
{   
    "from": 0, "size": 10,
    "query" : {
        "terms" : {
            "empId" : "ABC_123"
        }
    }
}

Что я могу сделать по этому поводу?

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете использовать запрос префикса . Также вы можете прочитать больше об автозаполнении в моем блоге , где обсуждались 4 подхода к его работе и их компромисс.

Я использовал запрос префикса для данных образца и получил ожидаемый результат, а ниже приведено пошаговое руководство.

Отображение индекса

{
    "mappings": {
        "properties": {
            "empId": {
                "type": "keyword" --> field type `keyword`
            }
        }
    }
}

Индекс пример документов

{
  "empId" : "ABC_1231"
}

{
  "empId" : "ABC_1232"
}

{
  "empId" : "ABC_1233"
}

{
  "empId" : "ABC_1234"
}

и т. д.

Префикс Поисковый запрос

{
    "from": 0,
    "size": 10,
    "query": {
        "prefix": {
            "empId": "ABC_123"
        }
    }
}

Результат поиска

"hits": [
      {
        "_index": "so_prefix",
        "_type": "_doc",
        "_id": "1",
        "_score": 1.0,
        "_source": {
          "empId": "ABC_1231"
        }
      },
      {
        "_index": "so_prefix",
        "_type": "_doc",
        "_id": "2",
        "_score": 1.0,
        "_source": {
          "empId": "ABC_1232"
        }
      },
      {
        "_index": "so_prefix",
        "_type": "_doc",
        "_id": "3",
        "_score": 1.0,
        "_source": {
          "empId": "ABC_1233"
        }
      },
      {
        "_index": "so_prefix",
        "_type": "_doc",
        "_id": "4",
        "_score": 1.0,
        "_source": {
          "empId": "ABC_1234"
        }
      }
    ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...