文档章节

Elasticsearch技术解析与实战--序

赛克蓝德
 赛克蓝德
发布于 2017/01/19 08:27
字数 2168
阅读 285
收藏 1

  Elasticsearch是目前全球最受欢迎的全文搜索引擎。初识Elasticsearch是在2012年的一个项目中,当时Elasticsearch还是0.19.0版本,但是功能已经比较强大,只是接口稍微有点复杂。到了2015年年初,公司开发了一款日志分析产品,它实时不间断地采集用户网络中各种不同系统的日志,然后从中分析系统的安全情况、系统情况、业务情况。最初所有的数据都存储在MySQL中,随着日志的不断增加,MySQL搜索速度越来越慢。后来在更换技术架构选型的时候又想到了Elasticsearch,这个时候Elasticsearch已经是1.6.0版本了。我们对此进行了简单的测试,在上亿条的数据搜索中很多都在一秒内完成,在上亿条的数据中进行统计分析大多也是在秒级完成,它展示了强大实力。我们顺势就把Elasticsearch整合到了现在的产品中,取得了很好效果。到了2016年3月的时候,Elasticsearch发布了2.3.0版本,各方面更加成熟,我们的产品又再一次升级到这个新版本上。
  Elasticsearch产品的更新变化非常快,在我们开发研究的过程中基本上找不到新版本的中文资料,目前市场上介绍Elasticsearch的中文书籍都是在版本1.0左右,甚至更早,这些书的很多内容尤其是开发接口相关的部分都已经过时,没有办法在新版本中使用。所以我们开发的过程中基本上都是研究官方文档,有时候甚至研究它的源码才能解决问题。在接口选择的时候我们在HTTP JSON接口和Java接口中做了取舍,我们当时分析HTTP JSON接口最终还是要转换成Java接口,不如直接使用Java接口,一是效率可能更高,二是在部署实施的时候减少一个端口,三是对后续的升级更有利,比如后续增加权限认证等。但这些东西都没有资料,我们基本上都是研究系统源码来克服的。在后续研究过程中,我们发现HTTP接口转换到Java接口是有规律的,所以对HTTP接口的掌握对后续Elasticsearch的开发和扩展也有很大的帮助。在持续研究的过程中,我们积累了大量经验,并想把这些经验分享给更多需要的人。后来我把这个想法给出版社的吴怡编辑做了沟通,她非常支持我们的想法,便有了这本书。
  本书首先介绍Elasticsearch的相关基础知识,然后由浅入深地介绍Elasticsearch索引查询相关的知识,包括索引、映射、搜索、聚合,接着介绍Elasticsearch的集群、分词、重要的配置等高级功能,以及Elasticsearch相关的其他产品,包括告警、监控、权限管理,最后通过一个ELK示例结束本书。在写作的时候考虑到读者的接受能力,由浅入深地进行讲解,建议读者从前往后阅读。
  本书主要内容包括:
  第1章“Elasticsearch入门”,介绍Elasticsearch是什么、Apache Lucene的基础知识、Elasticsearch的术语、JSON介绍、Elasticsearch的安装运行、Elasticsearch的HTTP接口和Elasticsearch的Java API接口。
  第2章“索引”,介绍和Elasticsearch索引相关的接口,包括索引管理、索引映射管理、索引别名、索引设置、索引监控、索引其他重要接口以及文档管理。
  第3章“映射”,介绍Elasticsearch文档的内部结构,Elasticsearch支持的字段类型,除此之外,本章还将展示Elasticsearch内置的元字段,映射的参数和动态映射功能。
  第4章“搜索”,详细介绍和搜索相关的知识,包括搜索的详细参数,搜索的评分机制、滚动查询、系统内部隐藏内容的查询、搜索模板等;接着介绍Elasticsearch的领域查询语言DSL(Domain-specific Language)相关的知识点;最后介绍Elasticsearch的精简查询接口。
  第5章“聚合”,聚合可以对文档中的数据进行统计汇总、分组等,通过聚合可以完成很多的统计功能,该章介绍聚合相关的知识,包括度量聚合、分组聚合和管道聚合。
  第6章“集群管理”,详细介绍和集群相关的内容,包括集群的监控、集群分片迁移、集群的节点配置、集群发现、集群平衡的原理和配置。
  第7章“索引分词器”,介绍Elasticsearch的分词器和分词的原理,以及如何添加新的分词器等;还介绍Elasticsearch的插件相关知识,包括插件安装等。
  第8章“高级配置”,介绍Elasticsearch的高级配置,包括网络配置、脚本配置、快照和恢复配置、线程池配置和索引配置。
  第9章“告警、监控和权限管理”,介绍Elasticsearch官方支持的几个比较好的插件:Watcher、Marvel、Shield,它们可以对Elasticsearch进行告警、监控和权限管理。
  第10章“ELK应用”,介绍Elasticsearch与另外两个产品Logstash和Kibana如何组合使用,Logstash是对日志进行收集和处理,Kibana是对存储在Elasticsearch中的索引进行展示和报表分析;最后通过一个简单的示例来介绍ELK几个产品是如何关联的。
  在编写本书的时候,Elasticsearch的最新版本是2.2.0,但本书准备正式出版的时候,Elasticsearch发布了最新的5.0版本。所以本书增加了一个附录专门介绍5.0版本的特性与改进。本书前面的部分截图是2.2.0版本的,书中所有的例子和功能都可以在Elasticsearch 2.3.3下运行,大部分的功能都可以在5.0下运行,详细的新版本差别请参考附录部分。本书中的例子大部分都是HTTP接口的,这些接口的测试使用了Elasticsearch Head插件。如果你想使用另一种工具,请注意修改HTTP请求的格式和编码,以便适合你所选择的工具。书中例子的结构大多是JSON格式,美化后的JSON格式比较容易阅读,但美化后的JSON格式比较长,所以我们在不影响阅读的情况下,对美化后的格式做了简单调整。书中还有一小部分是Java接口,我们在实验时用的是Eclipse工具,其他主流的Java开发工具都适用。
  本书的目标读者是对全文检索和Elasticsearch有兴趣的读者,如果你是一个初学者,通过本书你将学到Elasticsearch的基础知识,以及如何使用一些高级功能。如果你已经知道并使用了Elasticsearch但又想深入了解其本身,想了解如何改进查询相关性,如何使用Elasticsearch Java API等,也会发现本书的实用性。
  由于时间紧,能力有限,编写的过程中难免有不当之处,还请各位读者不吝指出。
  致谢
  在此,首先我想感谢我的家庭,多年以来,因为工作关系我照顾他们太少,他们为我付出太多;我在全身心投入本书写作的时候,他们同样表现出了极大的耐心,是我最坚强的后盾。
  其次还要感谢赛克蓝德公司以及公司的同事:周忠立、万荣慧和夏海华,是他们的辛勤工作才完成本书的编写工作,尤其是周忠立在很多章节的编写上贡献了很多的内容;同时要感谢本书的出版团队,尤其是吴怡编辑,写书是件非常艰巨的任务,很多内容需要反复推敲才能表达准确的意思,吴怡在检查错误、校稿、消除表达歧义等方面做出了很多贡献。

  最后,非常诚挚地感谢所有Elasticsearch项目的创建者和开发者,感谢他们杰出的工作和对开源项目的热情。没有他们,就没有本书的诞生,没有他们,开源搜索引擎就不会有现在这种活力。再次感谢!

