ES常用命令
2023-10-08 21:30:34 0 举报
AI智能生成
ES常用命令及基础概念
作者其他创作
大纲/内容
介绍
面向文档的
节点、分片和集群
面向运维
分布式
高可用
可扩展
水平扩容
节点
一个ES实例
本质上就是一个JAVA进程
master
默认就是 master-eligible
data node
可以保存ES数据的
coordinating node
分发请求,收集响应
默认的节点类型
分片
主分片
副本分片
主分片的拷贝
提高可用
读取的吞吐
分片设定
分片规划
API
GET _cluster/health
查看集群的健康状况
GET _cat/nodes
GET _cat/shards
cerebro
查看集群状态
索引和文档
面向开发
文档
JSON文档
文档元数据
通用属性
索引
相似文档的集合
index
逻辑空间的概念
shard
物理空间的概念
mapping
定义文档字段类型
settings
定义不同的数据分布
动词
保存一个文档到ES的过程也叫索引(indexing)
Type
7.0之后只能创建 _doc
索引相关API
GET _cat/indices
查看所有索引
GET index_name
查看索引相关信息 mapping settings 等
GET index_name/_mapping
GET movies/_settings
GET index_name/_count
查看索引文档数
倒排索引
目录 - 正排
单词词典
B+树 或 哈希拉链法
倒排列表
文档ID
词频
位置
偏移
高亮显示
指定对某些字段不做索引
分词
Analysis
Analyzer
三个组件
character filter
字符处理 例如:去掉HTML标签
tokenizer
单词切分 例如:特殊字符分隔
token filters
切分后的词的处理 例如:lowercase
_analyzer API
测试分词器怎么工作
测试文档的某个字段使用的什么分词, 什么效果
自定义分词器各个步骤进行分词实验
分词器
standard
simple
whitespace
stop
keyword
pattern
默认 \W+
中文分词
切分成一个一个词
不同的上下文
中文分词器
ICU
IK
支持自定义词库
THULAC
与关系型数据库的类比
index -- table
doc -- row
field -- column
mapping -- schema
DSL -- SQL
文档API
单个操作
create
POST index_name/_create/1
指定ID ,已有报错
不指定ID
index
PUT index_name/_doc/1
与create的区别,如果文档不存在就创建, 否则删除现有文档,新的文档被索引, 版本 +1
update
POST index_name/_update/1
payload 包含在 doc 中
get
GET index_name/_doc/1
批量操作
bulk API
一次调用,对不同索引进行不同操作
mget API
msearch API
不要一次发送过多的数据
常见错误
搜索
索引搜索
/index_name/_search
/index_name,index_name1/_search
/index*/_search
URI Search
GET 查询参数
/index_name/_search?q=fieldName:fieldValue
指定字段 vs 泛查询
q=title:2012
q=2012,且不指定df
Term vs Phrase
Term 默认是 OR, 可以用 AND 连接强制走与,没有顺序关系
Phrase 是 AND,词有顺序关系,可以设置间隔长度
多个Term逻辑关系
AND
OR
NOT
+(%2B)
MUST
-
MUST NOT
> 和 <
通配符
正则
Request Body Search
QueryDSL
from、size 分页
sort 排序
source filter
设置只返回部分字段
脚本字段
painless 脚本生成新的字段
match query
Match
Match Phrase
query_string
query_string
simple_query_string
搜索相关性 relevance
google page rank
结果的可信度
衡量相关性
precision
尽可能少的返回不相关的
recall
查准率
配置
Mapping AND dynamic Mapping
定义名称和类型
几种类型
Dynamic Mapping 创建文档时没有指定类型
类型更改 reindex
dynamic 值设置
定义mapping
PUT
set index false
设置默认空值
null_able
copy_to
合并查询
数组
多字段类型
精确值 vs 全文本
Index Template
帮助你设定 mapping 和 settings
多个模板按照 order 排序,大的后应用, 后应用的覆盖先应用的
最后应用创建索引时的设置
Dynamic Template
settings
自定义分词器
Character filters
HTML strip
Mapping
正则
影响倒排索引的 positon, offset
Tokenizer
Token Filters
分片配置
数据分析
Aggregation
Bucket
高档、中档、抵挡
group
Mstric
Pipeline
Matrix
实例
#### 1_group_by_name 按 term 分组
#### 1_1_group_by_name_stats_age 按term分组下,嵌套属性统计
#### 2_avg_age 按 field 取平均
#### 3_stats_age 属性统计
GET mydoc/_search
{
"size": 0,
"aggs": {
"1_group_by_name": {
"terms": {
"field":"name.keyword"
},
"aggs": {
"1_1_group_by_name_stats_age": {
"stats": {
"field": "age"
}
}
}
},
"2_avg_age":{
"avg": {
"field": "age"
}
},
"3_stats_age":{
"stats": {
"field": "age"
}
}
}
}
#### 1_1_group_by_name_stats_age 按term分组下,嵌套属性统计
#### 2_avg_age 按 field 取平均
#### 3_stats_age 属性统计
GET mydoc/_search
{
"size": 0,
"aggs": {
"1_group_by_name": {
"terms": {
"field":"name.keyword"
},
"aggs": {
"1_1_group_by_name_stats_age": {
"stats": {
"field": "age"
}
}
}
},
"2_avg_age":{
"avg": {
"field": "age"
}
},
"3_stats_age":{
"stats": {
"field": "age"
}
}
}
}
#### 限定数据范围后聚合
GET mydoc/_search
{
"query":{
"match": {
"name": "wzl"
}
},
"size": 0,
"aggs": {
"name_bucket": {
"terms": {
"field":"name.keyword"
}
},
"avg_age":{
"avg": {
"field": "age"
}
},
"stats_age":{
"stats": {
"field": "age"
}
}
}
}
GET mydoc/_search
{
"query":{
"match": {
"name": "wzl"
}
},
"size": 0,
"aggs": {
"name_bucket": {
"terms": {
"field":"name.keyword"
}
},
"avg_age":{
"avg": {
"field": "age"
}
},
"stats_age":{
"stats": {
"field": "age"
}
}
}
}
0 条评论
下一页