1.概述

转载:Elasticsearch Span Query跨度查询

ES基于Lucene开发,因此也继承了Lucene的一些多样化的查询,比如本篇说的Span Query跨度查询,就是基于Lucene中的SpanTermQuery以及其他的Query封装出的DSL,接下来就看一下这些DSL都如何使用吧!

2.查询

2.1 span_term查询

这个查询如果单独使用,效果跟term查询差不多,但是一般还是用于其他的span查询的子查询。

用法也很简单,只需要指定查询的字段即可:

{"span_term" : { "user" : "kimchy" }
}

另外,还可以指定查询出的分值倍数:

{"span_term" : { "user" : { "value" : "kimchy", "boost" : 2.0 } }
}

2.2 span_multi查询

span_multi可以包装一个multi_term查询,比如wildcard,fuzzy,prefix,term,range或者regexp等等,把他们包装起来当做一个span查询。

用法也比较简单,内部嵌套一个普通的multi_term查询就行了:

{"span_multi":{"match":{"prefix" : { "user" :  { "value" : "ki" } }}}
}

也可以使用boost乘以分值,以改变查询结果的分数:

{"span_multi":{"match":{"prefix" : { "user" :  { "value" : "ki", "boost" : 1.08 } }}}
}

2.3 span_first查询

这个查询用于确定一个单词相对于起始位置的偏移位置,举个例子:

如果一个文档字段的内容是:“hello,my name is tom”,我们要检索tom,那么它的span_first最小应该是5,否则就查找不到。

使用的时候,只是比span_term多了一个end界定而已:

{"span_first" : {"match" : {"span_term" : { "user" : "kimchy" }},"end" : 3}
}

2.4 span_near查询

这个查询主要用于确定几个span_term之间的距离,通常用于检索某些相邻的单词,避免在全局跨字段检索而干扰最终的结果。

查询主要由两部分组成,一部分是嵌套的子span查询,另一部分就是他们之间的最大的跨度

{"span_near" : {"clauses" : [{ "span_term" : { "field" : "value1" } },{ "span_term" : { "field" : "value2" } },{ "span_term" : { "field" : "value3" } }],"slop" : 12,"in_order" : false,"collect_payloads" : false}
}

上面的例子中,value1,value2,value3最长的跨度不能超过12.

2.5 span_or查询

这个查询会嵌套一些子查询,子查询之间的逻辑关系为 或

{"span_or" : {"clauses" : [{ "span_term" : { "field" : "value1" } },{ "span_term" : { "field" : "value2" } },{ "span_term" : { "field" : "value3" } }]}
}

2.6 span_not查询

这个查询相对于span_or来说,就是排除的意思。不过它内部有几个属性,include用于定义包含的span查询;exclude用于定义排除的span查询

{"span_not" : {"include" : {"span_term" : { "field1" : "hoya" }},"exclude" : {"span_near" : {"clauses" : [{ "span_term" : { "field1" : "la" } },{ "span_term" : { "field1" : "hoya" } }],"slop" : 0,"in_order" : true}}}
}

2.7 span_containing查询

这个查询内部会有多个子查询,但是会设定某个子查询优先级更高,作用更大,通过关键字little和big来指定。

{"span_containing" : {"little" : {"span_term" : { "field1" : "foo" }},"big" : {"span_near" : {"clauses" : [{ "span_term" : { "field1" : "bar" } },{ "span_term" : { "field1" : "baz" } }],"slop" : 5,"in_order" : true}}}
}

2.8 span_within查询

这个查询与span_containing查询作用差不多,不过span_containing是基于lucene中的SpanContainingQuery,而span_within则是基于SpanWithinQuery

【Elasticsearch】Elasticsearch Span Query跨度查询相关推荐

  1. ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)

    ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...

  2. java term_[ElasticSearch]Java API 之 词条查询(Term Level Query)

    1. 词条查询(Term Query) 词条查询是ElasticSearch的一个简单查询.它仅匹配在给定字段中含有该词条的文档,而且是确切的.未经分析的词条.term 查询 会查找我们设定的准确值. ...

  3. 第三章 Elasticsearch Query DSL -- 查询

    第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...

  4. Elasticsearch DSL中Query与Filter的不同

    Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search {"query": { & ...

  5. ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

    ElasticSearch 6.3版本(ES)查询关键字不拆词查询:类似mysql 的 like 语句. mysql的sql语法类似如下,采用大量like和locate语法,进行模糊查询,导致查询一个 ...

  6. 使用ElasticSearch完成百万级数据查询附近的人功能

    上一篇文章介绍了ElasticSearch使用Repository和ElasticSearchTemplate完成构建复杂查询条件,简单介绍了ElasticSearch使用地理位置的功能. 这一篇我们 ...

  7. Elasticsearch学习---Term query和Match query

    前言 在Elasticsearch中Term query和Match query都可以用来对文档中的数据进行检索,但是在检索结果上会稍有不同,本文通过案例对两者的差异进行说明. 数据准备 建立一个索引 ...

  8. Elasticsearch的suggest联想提示查询实现

    Elasticsearch的suggest联想提示查询实现 思路 先将关键字在completions 自动补全索引库中查询,获取建议的补全信息 如没有获取到补全信息,可能表示用户输入的关键词有拼写错误 ...

  9. 09.span query 查询

    文章目录 1. 简介 2. 样例 1. span_term query 2. span_near query 3. span_not query 4. span_or query 5. span_fi ...

最新文章

  1. 详解 Date 对象
  2. jquery.query-*.js 操作url
  3. python非阻塞输入_Python 命令行非阻塞输入的小例子
  4. @Resource,@Autowired,@Inject3种注入方式详解
  5. 在线编辑_水墨-在线 Markdown 编辑器
  6. EasyPR--中文车牌识别系统 开发详解(开源)
  7. android 程序必须有界面,Android开发之开机启动没有界面的应用程序
  8. 使用ThinkPHP扩展,实现Redis的CURD操作。
  9. VSCODE使用EmbeddedIDE插件开发51单片机
  10. python续行_python的续行
  11. 两张图片怎样合成一张左右拼图?
  12. Visual Studio 2017 智能提示英文怎么切换成中文?
  13. linux文件权限 705,Linux 文件权限 - osc_86eb7mly的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. 哪种蓝牙耳机好用又实惠?游戏蓝牙耳机推荐
  15. 移动端适配:font-size设置方案的理解(浏览器调试移动端网页工具使用)
  16. C语言:L1-070 吃火锅 (15 分)
  17. 09 在ubuntu中切换多终端的方法
  18. 此CA证书不受信任的解决办法
  19. #649 (Div. 2)D. Ehab‘s Last Corollary
  20. Alex -机器学习

热门文章

  1. iPhone 12s Pro Max外观配置细节曝光:支持120Hz刷新率
  2. 放弃手机后!罗永浩今年已带货19亿元
  3. 手机蓝绿厂终于转正了,已有“名分”!
  4. 国内旅游业务全面复苏 携程后疫情时代如何深耕旅游市场?
  5. 微信公布朋友圈9月十大谣言 包括新型手机病毒出现等
  6. 某自媒体发布“抢小孩”视频,最高近25万次点赞,结果竟是自导自演!
  7. 特斯拉要开杂货铺? 除了卖车还要卖短裤和酒水
  8. 张朝阳寄语“校花”把参赛比做登山 走到不同阶段都是一种成就
  9. 腾讯音乐2019Q2财报:在线音乐付费用户达到创纪录的3100万
  10. “江山如此多娇” 瞰世界——第五届(2019)中国无人机影像大赛正式启动