文章目录

  • 1. 简介
  • 2. 样例
    • 1. span_term query
    • 2. span_near query
    • 3. span_not query
    • 4. span_or query
    • 5. span_first query
    • 6. span_within query
    • 7. span_containing query
    • 8. field_masking_span query
    • 9. span_multi query

1. 简介

这里介绍的是es对lucene的spanQuery的一些使用接口,主要有下面的几种查询

  1. span_term query: 和term查询等效,一般用来在其他span query中作为组合查询
  2. span_near query: 和intervals查询中的match 查询很像,约束多个查询term的order和gap
  3. span_not query: 和boost query很像,但是包含的是 include和excludes两个条件(boost query 是positive和negative)
  4. span_or query: 结合多个span query ,和bool 查询中的should很像,只要命中一个即可
  5. span_first query: 要查询的term在对应的field中的位置距离起始位置不能超过N
  6. span_within query: 这个挺特殊,是分为little和big两个span query, 而且little的query中的term必须在big的多个term之间(在source field中对应的text当中)
  7. span_containing query: 这个感觉和span_within一样,就是查询顺序不一样,先查little再过滤big条件
  8. field_masking_span query: 可以让span-near or span-or across different fields,具体使用没有看太明白
  9. span_multi query: Wraps a term, range, prefix, wildcard, regexp, or fuzzy query.

2. 样例

原始数据

GET multi_test/_search返回
{"hits" : {"total" : {"value" : 6,"relation" : "eq"},"max_score" : 1.0,"hits" : [{"_source" : {"shingle" : "If the calculations based on the specification determine that","title" : "If the calculations based on the specification determine that","age" : 80,"status" : true}},{"_source" : {"shingle" : "my favorite food hot water","title" : "my favorite food hot water","age" : 23,"status" : true}},{"_source" : {"shingle" : "that no optional clauses are needed, the usual rules about BooleanQueries ","title" : "that no optional clauses are needed, the usual rules about BooleanQueries ","age" : 39,"status" : false}},{"_source" : {"shingle" : "rules about BooleanQueries still apply at search ","title" : "rules about BooleanQueries still apply at search ","age" : 42,"status" : false}},{"_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up  ","age" : 38,"status" : false}},{"_source" : {"shingle" : "my favorite food is pisa","title" : "the my favorite  that is pisa","age" : 35,"status" : false}}]}
}

1. span_term query


GET multi_test/_search
{"query": {"span_term": {"title": {"value": "that"}}}
}

2. span_near query


GET multi_test/_search
{"query": {"span_near": {"clauses": [{"span_term": {"title": {"value": "up"}}},{"span_term": {"title": {"value": "suggester"}}}],"slop": 3,"in_order": false}}
}

3. span_not query


GET multi_test/_search
{"query": {"span_not": {"include": {"span_term": {"title": {"value": "favorite"}}},"exclude": {"span_near": {"clauses": [{"span_term": {"title": {"value": "my"}}},{"span_term": {"title": {"value": "favorite"}}}],"slop": 0,"in_order": false}}}}
}

我在测试的时候,如果exclude当中使用span term的话那么会出现exclude失效的情况,具体原因不太清楚

4. span_or query

GET multi_test/_search
{"query": {"span_or": {"clauses": [{"span_term": {"title": {"value": "food"}}},{"span_term": {"title": {"value": "favorite"}}}]}}
}

5. span_first query


GET multi_test/_search
{"query": {"span_first": {"match": {"span_term": {"title": "hot"}},"end": 4}}
}返回"_source" : {"shingle" : "my favorite food hot water","title" : "my favorite food hot water","age" : 23,"status" : true}

6. span_within query


GET multi_test/_search
{"query": {"span_within": {"little": {"span_term": {"title": {"value": "special"}}},"big": {"span_near": {"clauses": [{"span_term": {"title": {"value": "suggester"}}},{"span_term": {"title": {"value": "mapping"}}}],"slop": 5,"in_order": false}}}}
}返回
"_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up  ","age" : 38,"status" : false}

这里的litte中的term special在源文档中必须在big查询的两个term suggester, mapping中间才行,否则查不出来

7. span_containing query


GET multi_test/_search
{"query": {"span_containing": {"little": {"span_term": {"title": {"value": "special"}}},"big": {"span_near": {"clauses": [{"span_term": {"title": {"value": "suggesterzh"}}},{"span_term": {"title": {"value": "mapping"}}}],"slop": 5,"in_order": false}}}}
}

要求同span within 查询

8. field_masking_span query

这个没有用明白。。。


GET multi_test02/_search
{"query": {"span_near": {"clauses": [{"span_term": {"title": "requires"}},{"field_masking_span": {"query": {"span_term": {"shingle": "based"}},"field": "title"}}],"slop": 1,"in_order": false}}
}

9. span_multi query


