46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
[[query-dsl-span-not-query]]
|
|
=== Span Not Query
|
|
|
|
Removes matches which overlap with another span query. The span not
|
|
query maps to Lucene `SpanNotQuery`. Here is an example:
|
|
|
|
[source,js]
|
|
--------------------------------------------------
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
--------------------------------------------------
|
|
// CONSOLE
|
|
|
|
The `include` and `exclude` clauses can be any span type query. The
|
|
`include` clause is the span query whose matches are filtered, and the
|
|
`exclude` clause is the span query whose matches must not overlap those
|
|
returned.
|
|
|
|
In the above example all documents with the term hoya are filtered except the ones that have 'la' preceding them.
|
|
|
|
Other top level options:
|
|
|
|
[horizontal]
|
|
`pre`:: If set the amount of tokens before the include span can't have overlap with the exclude span.
|
|
`post`:: If set the amount of tokens after the include span can't have overlap with the exclude span.
|
|
`dist`:: If set the amount of tokens from within the include span can't have overlap with the exclude span. Equivalent
|
|
of setting both `pre` and `post`.
|