elasticsearch7相关的知识及kibana操作整理

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

中文文档推荐

大侠总是有,我们无需重复劳动了,参考文档,感谢一下两位大侠慷慨之作

简单搜索语法: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编程

你可能感兴趣的:(全文检索,ELK,elasticsearch,kibana)