官方文档: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编程

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