您的位置:首页 > 编程语言 > Java开发

Elasticsearch java API (25)查询 DSL Span(跨度)查询

2016-07-04 14:28 627 查看


跨度查询编辑

跨度��询是低级位置查询提供专家控制的秩序和接近指定的条款。这些通常是用于实现特定查询法律文件或专利。

跨度查询不能混合(除了non-span查询
 span_multi
查询)。

这组查询:

span_term
 查询的等效
 term
查询但与其他跨度查询使用。
span_multi
 查询包装
 term
,
 range
,
 prefix
,
 wildcard
,
 regexp
,或
 fuzzy
查询。
span_first
 查询接受另一个跨度查询的匹配必须出现在第N的位置。
span_near
 查询接受多个跨度查询的匹配必须在指定的距离,并可能在相同的顺序。
span_or
 查询结合多个跨度查询,返回文档的匹配任何指定的查询。
span_not
 查询包装另一个跨度查询,排除了任何文档匹配查询。
span_containing
 查询接受一个跨度查询列表,但是只返回那些跨越也匹配第二个跨度查询。
span_within
 查询单孔查询返回的结果只要是它的跨度中返回的跨越其他跨度查询的列表。


跨词查询编辑

看到跨词查询

QueryBuilder qb = spanTermQuery(
"user",        //1
"kimchy"          //2
);







价值


跨多词查询编辑

看到跨多词查询

QueryBuilder qb = spanMultiTermQueryBuilder(
prefixQuery("user", "ki")         //1
);




可以是任何builder扩展吗
 MultiTermQueryBuilder
类。例如:
 FuzzyQueryBuilder
,
PrefixQueryBuilder
,
 RangeQueryBuilder
,
 RegexpQueryBuilder
 WildcardQueryBuilder
.


跨越第一个查询编辑

看到跨越第一个查询

QueryBuilder qb = spanFirstQuery(
spanTermQuery("user", "kimchy"),      //1
3                                        //2
);




查询


马克斯结束位置


跨度查询附近编辑

看到跨度查询附近

QueryBuilder qb = spanNearQuery()
.clause(spanTermQuery("field","value1"))    //1
.clause(spanTermQuery("field","value2"))    //2
.clause(spanTermQuery("field","value3"))    //3
.slop(12)                                   //4
.inOrder(false)                             //5
.collectPayloads(false);                    //6








跨词查询


污水因素:干预无与伦比的头寸的最大数量


是否需要按次序的匹配


收集有效载荷或不


跨度或查询编辑

看到跨度或查询

QueryBuilder qb = spanOrQuery()
.clause(spanTermQuery("field","value1"))    //1
.clause(spanTermQuery("field","value2"))    //2
.clause(spanTermQuery("field","value3"));   //3








跨词查询


跨度不查询编辑

看到跨度不查询

QueryBuilder qb = spanNotQuery()
.include(spanTermQuery("field","value1"))   //1
.exclude(spanTermQuery("field","value2"));  //2




跨度查询的匹配过滤


这些返回跨度查询的匹配不能重叠


跨度包含查询编辑

看到跨度包含查询

QueryBuilder qb = spanContainingQuery()
.little(spanTermQuery("field1","foo"))      //1
.big(spanNearQuery()                        //2
.clause(spanTermQuery("field1","bar"))
.clause(spanTermQuery("field1","baz"))
.slop(5)
.inOrder(true)
);




little
部分


big
部分


跨度内查询编辑

看到跨度内查询

QueryBuilder qb = spanWithinQuery()
.little(spanTermQuery("field1", "foo"))        //1
.big(spanNearQuery()                              //2
.clause(spanTermQuery("field1", "bar"))
.clause(spanTermQuery("field1", "baz"))
.slop(5)
.inOrder(true)
);



little
部分


big
部分
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息