
(39)...ElasticSearch经典教程
Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎,无论你是需要全文搜索,还是结构化数据的实时统计,或者两者结合,此教程都能帮助你从概念到实战, 从最基本的操作开始学习 Elasticsearch。此教程基于5.5版本。
IT云清
技术专家,团队主管,Apache Seata Committer,公众号:java4all
展开
-
Elasticsearch教程目录
↓↓↓Elasticsearch教程目录,点击直接进入文章↓↓↓,也可进入专栏:1.Elasticsearch简介2.Elasticsearch和Java交互3.Elasticsearch面向文档4.Elasticsearch索引文档5.Elasticsearch检索文档6.Elasticsearch轻量搜索7.Elasticsearch请求...原创 2018-05-24 21:03:26 · 1383 阅读 · 0 评论 -
21.Elasticsearch分析与分析器
本文讲解Elasticsearch对文本的分析及内置的分析器。1.分析分析 包含下面的过程:首先,将一块文本分成适合于倒排索引的独立的 词条 , 之后,将这些词条统一化为标准格式以提高它们的“可搜索性”,或者 recall 分析器执行上面的工作。2.分析器分析器 实际上是将三个功能封装到了一个包里:2.1字符过滤器首先,字符串按顺序通过每个 字符过滤器 ...原创 2018-05-31 20:03:57 · 495 阅读 · 0 评论 -
20.Elasticsearch倒排索引原理
本文讲解Elasticsearch中倒排索引的原理。Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。假设有两个文档,每个文档的 content 域包含如下内容:The quick brown fox jumped over the lazy dogQuick b...原创 2018-05-31 19:09:55 · 1046 阅读 · 0 评论 -
19.Elasticsearch更新文档5---局部更新4---官方文档翻译
由于网上没有找到5.5版本的资料,很多资料都是2.x版本的,更新时语法差异较大,所以我这里翻译一下官方文档的这一部分内容。翻译时,示例代码均替换为我实践中的真实代码,这样确保了本文档的准确性。 - 本文版本:5.5 - 官方文档原文路径:Elasticsearch Reference [5.5] » Document APIs » Update API - 官方文档原文地址:点击跳转以下...原创 2018-05-31 16:11:41 · 2202 阅读 · 0 评论 -
18.Elasticsearch更新文档4---局部更新3---restAPI
在 更新整个文档 , 我们已经介绍过 更新一个文档的方法是检索并修改它,然后重新索引整个文档;然而,使用 update API 我们还可以部分更新文档,例如在某个请求时对计数器进行累加(比如博客的被访问次数)。前面介绍过文档是不可变的:他们不能被修改,只能被替换。 update API 必须遵循同样的规则。 从外部来看,我们在一个文档的某个位置进行部分更新。然而在内部, update API ...原创 2018-05-31 15:58:47 · 1532 阅读 · 0 评论 -
17.Elasticsearch更新文档3---局部更新2---脚本更新2
本文讲解一下用脚本如何去修改一个数组的值。我们给此文档新增一个可以有多个值的属性,然后进行脚本操作4.新增字段POST /policy_document/policy_document/222/_update{ "doc": { "tags":["重要"] }}或者用脚本新增POST policy_原创 2018-05-31 14:56:50 · 2084 阅读 · 0 评论 -
16.Elasticsearch更新文档2---局部更新1---脚本更新1
脚本更新,可以对文档进行局部更新,脚本可以在 update API中用来改变 _source 的字段内容, 它在更新脚本中称为 ctx._source 。我们这里尝试用脚本来对_source中的内容来进行更新。1.查询出一个文档GET /policy_document/policy_document/222{ "_index": "policy_document", ...原创 2018-05-30 21:03:13 · 840 阅读 · 0 评论 -
15.Elasticsearch更新文档1---全文更新---restAPI
在 Elasticsearch 中文档是 不可改变 的,不能修改它们。 相反,如果想要更新现有的文档,需要 重建索引 或者进行替换, 我们可以使用相同的 index API 进行实现。1.新增一个文档PUT /policy_document/policy_document/333{ "level":"国家",原创 2018-05-29 21:12:12 · 1060 阅读 · 0 评论 -
14.Elasticsearch索引设置
本文讲解Elasticsearch中的索引级别相关的设置方法:(本文为官方文档翻译:点击进入原文) 在前一篇的分页查询中,很多人在分页页码过大时会遇到一个错误:Result window is too large, from + size must be less than or equal to: [10000] but was [10025].,解决方案请参考:点击进入1.Updat...原创 2018-05-29 20:33:22 · 1370 阅读 · 0 评论 -
13.Elasticsearch查询语句4
本文从简单到复杂,将前面的查询关键字都用起来,并给出在mysql中的语句样式,方便对比理解。1.简单条件查询mysql:SELECT *FROM policy_fileWHERE LEVEL = '国家级'AND web_source = '浙江省人民政府'AND launch_department != '浙江省工商局'Elasticsea...原创 2018-05-29 17:14:31 · 1603 阅读 · 0 评论 -
12.Elasticsearch查询关键字3
本文讲解验证查询目录: - 1._validate - 2.explain - 3.rewrite在使用正常查询时,如下:GET people/user/_search?q=age:27会返回查询结果{ "took": 0, "timed_out": false, "_shards": { &原创 2018-05-25 18:59:56 · 2018 阅读 · 1 评论 -
11.Elasticsearch查询关键字2
本文主要讲解组和查询使用的关键字boolmustmust_notshouldfilterconstant_score 在很多时候,我们不仅仅是根据id来查询某条记录或者某个文档,我们需要进行一系列的筛选和过滤,此时,我们需要把各种条件组和起来,成为一条语句去执行,本文,就是讲如何处理此问题。 目录:1.使用bool组和查询条件2.相关性得分计算方式3.filter过滤查询...原创 2018-05-25 16:55:26 · 2262 阅读 · 0 评论 -
10.Elasticsearch查询关键字1
本文讲解几个查询时常用的关键字:match_all 查询match 查询multi_match 查询range 查询term 查询terms 查询exists 查询和 missing 查询match_all 查询match_all 查询简单的 匹配所有文档。在没有指定查询方式时,它是默认的查询:{ "match_all": {}}它经常与 filter ...原创 2018-05-24 20:51:55 · 7334 阅读 · 0 评论 -
9.Elasticsearch查询与过滤
本文目录:过滤情况(filtering context)查询情况(query context)性能差异如何选择查询与过滤编辑Elasticsearch 使用的查询语言(DSL) 拥有一套查询组件,这些组件可以以无限组合的方式进行搭配。这套组件可以在以下两种情况下使用: - 过滤情况(filtering context) - 查询情况(query context)过滤情...转载 2018-05-24 17:56:41 · 1071 阅读 · 0 评论 -
8.Elasticsearch查询表达式Query DSL
Query DSL查询表达式(Query DSL)是一种非常灵活又富有表现力的 查询语言。 Elasticsearch 使用它可以以简单的 JSON 接口来展现 Lucene 功能的绝大部分。在你的应用中,你应该用它来编写你的查询语句。它可以使你的查询语句更灵活、更精确、易读和易调试。要使用这种查询表达式,只需将查询语句传递给 query 参数:比如前面的空查询,又可以写为:G...原创 2018-05-24 16:58:12 · 2306 阅读 · 0 评论 -
7.Elasticsearch请求体查询
本文目录: - 请求体查询 - 空查询 - from 和size - 注意get请求请求体查询轻量搜索 —query-string search— 对于用命令行进行即席查询(ad-hoc)是非常有用的。 然而,为了充分利用查询的强大功能,你应该使用 请求体 search API, 之所以称之为请求体查询(Full-Body Search),因为大部分参数是通过 Http 请求体...原创 2018-05-24 16:56:38 · 1069 阅读 · 0 评论 -
6.Elasticsearch轻量搜索
轻量搜索有两种形式的 搜索 API: - 一种是 “轻量的” 查询字符串 版本,要求在查询字符串中传递所有的参数 - 另一种是更完整的请求体版本,要求使用 JSON 格式和更丰富的查询表达式作为搜索语言。本文主要讲解这种轻量的搜索。查询字符串搜索非常适用于通过命令行做即席查询。例如,查询在 tweet 类型中 tweet 字段包含 elasticsearch 单词的所有文档:...原创 2018-05-23 17:32:04 · 774 阅读 · 0 评论 -
5.Elasticsearch检索文档
前一篇我们索引(存储)了文档,本篇我们讲解最简单的查询文档,和删除文档。1.根据id查询文档我们执行一个http get请求,指定文档的索引库,类型,id,即可返回此文档GET people/user/1返回结果为:{ "_index": "people", "_type": "user", "_id&a原创 2018-05-23 11:51:34 · 893 阅读 · 0 评论 -
4.Elasticsearch索引文档
本文从索引文档开始,后面逐步讲解索引,搜索,聚合等概念,如果有概念不能理解,可以先照着代码操作,后面会更详细的解释。我们这里创建几个文档,用来存储user信息,在使用mysql时,一条user信息,在user表中可能是一条数据,然后这条数据中会关联其他表的id,这样多张关联表的内容,综合起来,会形成一个完整的user信息。但是在es中,我们可以把所有关于user的信息全部存在一个文档中,以us...原创 2018-05-23 11:34:48 · 808 阅读 · 0 评论 -
3.Elasticsearch面向文档
1.面向文档在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。也许有一天你想把这些对象存储在数据库中。使用关系型数据库的行和列存储,这相当于是把一个表现力丰富的对象挤压到一个非常大的电子表格中:你必须将这个对象扁平化来适应表结构–通常一个字段>对应一列–而且又不得不在每次查询时重新构造对象。Elastics...原创 2018-05-13 12:57:26 · 841 阅读 · 0 评论 -
2.Elasticsearch和Java交互 -- java操作es
本系列主要使用java为主要语言来和Elasticsearch进行交互。1.JAVA API如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端:节点客户端(Node client) 节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。传输客户端...原创 2018-05-13 12:56:32 · 2951 阅读 · 1 评论 -
1.Elasticsearch简介
1.简介Elasticsearch 是一个分布式、可扩展、实时的搜索与数据分析引擎。建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。2.和lucene的关系Lucene 仅仅只是一个库,为了充分发挥其功能,需要使用 Java 并将 Lucene 直接集成到应用程序中,使用起来非常麻烦。Elasticsearch 也是使用 Java 编写的,它的内部使用 Luc...原创 2018-05-13 12:55:29 · 944 阅读 · 0 评论