GET multi_test/_search
{"query": {"span_multi": {"match": {"prefix": {"title": {"value": "sug"}}}}}
}返回"_source" : {"shingle" : "If the calculations based","title" : " suggester requires special mapping up  ","age" : 38,"status" : false}

09.span query 查询相关推荐

  1. 【Elasticsearch】Elasticsearch Span Query跨度查询

    1.概述 转载:Elasticsearch Span Query跨度查询 ES基于Lucene开发,因此也继承了Lucene的一些多样化的查询,比如本篇说的Span Query跨度查询,就是基于Luc ...

  2. Hive基础09、HQL查询语句

    Hive基础09.HQL查询语句 目录 Hive基础08.HQL查询语句 1.基础查询语句 2.数组查询 3.map 4.struct 5.聚合查询语句 HQL查询内容全: 第一部分: Hive查询语 ...

  3. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)

    目的: 1.ArcGIS API for Flex实现Query查询定位中心功能,进行属性查图的功能,选择图层然后输入查询语句进行查询把查到的地理元素高亮显示同时在右边的Grid中显示查到的数据,然后 ...

  4. Hibernate——Query查询

    原文地址 前两篇文章介绍了获取SessionFactory,Session,以及Session的三种状态及其之间的转换,本文势必要将大家最关心的问题做出介绍,也就是大家最关心的通过Hibernate提 ...

  5. Python笔记:query查询

    以下,是在Python中用query函数实现灵活查询的方法.原理不作赘述,具体请看示例. ** 00. 构造数据集 ** # 构造数据集 import pandas as pddf = pd.Data ...

  6. Hibernate的事务级别控制与查询对象的API(Query查询与Criterial查询+离线查询)

    1.事务级别控制 可以在Hibernate的配置文件中对事务进行配置.配置文件中,可以设置事务的隔离级别.其具体的配置方法是在hibernate.cfg.xml文件中的<session-fact ...

  7. Query查询(SQ01/SQ02/SQ03)分配事务代码(T-CODE)

    文章目录 一.概述 二.方式1:报表事物类型 - ZA367_Q001 2.1 Query查询对应的程序名 2.2 分配事物代码 三.方式2:参数事物类型 - ZA367_Q001_START 四.两 ...

  8. oracle排除查询,排除表和query查询条件的expdp、impdp

    排除某些表的expdp/impdp expdp system/123456 directory=DATA_PUMP_DIR dumpfile=wf.dmp logfile=wf.log schemas ...

  9. 实现SessionFactory单态模式和Query查询

    1.实现SessionFactory单态模式 应用程序从SessionFactory里获得session实例,它在多个应用线程间进行共享.然而SessionFactory是重量级的,一般情况下一个项目 ...

最新文章

  1. 前端解决跨域问题的8种方案(最新最全)
  2. MIT:大脑如何跟踪运动中的物体?
  3. 缓存服务器syns to listen sockets drop导致创建socket失败
  4. element 修改分页样式_如何给wordpress网站的文章列表,添加分页效果?可以通过2种方式...
  5. [摘抄]江湖经验:喝酒时玩的游戏大全!
  6. Avalonia跨平台入门第二十二篇之人脸检测
  7. 修改mysql密码时遇见ERROR 1064 (42000) You have an error in your SQL syntax; check the manual that correspo
  8. 【操作系统】磁盘结构
  9. DevExpress GridView 添加和设置右键菜单
  10. Entity Framework 6 Code First的简单使用和更新数据库结构
  11. 基于python和opencv的人脸识别
  12. python没有错误但是不显示结果_python运行不报错又无任何结果输出
  13. UI-Day02--昨日作业代码(二)
  14. Spring Security OAuth2.0_实现分布式认证授权_集成测试_Spring Security OAuth2.0认证授权---springcloud工作笔记155
  15. CCS Product ****** is not currently installed and no compatible version is available 报错调试
  16. 抛负载”ISO 7637-2测试标准讲解,车规级TVS管优选建议
  17. 广外男生病毒代码剖析
  18. echarts版中国地图
  19. 2019年春季学期《C语言程序设计II》助教注意事项
  20. 凸优化4:Operations that preserve convexity

热门文章

  1. 玩转Google开源C++单元测试框架Google Test系列(gtest)之三 - 事件机制
  2. cocos2d-x游戏开发(十三)细说回调函数
  3. cocos2d-x游戏实例(4)-地图碰撞
  4. [译]BitTorrent协议规范
  5. C++ 动态内存管理:c/c++的动态内存管理,new/delete,operator new/delete,placement-new, 内存泄漏
  6. Cocos2d-x快速打包脚本
  7. Leetcode-Merge k Sorted Lists
  8. 区间调度之区间交集问题
  9. Opera视频出海非洲面临的技术挑战及应对
  10. 未来流媒体工作流的核心技术