ElasticSearch 安装与入门
入门安装
坑点:
- linux内存要预留够,不然进程会挂,elasticsearch建议内存要512m,kibana同
- 安装
<font style="color:rgb(199, 37, 78);background-color:rgb(249, 242, 244);">Kibana</font>
的版本一定要跟ElaticSearch的版本是一样的,这样才不会容易出问题
参考文档
- 【Docker容器】Docker安装Kibana详细步骤(看完这一篇就够啦!)-CSDN博客
- https://b11et3un53m.feishu.cn/wiki/WtCmwJQQDijsBikYLviceT9lnke#INaSdYp6bo5IZfxLQ5lcMud7nph
使用docker部署
记得kibana的ELASTICSEARCH_HOSTS设置
1 | //es |
基本概念
ES同mysql进行对比来学习
MySQL | Elasticsearch | 说明 |
---|---|---|
Table | Index | 索引(index),就是文档的集合,类似数据库的表(table) |
Row | Document | 文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式 |
Column | Field | 字段(Field),就是JSON文档中的字段,类似数据库中的列(Column) |
Schema | Mapping | Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema) |
SQL | DSL | DSL是elasticsearch提供的JSON风格的请求语句,用来操作elasticsearch,实现CRUD |
ES的语法都是基于http请求和json
- 创建、修改PUT
- 修改POST
- 获取GET
- 修改PUT
- 删除DELETE
es的数据结构是基于Index索引库,其内一个个字段含义与mysql的colomn差不多
Index(索引库)基本语法
type:字段数据类型,常见的简单类型有:
- 字符串:
text
(可分词的文本)、keyword
(精确值,例如:品牌、国家、ip地址) - 数值:
long
、integer
、short
、byte
、double
、float
、 - 布尔:
boolean
- 日期:
date
- 对象:
object
新建索引
1 | PUT /user(索引名) |
获取索引
1 | GET /索引库名 |
更新索引库信息
要点:只能添加字段,不能修改、删除字段,更新成功返回的是UPDATED
1 | PUT /索引库名 |
删除索引库
1 | DELETE /索引库名 |
Doc基本语法
无非是增删查改
新增文档
1 | POST /索引库名/_doc/文档id |
1 | POST /heima/_doc/1 |
更新文档
更新文档分为全量更新和根据字段更新,全量更新就是覆盖旧的文档,字段更新就是只更新写的字段
1 | POST /索引库名/_doc/文档id |
1 | PUT /索引库名/_update/文档id |
获取文档
1 | GET /索引库名/_doc/文档id |
删除文档
1 | DELETE /索引库名/_doc/文档id |
批处理
批处理采用POST请求
- 添加index,create
- _index: 索引库名
- _id: 文档id
- filed: 字段名
- value: 值
- 删除delete
- _index: 索引库名
- _id: 文档id
- 更新update
- _index: 索引库名
- _id: 文档id
- filed: 更新字段名
- value: 更新值
基本语法如下:
1 | POST _bulk |
DSL查询
叶子查询
语法为GET /索引库名/_search
- 全文检索查询(分词)
- match_all 查询全部
- match 根据输入内容分词搜索
- 精确查询
- term 按字段查询
- ids 给定id列表
- range 数值范围
- 地理查询
- geo_bounding_box:按矩形搜索
- geo_distance:按点和半径搜索
全文检索
1 | GET /{索引库名}/_search |
精确查询
1 | GET /{索引库名}/_search |
1 | GET /{索引库名}/_search |
range: gt大于,lt小于,gte大于等于,lte小于等于
1 | GET /{索引库名}/_search |
地理查询
不会,先不写
复合查询
复合查询大致可以分为两类:
- 第一类:基于逻辑运算组合叶子查询,实现组合条件,例如
- bool
- 第二类:基于某种算法修改查询时的文档相关性算分,从而改变文档排名。例如:
- function_score
- dis_max
其它复合查询及相关语法可以参考官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/7.12/compound-queries.html
bool
bool可以填写的内容为:
- must,必须满足,相当于and
- should,可以满足,相当于或
- must not,必须不满足,不参与算分
- filter 过滤,必须匹配,不参与算分,筛选条件用这个
语法
1 | GET /items/_search |
算分函数查询
现在用不到,先跳过
数据聚合
聚合常见的有三类:
- 桶(
**Bucket**
)聚合:用来对文档做分组TermAggregation
:按照文档字段值分组,例如按照品牌值分组、按照国家分组Date Histogram
:按照日期阶梯分组,例如一周为一组,或者一月为一组
- 度量(
**Metric**
)聚合:用以计算一些值,比如:最大值、最小值、平均值等Avg
:求平均值Max
:求最大值Min
:求最小值Stats
:同时求max
、min
、avg
、sum
等
- 管道(
**pipeline**
)聚合:其它聚合的结果为基础做进一步运算
注意:参加聚合的字段必须是keyword、日期、数值、布尔类型
桶聚合
1 | GET /{索引库名}/_search |
过滤聚合数据
要给聚合数据加条件的话加个query
1 | GET /{索引库名}/_search |
度量聚合
当桶运算把数据聚合到一起后就可以用Metric聚合把数据进行运算
Avg
:求平均值
Max
:求最大值
Min
:求最小值
Stats
:同时求max
、min
、avg
、sum
等
1 | GET /{索引库名}/_search |
- Title: ElasticSearch 安装与入门
- Author: 自牧
- Created at : 2024-08-26 20:08:36
- Updated at : 2025-04-14 15:38:30
- Link: https://www.zimucode.top/2024/08/26/ElasticSearch/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments