elasticsearch7相关的知识及kibana操作整理
refresh APIes索引有个刷新频率的概念,默认貌似1s一次我们可以根据需要来设置,如果批量倒数期间可以设置长点或者关闭自动刷新并设置刷新间隔注意:一个绝对值1表示的是1毫秒--无疑会使你的集群陷入瘫痪。#设置自动刷新60sPUT /test-logstash-index-tank/_settings{"refresh_interval": "60s"}关闭自动刷新PUT /test-log
官方文档:7.10 :Getting started with Elasticsearch | Elasticsearch Guide [7.10] | Elastic
以下内容为学习工作汇总,关键问题的汇总。
创建索引并设置分片数
参照:elasticsearch 分片(Shards)的理解_云中鲸的博客-CSDN博客_elasticsearch 分片
创建 IndexName 索引时候,在 Mapping 中可以如下设置分片 (curl)
PUT indexName
{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}
注意
索引建立后,分片个数是不可以更改的
建议:(仅参考)
1、每一个分片数据文件小于30GB
2、每一个索引中的一个分片对应一个节点
3、节点数大于等于分片数
根据建议,至少需要 10 个分片。
结果: 建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据小于30G左右。
创建索引及mapping
mapping部分可以不写,只写PUT /my-index-000001创建索引,等数据插入的时候es会自动匹配数据类型来创建mapping。
mapping 部分可以参考:ES Mapping设置及常见参数设置 - 简书
PUT /my-index-000001
{
"mappings": {
"properties": {
"age": { "type": "integer" },
"email": { "type": "keyword" },
"name": { "type": "text" }
}
}
}
refresh API
es索引有个刷新频率的概念,默认貌似1s一次我们可以根据需要来设置,如果批量倒数期间可以设置长点或者关闭
自动刷新并设置刷新间隔
注意:一个绝对值 1 表示的是 1毫秒 --无疑会使你的集群陷入瘫痪。
#设置自动刷新60s
PUT /test-logstash-index-tank/_settings
{
"refresh_interval": "60s"
}
关闭自动刷新
PUT /test-logstash-index-tank/_settings
{
"refresh_interval": -1
}
手动刷新:
//刷新(Refresh)所有的索引。
POST /_refresh
//只刷新(Refresh) test-logstash-index-tank索引
POST /test-logstash-index-tank/_refresh
滚动索引
索引名称符合日期算式格式
#/<elasticsearch-logger-global-rollover-{now/d}-000001>
# 创建格式为elasticsearch-logger-global-rollover-{now/d}-000001的索引别名为elasticsearch-logger-global-rollover
PUT /%3celasticsearch-logger-global-rollover-%7bnow%2fd%7d-000001%3e
{
"aliases": {
"elasticsearch-logger-global-rollover": {}
}
}
# 响应成功
{
"acknowledged" : true,
"shards_acknowledged" : true,
"index" : "elasticsearch-logger-global-rollover-2023.02.17-000001"
}
设置滚动条件
# 例如设置时间7天,文档数1000万,先到为准新建
POST /elasticsearch-logger-global-rollover/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 10000000
}
}
# 响应成功
{
"acknowledged" : false,
"shards_acknowledged" : false,
"old_index" : "elasticsearch-logger-global-rollover-2023.02.17-000001",
"new_index" : "elasticsearch-logger-global-rollover-2023.02.17-000002",
"rolled_over" : false,
"dry_run" : false,
"conditions" : {
"[max_docs: 10000000]" : false,
"[max_age: 7d]" : false
}
}
滚动条件
参数名 | 说明 |
max_age | 指定索引存在的最大周期,如1d,7d,1m,1y |
max_docs | 存放的最的索引文档数,这个不包括副本中的索引文档数 |
max_size | 索引中主分片所占用的空间大小 |
中文文档推荐
大侠总是有,我们无需重复劳动了,参考文档,感谢一下两位大侠慷慨之作
简单搜索语法:2.3. 开始搜索 | 第二章.Elasticsearch入门指南 |《Elasticsearch中文文档 7.3》| Elasticsearch 技术论坛
各种聚合:5.0. 聚合 | 第五章. Aggregations |《Elasticsearch中文文档 7.3》| Elasticsearch 技术论坛
es权威指南中文翻译版:Introduction · Elasticsearch 权威指南(中文版)
es状态码记录
409
1、es乐观锁--乐观并发控制
{
"error" : "VersionConflictEngineException[[website][2] [blog][1]:
version conflict, current [2], provided [1]]",
"status" : 409
}
参考:版本控制 · Elasticsearch 权威指南(中文版)
es中所有更新和删除文档的请求都接受version
参数,它可以允许在你的代码中增加乐观锁控制。
当我们制定的版本低于当前版本时,es会报以上错误,告诉我们已经有人更新了数据,建议我们先看一查最新数据后在修改。
429
1、Elasticsearch status 429 "es_rejected_execution_exception"
当 Elasticsearch 集群收到大量请求且无法再接收任何请求时,通常会发生“es_rejected_execution_exception”异常。每个节点都有一个线程池队列,可以容纳 50 到 200 个请求,具体取决于您使用的 Elasticsearch 版本。队列已满时,将拒绝新请求。
参考:Elasticsearch status 429 "es_rejected_execution_exception"_hyx216的博客-CSDN博客_429 es
曾入坑的kibana语法
script和filter组合使用
- 查询两个属性不相等
GET /rt_yonghu_user_dm_orders_info_total/_search
{
"query": {
"script": {
"script": {
"source": "doc['id.keyword'].value != doc['orders.Oid.keyword'].value"
}
}
}
}
语法没问题,但是这里的orders有为空的情况 导致orders.Oid会报错,作以再过滤下orders不为空的情况,如下:
- script和filter组合使用
GET /rt_yonghu_user_dm_orders_info_total/_search
{
"query": {
"bool": {
"must": [
{
"script": {
"script": {
"source": "doc['id.keyword'].value != doc['orders.Oid.keyword'].value"
}
}
}
],
"filter": [
{
"exists": {
"field": "orders.Oid"
}
}
]
}
}
}
曾参考文档应用
script
官网 modules-scripting-using
官网 painless-execute-api
官网 Painless Scripting Language
Elasticsearch Painless script编程
更多推荐
所有评论(0)