span_not

Запрос Span not

Запрос span_not исключает диапазоны, которые пересекаются с другим запросом span. Вы также можете указать расстояние до или после исключенных диапазонов, в пределах которого совпадения не могут происходить.

Например, вы можете использовать запрос span_not для:

  • Поиска терминов, кроме тех случаев, когда они появляются в определенных фразах.
  • Совпадения диапазонов, если они не находятся рядом с определенными терминами.
  • Исключения совпадений, которые происходят в пределах определенного расстояния от других шаблонов.

Пример

Чтобы попробовать примеры в этом разделе, выполните шаги по настройке.

Следующий запрос ищет слово “dress”, но не когда оно появляется в фразе “dress shirt”:

GET /clothing/_search
{
  "query": {
    "span_not": {
      "include": {
        "span_term": {
          "description": "dress"
        }
      },
      "exclude": {
        "span_near": {
          "clauses": [
            {
              "span_term": {
                "description": "dress"
              }
            },
            {
              "span_term": {
                "description": "shirt"
              }
            }
          ],
          "slop": 0,
          "in_order": true
        }
      }
    }
  }
}

Запрос соответствует документу 2, потому что он содержит слово “dress” (“Beautiful long dress…”). Документ 1 не соответствует, потому что он содержит фразу “dress shirt”, которая исключена. Документы 3 и 4 не соответствуют, потому что они содержат вариации слова “dress” (“dressed” и “dresses”), а запрос ищет в сыром поле.

Ответ

Параметры

Следующая таблица перечисляет все параметры верхнего уровня, поддерживаемые запросами span_not.

ПараметрТип данныхОписание
includeОбъектЗапрос span, совпадения которого вы хотите найти. Обязательный параметр.
excludeОбъектЗапрос span, совпадения которого должны быть исключены. Обязательный параметр.
preЦелое числоУказывает, что исключенный диапазон не может появляться в пределах указанного количества позиций токенов перед включенным диапазоном. Необязательный параметр. По умолчанию 0.
postЦелое числоУказывает, что исключенный диапазон не может появляться в пределах указанного количества позиций токенов после включенного диапазона. Необязательный параметр. По умолчанию 0.
distЦелое числоЭквивалентно установке как pre, так и post на одно и то же значение. Необязательный параметр.