在京东,天猫,当当,china-pub

© 著作权归作者所有

赛克蓝德
粉丝 295
博文 119
码字总数 148992
作品 2
南京
高级程序员
私信 提问
ES(elasticsearch)搜索引擎

ES(elasticsearch)搜索引擎 0、授人以渔,少走半年弯路! 死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招! 一、Elasitcsearch基础篇 1.1 Elasitcsearch基础认知 1、Elasticse...

Ocean_K
2018/09/11
0
0
死磕 Elasticsearch 方法论序篇:普通程序员高效精进的 10 大狠招!|MVP讲堂

作者:阿里云MVP 铭毅 开篇 人工智能、大数据快速发展的今天,对于 TB 甚至 PB 级大数据的快速检索已然成为刚需。Elasticsearch 作为开源领域的后起之秀,从2010年至今得到飞跃式的发展。 El...

辰悠
2018/12/14
0
0
ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

丁威
03/10
0
0
Elastic 南京 Meetup

1. 主办方 Elastic中文社区 趋势科技 2. 时间地点 活动时间:2018年6月30日 13:00 - 18:00 活动地点:雨花区软件大道48号苏豪国际广场B座 趋势科技中国研发中心(靠花神庙地铁站) 3. 报名地...

Medcl
2018/06/04
69
0
Elastic Search原理简述

一、Elastic Search概述: 1.1 Elastic Search 简介 Elastic Search(ES)是一个基于Lucene构建的开源、分布式、RESTFul接口全文搜索引擎。ES还是一个分布式文档库,其中每个字段均是被索引的...

zhglance
02/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

texlive安装

Installing to: D:/bin/texlive/texlive/2019Installing [001/307, time/total: ??:??/??:??]: adobemapping [2130k]Installing [002/307, time/total: 00:03/08:57]: ae [84k]Installing......

MtrS
32分钟前
2
0
运维规范

命名规范 发布流程 监控告警 故障定位 状态 日志 监控

以谁为师
今天
2
0
约瑟夫环(报数游戏)java实现

开端 公司组织考试,一拿到考题,就是算法里说的约瑟夫环,仔细想想 以前老师将的都忘了,还是自己琢磨把~ package basic.gzy;import java.util.Iterator;import java.util.LinkedList;...

无极之岚
今天
3
0
Kernel字符设备驱动框架

Linux设备分为三大类:字符设备,块设备和网络设备,这三种设备基于不同的设备框架。相较于块设备和网络设备,字符设备在kernel中是最简单的,也是唯一没有基于设备基础框架(device结构)的...

yepanl
今天
3
0
Jenkins 中文本地化的重大进展

本文首发于:Jenkins 中文社区 我从2017年开始,参与 Jenkins 社区贡献。作为一名新成员,翻译可能是帮助社区项目最简单的方法。 本地化的优化通常是较小的改动,你无需了解项目完整的上下文...

Jenkins中文社区
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部