# Span Not 查询

原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-span-not-query.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.4/query-dsl-span-not-query.html)

译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10029284](http://www.apache.wiki/pages/viewpage.action?pageId=10029284)

贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina)

删除与另一个span查询重叠的匹配项。跨度不查询映射到Lucene SpanNotQuery。这是一个例子：

```
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子句可以是任何跨类型查询。 include子句是对其匹配进行过滤的span查询，而exclude子句是其匹配不能与返回的匹配的span查询。

在上述示例中，除了具有前述之外的所有文档，除了具有术语hoya的文档之外，都将被过滤。

其他顶级选项：

| `pre` | 如果在包含范围之前设置标记的数量不能与排除范围重叠。 |
| `post` | 如果在包含范围之后设置标记的数量不能与排除范围重叠。 |
| `dist` | 如果设置包含范围内的令牌数量不能与排除范围重叠。相当于前置和后置的设置。 |