Влияет ли структура запроса на совпадение на сервер - PullRequest
1 голос
/ 24 мая 2019

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

Итак, этот запрос:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "Text": {
              "query": "Scooby Shaggy corridor",
              "fuzziness": 1,
              "operator": "AND"
            }
          }
        }
      ]
    }
  }
}

логически эквивалентно этому:

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "Text": {
              "query": "Scooby",
              "fuzziness": 1
            }
          }
        },
        {
          "match": {
            "Text": {
              "query": "Shaggy",
              "fuzziness": 1
            }
          }
        },
        {
          "match": {
            "Text": {
              "query": "corridor",
              "fuzziness": 1
            }
          }
        }
      ]
    }
  }
}

но проще ли серверу обрабатывать сервер?Или это не имеет никакого значения?

Я понимаю, что это тривиальный пример, но может ли это иметь значение для более сложных запросов?

Если кто-то, кто немного знает о том, как ElasticSearch ведет себя под капотоммог бы сделать замечание, я был бы благодарен.

Спасибо,

Адам.

1 Ответ

1 голос
/ 24 мая 2019

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

Запрос на совпадение имеет тип boolean.Это означает, что предоставленный текст анализируется, и процесс анализа строит логический запрос из предоставленного текста.

Но вы должны оставить запрос на многостадийное соответствие и позволитьasticsearch делать эту работу.Его удобнее обслуживать, и вы можете контролировать перезапись благодаря параметру rewrite (см. здесь )

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