1. Lucene

Lucene 是一个开源、免费、高性能、纯Java 编写的全文检索引擎,可以算作是开源领域最好的全文检索 工具包

2. ElasticSearch

ElasticSearch (以下简称es)是一个分布式、可扩展、近实时性的高性能搜索与数据分析引擎。ElasticSearch 基于 Java 编写,通过进一步封装 Lucene,将搜索的复杂性屏蔽起来,开发者只需要一套简单的 RESTful API 就可以操作全文检索。

整体上来说,ElasticSearch 有三大功能:

  • 数据搜集
  • 数据分析
  • 数据存储

ElasticSearch 的主要特点:

  1. 分布式文件存储
  2. 实时分析的分布式搜索引擎
  3. 高可拓展性
  4. 可插拔的插件支持

3. 软件安装(Windows版)

3.1 es安装

es官网下载地址:https://www.elastic.co/cn/downloads/elasticsearch
选好对应的版本

如果下载很慢的话,可以用华为的下载地址

ElasticSearch:https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D

logstash:https://mirrors.huaweicloud.com/logstash/?C=N&O=D

kibana:https://mirrors.huaweicloud.com/kibana/?C=N&O=D

es测试连接 es性能测试工具_数据


下载好之后进行解压:

es测试连接 es性能测试工具_elasticsearch_02


目录解释:

目录

含义

bin

可执行文件目录

config

可执行文件目录

data

数据存储目录

jdk

jdk目录

lib

第三方依赖库

logs

输出日志目录

modules

依赖模块目录

plugins

插件目录

在bin目录下直接双击elasticsearch.bat 即可运行

es测试连接 es性能测试工具_es测试连接_03


