ElasticSearch基础知识

ElasticSearch的安装与启动

配置ElasticSearch支持跨域:config/elasticsearch.yml

1
2
http.cors.enabled: true
http.cors.allow-origin: "*"

下载或在Google Chrome中添加ElasticSearch Head 插件,用于连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理。
启动ElasticSearch后,进行连接测试:

ElasticSearch核心概念

elasticsearch是面向文档的。
indices索引类似于关系型数据库中的数据库,默认将索引划分为多个分片,每个分片可以在集群中的不同的服务器之间进行迁移;一个分片就是一个Lucene索引,一个包含倒排索引的文件目录,有利于全文搜索。
document文档类似于关系型数据库中的,索引和搜索的基本单位就是文档,就是一条条json数据;
fields类似于关系型数据库中的字段
type类似于数据库中的表 (慢慢被废弃)。

ELK的简介

ELK是ElasticSearch、Logstash、Kiban三大开源框架的简称,一般用于日志的分析和收集等场景。
ElasticSearch是基于Lucene的分布式搜索引擎。
Logstash是ELK的中央数据流引擎,用于从不同目标(文件、MQ)中收集不同格式数据,经过过滤后输出到目的地(文件、MQ、reids、elasticsearch等)。
Kibana可将ElasticSearch中的数据进行友好的展示,并提供实时的分析功能。

Kibana的安装启动

启动ElasticSearch后,再启动Kibanna后访问http://localhost:5601

安装IK分词器

下载完成后解压到elasticsearch的plugins目录下即可。

在kibana的控制台进行测试:

最小切分 ik_smart

1
2
3
4
5
GET _analyze
{
"analyzer": "ik_smart",
"text": "今天是平安夜"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"tokens" : [
{
"token" : "今天是",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "平安夜",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 1
}
]
}

最细粒度划分 ik_max_word

1
2
3
4
5
GET _analyze
{
"analyzer": "ik_max_word",
"text": "今天是平安夜"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{
"tokens" : [
{
"token" : "今天是",
"start_offset" : 0,
"end_offset" : 3,
"type" : "CN_WORD",
"position" : 0
},
{
"token" : "今天",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 1
},
{
"token" : "是",
"start_offset" : 2,
"end_offset" : 3,
"type" : "CN_CHAR",
"position" : 2
},
{
"token" : "平安夜",
"start_offset" : 3,
"end_offset" : 6,
"type" : "CN_WORD",
"position" : 3
},
{
"token" : "平安",
"start_offset" : 3,
"end_offset" : 5,
"type" : "CN_WORD",
"position" : 4
},
{
"token" : "夜",
"start_offset" : 5,
"end_offset" : 6,
"type" : "CN_CHAR",
"position" : 5
}
]
}

在ik分词器的config目录下可以自定义字典,并进行配置

Restful

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

一句话描述:URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。

ElasticSearch基本操作

1、创建索引并添加文档
PUT /索引名/类型名/文档id {请求体}

发送请求完成后,就创建了一条索引:

2、设置映射规则(字段类型)

3、获取索引信息:GET /test2

4、查看所有索引的信息:GET _cat/indices?v

5、修改索引中的文档
POST /test3/_doc/1/_update {"doc":{"name":"zhangyuzhen"}}

6、删除索引:DELETE /test3

7、获取文档
创建索引并添加几条文档:

获取第一条文档数据: GET /test/user/1

指定条件获取数据:GET /test/user_search?q=name:lisi

复杂搜索:

条件匹配与结果过滤:

排序与分页:

bool多条件查询:

过滤器:

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于

精确查询:
term,直接通过倒排索引指定的词条进行精确查找。
match,使用分词器解析。

keyword类型不会被分词器解析

查询关键字高亮: