Elasticsearch检索分类深入详解—基础篇

Elasticsearch中当我们设置Mapping(分词器、字段类型)完毕后,就可以按照设定的方式导入数据。

有了数据后,我们就需要对数据进行检索操作。根据实际开发需要,往往我们需要支持包含但不限于以下类型的检索: 1)精确匹配,类似mysql中的 “=”操作; 2)模糊匹配,类似mysql中的”like %关键词% “查询操作; 3)前缀匹配; 4)通配符匹配; 5)正则表达式匹配; 6)跨索引匹配; 7)提升精读匹配。

细数一下,我们的痛点在于: 1)ES究竟支持哪些检索操作?

2)如何实现ES精确值检索、指定索引检索、全文检索?

这些就是本文着重参考ES最新官方文档,针对ES5.X版本探讨的内容。

0、检索概览

检索子句的行为取决于查询应用于过滤(filter)上下文还是查询/分析(query)上下文。

过滤上下文——对应于结构化检索 1)核心回答的问题是:“这个文档是否符合这个查询条款?

2)答案是简单的是或否,不计算分数。

3)过滤器上下文主要用于过滤结构化数据。类似于Mysql中判定某个字段是否存在: 例如:

  1. 时间戳字段:是否属于2015年或2016年?
  2. 状态字段:是否设置为“已发布”?

经常使用的过滤器将被Elasticsearch自动缓存,以加快性能。

分析上下文——对应于全文检索 1)核心回答了“本文档与此查询子句是否匹配?”的问题。

2)除了决定文档是否匹配之外,查询子句还会计算一个_score,表示文档与其他文档的匹配程度。

综合应用场景如下:

GET /_search
{  "query": {  "bool": {  "must": [
  { "match": { "title": "Search" }},
  { "match": { "content": "Elasticsearch" }}
  ],  "filter": [
  { "term": { "status": "published" }},
  { "range": { "publish_date": { "gte": "2015-01-01" }}}
  ]
  }
  }
}

以上检索,title中包含"Search”并且content中包含 “Elasticsearch”,status中精确匹配”published”,并且publish_date 大于“2015-01-01”的全部信息。

以下,以“脑图”的形式直观展示检索分类。

其中,3-7随着我开发深入再做更新。

原文发布于微信公众号 - 铭毅天下(gh_0475cf887cf7)

原文发表时间:2017-08-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(4)-创建项目解决方案

前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 设计中术语,概念这种东西过于模糊,我们必须学习累积才能认识这些概念模型。 我无法用文章...

2749
来自专栏CDA数据分析师

SAS | 如何网络爬虫抓取网页数据

本人刚刚完成SAS正则表达式的学习,初学SAS网络爬虫,看到过一些前辈大牛们爬虫程序,感觉很有趣。现在结合实际例子,浅谈一下怎么做一些最基本的网页数据抓取。第一...

3578
来自专栏北京马哥教育

一致性hash原理与实现

一、背景介绍 memcached的分布式 memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。服务器端内存存储功能,其实现非常简单。...

3897
来自专栏IT派

美剧迷是如何使用Python的

一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前...

1222
来自专栏信安之路

奇淫异巧之 PHP 后门

早上看了一位小伙伴在公众号发的文章《php 后门隐藏技巧》,写的挺好,其中有一些姿势是我之前没见到过了,学到很很多。同时,这篇文章也引发了自己的一点点思考:“ ...

1980
来自专栏数据小魔方

R语言数据重塑及导出操作

今天跟大家简单介绍下几个常用的R数据操纵技巧——导入(xlsx)、导出及长宽转换! 数据导入(xlsx) 之前写过一篇关于R导入不同类型数据的方式,但是其中只涉...

2683
来自专栏高性能分布式系统设计

Pandas 简介

Pandas 是Python的数据处理包,全名:Python Data Analysis Library 是连接 SciPy 和 NumPy 的一种工具。特色...

3485
来自专栏铭毅天下

干货 |《从Lucene到Elasticsearch全文检索实战》拆解实践

1、题记 2018年3月初,萌生了一个想法:对Elasticsearch相关的技术书籍做拆解阅读,该想法源自非计算机领域红火已久的【樊登读书会】、得到的每天听本...

2.1K6
来自专栏架构之路

超清晰的makefile解释、编写与示例

Makefile范例教学 Makefile和GNU make可能是linux世界里最重要的档案跟指令了。编译一个小程式,可以用简单的command来进行编译;稍...

4558
来自专栏ascii0x03的安全笔记

PySide——Python图形化界面入门教程(六)

PySide——Python图形化界面入门教程(六)             ——QListView和QStandardItemModel 翻译自:http:/...

4106

扫码关注云+社区

领取腾讯云代金券