ElasticSearch Поиск указанного значения в полях `FromX` и` ToY` - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу выполнить запрос по указанному значению в диапазоне, который составлен по значению двух полей FromX и ToY, и выполнить поиск Title как поле text по запросу query_string.

Этопример показывает мою цель:

Id | FromX | ToY | Title
-----------------------------
 1 |   1   |  7  |  Mohammad
 2 |   2   |  3  |  Ali
 3 |   1   |  6  |  MohammadAli
 4 |   2   |  5  |  MohammadReza
 5 |   1   |  2  |  AliReza
 6 |   2   |  2  |  Sayed Ali

пример запроса:

value: 2 AND title: *Ali*

результат для запроса:

Id | FromX | ToY | Title
-----------------------------
 2 |   2   |  3  |  Ali
 3 |   1   |  6  |  MohammadAli
 5 |   1   |  2  |  AliReza
 6 |   2   |  2  |  Sayed Ali

Обновление 1:

  • Добавьте последнюю запись с Id=6 в данные выборки и результат.

1 Ответ

0 голосов
/ 13 февраля 2019

Следующий запрос должен дать вам то, что вы ожидаете:

{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "FromX": {
              "lte": 2
            }
          }
        },
        {
          "range": {
            "ToY": {
              "gte": 2
            }
          }
        },
        {
          "query_string": {
            "query": "*ali*"
          }
        }
      ]
    }
  }
}

Однако, не следует избегать использования подстановочных знаков префикса любой ценой, так как они ухудшат производительность вашего запроса.Вам, вероятно, следует проанализировать поле заголовка с помощью ngrams и вместо этого выполнить обычные запросы на совпадение в поле Title.

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