Elasticsearch入门,看这篇就够了
我将会从下面四个方面去介绍 Elasticsearch。
目录
一、Elasticsearch是什么?
二、Elasticsearch全文检索的原理是什么?
三、Elasticsearch的核心数据类型有哪些?
四、怎么判断搜索准确性?
一、Elasticsearch是什么?
Elasticsearch是一个实时的分布式搜索分析引擎,它可以使你以前所未有的速度和规模,去探索你的数据。
它被用来做全文检索,结构化搜索,分析以及这三个功能的组合:
- Wikipedia使用Elasticsearch提供了高亮片段的全文搜索,还有search-as-you-type和did-you-mean的建议。
- 卫报使用Elasticsearch将其社交媒体提供给公众有关新文章的实时反馈。
- Stack Overflow将定位查询整合到全文检索中去,并使用more-like-this接口去查找相关的问题和回答。
- GitHub使用Elasticsearch对1300亿行代码进行查询。
(这是官方的简介)
ES的生态圈
ES生态圈主要包含这几个好基友。
ES的用途
(1)用作搜索系统数据存储
- 应用程序将数据写入到mysql或其他数据库当中
- mysql把数据同步到ES中
- 应用程序查询数据时,从ES中搜索数据
(2)用作日志分析
- 日志通过kafka传到Logstash进行日志数据聚合
- Logstash将日志存储到ES中
- 通过Grafna或者Kibana对数据进行监控和分析
ES的特点和优势
- 分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到
- 实时分析的分布式搜索引擎,分布式,索引拆分成多个分片,集群中的数据节点可以承载一个或多个分片,并且协调和处理各种操作,负载再平衡和路由大多数情况下自动完成。
- 可以扩张到上百台服务器,处理PB级别的结构化和非结构化数据,也可以运行在单台PC上。
- 支持插件机制,分词插件、同步插件、Hadoop插件、可视化插件。
几个重要概念
文档
- Elasticsearch 是面向文档的,文档是所有可搜索数据的小单位
- Elasticsearch里面的文档是以 JSON 的格式保存。
- 每个文档都有一个的 Doc ID
文档相当于关系型数据库的一行记录
举例:下图的JSON格式数据就是一个文档
索引(index)
索引是文档的容器,是一类文档的集合
索引需要定义Mapping和Settings
- Mapping定义文档字段的类型
- Settings定义不通的字段分布,比如说你的索引需要多少个分片
索引相当于关系型数据库的一个表
举例:下面的结构是一个索引
分词
分词是把全文本转换成一系列单词的过程。
分词器是处理分词的模块。
分词器的处理过程可以分为三个步骤:
- Character Filters 处理原始文本,比如说去除html标签
- Tokenizer 按照一些规则,将文本切分成一个个单词
- Token Filters 将切分后的单词进行加工,例如:单词转小写、过滤停用词、增加同义词等
处理中文分词的第三方插件:analysis-icu、IK、THULAC
安装 analysis-icu 插件的方式
elasticsearch-plugin install analysis-icu
相关文章