结构化搜索_在案例中实战使用terms搜索多个值以及多值搜索结果优化
课程大纲
term: {"field": "value"} terms: {"field": ["value1", "value2"]}
sql中的in
select * from tbl where col in ("value1", "value2")
1、为帖子数据增加tag字段
POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"tag" : ["java", "hadoop"]} } { "update": { "_id": "2"} } { "doc" : {"tag" : ["java"]} } { "update": { "_id": "3"} } { "doc" : {"tag" : ["hadoop"]} } { "update": { "_id": "4"} } { "doc" : {"tag" : ["java", "elasticsearch"]} }
2、搜索articleID为KDKE-B-9947-#kL5或QQPX-R-3956-#aD8的帖子,搜索tag中包含java的帖子
GET /forum/article/_search { "query": { "constant_score": { "filter": { "terms": { "articleID": [ "KDKE-B-9947-#kL5", "QQPX-R-3956-#aD8" ] } } } } }
GET /forum/article/_search { "query" : { "constant_score" : { "filter" : { "terms" : { "tag" : ["java"] } } } } } "took": 2, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "forum", "_type": "article", "_id": "2", "_score": 1, "_source": { "articleID": "KDKE-B-9947-#kL5", "userID": 1, "hidden": false, "postDate": "2017-01-02", "tag": [ "java" ] } }, { "_index": "forum", "_type": "article", "_id": "4", "_score": 1, "_source": { "articleID": "QQPX-R-3956-#aD8", "userID": 2, "hidden": true, "postDate": "2017-01-02", "tag": [ "java", "elasticsearch" ] } }, { "_index": "forum", "_type": "article", "_id": "1", "_score": 1, "_source": { "articleID": "XHDK-A-1293-#fJ3", "userID": 1, "hidden": false, "postDate": "2017-01-01", "tag": [ "java", "hadoop" ] } } ] } }
3、优化搜索结果,仅仅搜索tag只包含java的帖子
POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"tag_cnt" : 2} } { "update": { "_id": "2"} } { "doc" : {"tag_cnt" : 1} } { "update": { "_id": "3"} } { "doc" : {"tag_cnt" : 1} } { "update": { "_id": "4"} } { "doc" : {"tag_cnt" : 2} } GET /forum/article/_search { "query": { "constant_score": { "filter": { "bool": { "must": [ { "term": { "tag_cnt": 1 } }, { "terms": { "tag": ["java"] } } ] } } } } } ["java", "hadoop", "elasticsearch"]
4、学到的知识点梳理
(1)terms多值搜索
(2)优化terms多值搜索的结果
(3)相当于SQL中的in语句
详情请观看视频讲解:http://www.roncoo.com/course/view/f6c7d5f0eef34b20b280621e42facbcf
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Boot 整合 HBase
一、HBase 介绍 HBase是一个分布式的、面向列的开源数据库,Hadoop 数据库。搭建基于 Hadoop 和 ZK 。 历史是基于 Google 的 Bigtable 、Google 文件系统等论文。HBase 在Hadoop 之上提供了类似于 Bigtable 的能力。 HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。 HBase 特性: 大:一个表可以有数十亿行,上百万列, PB级别的水平扩展能力 无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要- - 动态的增加,同一张表中不同的行可以有截然不同的列 稀疏:空列不占用存储空间,表可以很稀疏 可靠性高:系统无单点,容忍任意两台物理节点故障,数据无风险 数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳 HBase 适用场景: 海量数据场景,天然支持数据水平扩展,处理 TB 到 PB 数据 写性能突出,轻松打满网卡,增量数据抓取、批处理 源于Ha...
- 下一篇
处理微服务架构的内部架构和外部架构
关键点 微服务架构MSA并不是一个全新的概念,它旨在通过使用现代技术的优点来正确地实现SOA。 微服务只能解决整体问题的一小部分——架构师们需要将微服务架构作为一种架构实践,并实现它以满足企业级应用要求。 “微”不仅仅只是关注大小,它主要是关注范围。 整合是微服务架构的一个关键方面,在适用时,它可以作为微整合来实施。 迭代式的方法可以帮助组织从其当前状态转换到一个完整的微服务架构。 今天的企业里内容范围非常广,包括服务、传统应用程序和数据等等,这由一系列的消费渠道为首,包括桌面、网站和移动应用等。但是,通常情况下,由于没有一个被以适当的方式创建和系统化地管理的集成层,会出现断层,这些消费渠道需要有这样的集成层来使能业务功能。大多数企业正在通过面向服务的架构(Service-Oriented aArchitecture,SOA)来应对这一挑战。在面向服务的架构中,应用程序组件通过网络上的通信协议向其他组件提供松散耦合的服务。最终,它的意图是让微服务架构可以更灵活和更容易地扩展。虽然没有充分地准备好采用微服务架构,但是这些组织正在规划架构并实现企业应用和服务平台,使他们可以逐步走向微服务架...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7安装Docker,走上虚拟化容器引擎之路