然后浏览器访问localhost:9200 如果访问成功及启动成功(默认端口就是9200

然后可以看到主机名,集群名,es版本等相关信息

es测试连接 es性能测试工具_数据_04


打开 config/elasticsearch.yml 文件,可以配置集群名称以及节点名称。配置方式如下:

#如果没有配置 则默认是elasticsearch
cluster.name: my-application 
node.name: node-1

3.2 HEAD 插件安装

head插件:可以通过可视化的方式查看集群信息

下载插件:

  1. 插件地址:git clone git://github.com/mobz/elasticsearch-head.git
  2. 解压到指定目录
  3. es测试连接 es性能测试工具_es测试连接_05

  4. 进入目录之后在地址栏打开cmd窗口
  5. es测试连接 es性能测试工具_es测试连接_06

  6. 指定 npm install 命令
  7. 执行 npm run start 命令即可启动

然后在浏览器中输入 localhost:9100 即可查看

但是,此时看不到集群数据。原因在于这里通过跨域的方式请求集群数据的,默认情况下,集群不支持跨域,所以这里就看不到集群数据。
解决办法如下,修改 es 的 config/elasticsearch.yml 配置文件,添加如下内容,使之支持跨域:

#开启跨域访问
http.cors.enabled: true 
 #允许所有设备访问
http.cors.allow-origin: "*"

配置完成后,重启 es,此时 head 上就有数据了。

3.3 Kibana安装

Kibana 是一个 Elastic 公司推出的一个针对 es 的分析以及数据可视化平台,可以搜索、查看存放在 es 中的数据。

  1. 下载地址:https://www.elastic.co/cn/downloads/kibana
  2. 解压到指定目录
  3. 配置 es 的地址信息(可选,如果 es 是默认地址以及端口,可以不用配置,具体的配置文件是 config/kibana.yml)
  4. bin目录下启动kibana.bat文件
  5. localhost:5601访问
  6. 正常情况界面是英文的,可以在配置文件中kibana.yml最后添加 i18n.locale: “zh-CN” 进行汉化
i18n.locale: "zh-CN"

es测试连接 es性能测试工具_es测试连接_07

4 es核心概念介绍

4.1 es十大核心概念

4.1.1 集群(cluster)

一个或者多个安装了 es 节点的服务器组织在一起,就是集群,这些节点共同持有数据,共同提供搜索服务。
一个集群有一个名字,这个名字是集群的唯一标识,该名字成为 cluster name,默认的集群名称是 elasticsearch,具有相同名称的节点才会组成一个集群。
可以在 config/elasticsearch.yml 文件中配置集群名称:
cluster.name: xxx

在集群中,节点的状态有三种:绿色、黄色、红色:

  • 绿色:节点运行状态为健康状态。所有的主分片、副本分片都可以正常工作。
  • 黄色:表示节点的运行状态为警告状态,所有的主分片目前都可以直接运行,但是至少有一个副本分片是不能正常工作的。
  • 红色:表示集群无法正常工作。

4.1.2 节点(Node)

集群中的一个服务器就是一个节点,节点中会存储数据,同时参与集群的索引以及搜索功能。一个节点想要加入一个集群,只需要配置一下集群名称即可。默认情况下,如果我们启动了多个节点,多个节点还能够互相发现彼此,那么它们会自动组成一个集群,这是 es 默认提供的,但是这种方式并不可靠,有可能会发生脑裂现象。所以在实际使用中,建议一定手动配置一下集群信息。

4.1.3 索引(Index)

具有相似特征文档的集合
可以理解成关系型数据库中的库

4.1.4 类型(Type)

类型是索引上的逻辑分类或者分区。在 es6 之前,一个索引中可以有多个类型,从 es7 开始,一个索引中,只能有一个类型。在 es6.x 中,依然保持了兼容,依然支持单 index 多个 type 结构,但是已经不建议这么使用。

类型可以理解成关系型数据库中的表

4.1.5 文档(Document)

一个可以被索引的数据单元。例如一个用户的文档、一个产品的文档等等。文档都是 JSON 格式的。

文档可以理解成关系型数据库中的行记录

4.1.6 分片(Shards)

索引都是存储在节点上的,但是受限于节点的空间大小以及数据处理能力,单个节点的处理效果可能不理想,此时我们可以对索引进行分片。当我们创建一个索引的时候,就需要指定分片的数量。每个分片本身也是一个功能完善并且独立的索引。
默认情况下,一个索引会自动创建 1 个分片,并且为每一个分片创建一个副本。

4.1.7 副本(Replicas)

副本也就是备份,是对主分片的一个备份。

4.1.8 Settings

集群中对索引的定义信息,例如索引的分片数、副本数等等。

4.1.9 Mapping

Mapping 保存了定义索引字段的存储类型、分词方式、是否存储等信息。

4.1.10 Analyzer

字段分词方式的定义。

4.1 ES Vs 关系型数据库

ES

关系型数据库

索引

数据库

类型


文档


字段


映射(Mapping)

表结构

DSL

SQL

GET http://

select * from xxx

PUT http://

update xxx set xx=xx

DELETE http://

delete xxx

全文索引

索引

5. ES分词器

5.1 内置分词器

ES核心功能就是数据检索.

查询主要分为两个步骤:

  1. 词条化:分词器将输入的文本转为一个一个的词条流。
  2. 过滤:比如停用词过滤器会从词条中去除不相干的词条(的,嗯,啊,呢);另外还有同义词过滤器、小写过滤器等。

ES中内置的分词器有:

分词器

作用

Standard Analyzer

标准分词器,适用于英语

Simple Analyzer

简单分词器,基于非字母字符进行分词,单词会被转为小写字母

Whilespace Analyzer

空格分词器,按照空格进行切分

Stop Analyzer

类似于简单分词器,但是增加了停用词的功能

keyword Analyzer

关键词分词器,输入文本等于输出文本(即不可切分)

Pattern Analyzer

利用正则表达式对文本进行切分,支持停用词

Language Analyzer

针对特定语言的分词器

Fingerprint Analyzer

指纹分析仪分词器,通过创建标记进行重复检测

5.2 中文分词器

5.2.1 下载安装

比较常用的中文分词器是ik 分词器
ik分词器是一个插件,
下载地址:https://github.com/medcl/elasticsearch-analysis-ik

安装方式也是非常简单的,

把ik分词器插件解压到plugins目录下就可以了

最好在plugins下建一个ik目录

es测试连接 es性能测试工具_数据_08


最终效果如图所示:

es测试连接 es性能测试工具_分词器_09


然后重启即可。

5.2.2 自定义扩展词库

在ik分词器config目录下新建xxx.dic,在改文件中可以配置自定义的词典

es测试连接 es性能测试工具_elasticsearch_10


配置好词库之后,在IKAnalyzer.cfg.xml 文件中配置扩展词典的位置

es测试连接 es性能测试工具_分词器_11


重启ES。