Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Query DSL ›Span queries

Span not query

Удаляет совпадения, которые перекрываются с другой span-запросом или которые находятся в пределах x токенов перед (управляется параметром pre) или y токенов после (управляется параметром post) другого SpanQuery. Вот пример:

resp = client.search(
    query={
        "span_not": {
            "include": {
                "span_term": {
                    "field1": "hoya"
                }
            },
            "exclude": {
                "span_near": {
                    "clauses": [
                        {
                            "span_term": {
                                "field1": "la"
                            }
                        },
                        {
                            "span_term": {
                                "field1": "hoya"
                            }
                        }
                    ],
                    "slop": 0,
                    "in_order": True
                }
            }
        }
    },
)
print(resp)
response = client.search(
  body: {
    query: {
      span_not: {
        include: {
          span_term: {
            "field1": 'hoya'
          }
        },
        exclude: {
          span_near: {
            clauses: [
              {
                span_term: {
                  "field1": 'la'
                }
              },
              {
                span_term: {
                  "field1": 'hoya'
                }
              }
            ],
            slop: 0,
            in_order: true
          }
        }
      }
    }
  }
)
puts response
const response = await client.search({
  query: {
    span_not: {
      include: {
        span_term: {
          field1: "hoya",
        },
      },
      exclude: {
        span_near: {
          clauses: [
            {
              span_term: {
                field1: "la",
              },
            },
            {
              span_term: {
                field1: "hoya",
              },
            },
          ],
          slop: 0,
          in_order: true,
        },
      },
    },
  },
});
console.log(response);
GET /_search
{
  "query": {
    "span_not": {
      "include": {
        "span_term": { "field1": "hoya" }
      },
      "exclude": {
        "span_near": {
          "clauses": [
            { "span_term": { "field1": "la" } },
            { "span_term": { "field1": "hoya" } }
          ],
          "slop": 0,
          "in_order": true
        }
      }
    }
  }
}

Условные фразы include и exclude могут быть любыми запросами типа span. Условие include — это span-запрос, совпадения которого фильтруются, а условие exclude — это span-запрос, совпадения которого не должны перекрываться с возвращаемыми.

В приведенном выше примере все документы с термином hoya фильтруются, за исключением тех, у которых la предшествует.

Другие параметры верхнего уровня:

pre

Если задано, количество токенов перед включённым span не может перекрываться с исключаемым span. По умолчанию 0.

post

Если задано, количество токенов после включённого span не может перекрываться с исключаемым span. По умолчанию 0.

dist

Если задано, количество токенов внутри включённого span не может перекрываться с исключаемым span. Эквивалентно установке как pre, так и post.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/query-dsl-span-not-query.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API