【Elasticsearch】Elasticsearch Span Query跨度查询
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跨度查询相关推荐
- ElasticSearch高级 (Query DSL查询 bulk批量操作 导入数据 各种查询 实战技巧-优化比重 全量与增量数据同步)
ElasticSearch高级 01-Query DSL(Domain Specific Language) 1 查询上下文 2 相关度评分:_score 3 元数据:_source 4 Query ...
- java term_[ElasticSearch]Java API 之 词条查询(Term Level Query)
1. 词条查询(Term Query) 词条查询是ElasticSearch的一个简单查询.它仅匹配在给定字段中含有该词条的文档,而且是确切的.未经分析的词条.term 查询 会查找我们设定的准确值. ...
- 第三章 Elasticsearch Query DSL -- 查询
第三章 Elasticsearch Query DSL -- 查询 摘要 查询和过滤的上下文(context) 相关性得分 查询上下文 过滤上下文 示例(下面这些查询参数,后续会详述) 全文查询 in ...
- Elasticsearch DSL中Query与Filter的不同
Elasticsearch支持很多查询方式,其中一种就是DSL,它是把请求写在JSON里面,然后进行相关的查询. 举个DSL例子 GET _search {"query": { & ...
- ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询
ElasticSearch 6.3版本(ES)查询关键字不拆词查询:类似mysql 的 like 语句. mysql的sql语法类似如下,采用大量like和locate语法,进行模糊查询,导致查询一个 ...
- 使用ElasticSearch完成百万级数据查询附近的人功能
上一篇文章介绍了ElasticSearch使用Repository和ElasticSearchTemplate完成构建复杂查询条件,简单介绍了ElasticSearch使用地理位置的功能. 这一篇我们 ...
- Elasticsearch学习---Term query和Match query
前言 在Elasticsearch中Term query和Match query都可以用来对文档中的数据进行检索,但是在检索结果上会稍有不同,本文通过案例对两者的差异进行说明. 数据准备 建立一个索引 ...
- Elasticsearch的suggest联想提示查询实现
Elasticsearch的suggest联想提示查询实现 思路 先将关键字在completions 自动补全索引库中查询,获取建议的补全信息 如没有获取到补全信息,可能表示用户输入的关键词有拼写错误 ...
- 09.span query 查询
文章目录 1. 简介 2. 样例 1. span_term query 2. span_near query 3. span_not query 4. span_or query 5. span_fi ...
最新文章
- 详解 Date 对象
- jquery.query-*.js 操作url
- python非阻塞输入_Python 命令行非阻塞输入的小例子
- @Resource,@Autowired,@Inject3种注入方式详解
- 在线编辑_水墨-在线 Markdown 编辑器
- EasyPR--中文车牌识别系统 开发详解(开源)
- android 程序必须有界面,Android开发之开机启动没有界面的应用程序
- 使用ThinkPHP扩展,实现Redis的CURD操作。
- VSCODE使用EmbeddedIDE插件开发51单片机
- python续行_python的续行
- 两张图片怎样合成一张左右拼图?
- Visual Studio 2017 智能提示英文怎么切换成中文?
- linux文件权限 705,Linux 文件权限 - osc_86eb7mly的个人空间 - OSCHINA - 中文开源技术交流社区...
- 哪种蓝牙耳机好用又实惠?游戏蓝牙耳机推荐
- 移动端适配:font-size设置方案的理解(浏览器调试移动端网页工具使用)
- C语言:L1-070 吃火锅 (15 分)
- 09 在ubuntu中切换多终端的方法
- 此CA证书不受信任的解决办法
- #649 (Div. 2)D. Ehab‘s Last Corollary
- Alex -机器学习
热门文章
- iPhone 12s Pro Max外观配置细节曝光:支持120Hz刷新率
- 放弃手机后!罗永浩今年已带货19亿元
- 手机蓝绿厂终于转正了,已有“名分”!
- 国内旅游业务全面复苏 携程后疫情时代如何深耕旅游市场?
- 微信公布朋友圈9月十大谣言 包括新型手机病毒出现等
- 某自媒体发布“抢小孩”视频,最高近25万次点赞,结果竟是自导自演!
- 特斯拉要开杂货铺? 除了卖车还要卖短裤和酒水
- 张朝阳寄语“校花”把参赛比做登山 走到不同阶段都是一种成就
- 腾讯音乐2019Q2财报:在线音乐付费用户达到创纪录的3100万
- “江山如此多娇” 瞰世界——第五届(2019)中国无人机影像大赛正式启动