Elasticsearch一些常用操作和一些基础概念

时间:2023-02-22 08:58:21

1、查看集群健康状态

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/health?v
epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
:: ELK-chaofeng green - 100.0%

2、查看集群节点

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/nodes?v
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
172.16.0.52 0.00 0.06 0.12 mdi - elk02
172.16.0.51 0.00 0.01 0.05 mdi * elk01
172.16.0.53 0.00 0.01 0.05 mdi - elk03

3、查看master节点状态

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/master?v
id host ip node
8Z8Oi4ipRCmaAjKESa2-FA 172.16.0.51 172.16.0.51 elk01

4、查看ES集群安装了什么插件

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/plugins?v
name component version

没有任何插件此时

5、查看集群索引

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open logstash-apacheerrorlogs kBCaAVGcQfahh730CXsFyw 264kb 132kb
green open .newkibana_1 aFFVpEqeTbSxQyJ48Djwyw .8kb .9kb
green open .kibana_1 nmZWm-d5TGy6ZqMgvslPEQ 24kb 12kb
green open logstash-apachelogs VIzul30TTpWltpIrgrPwEA .9kb .9kb
green open sys 58eN-9CRRqGt8i-B5Ar-qQ .5kb .2kb
green open logstash-apachehahalogs uSmB7bPmR5WbqIscyduvIA .2mb .6mb

6、自定义显示节点状态。

先获取帮助

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/nodes?help
id | id,nodeId | unique node id
pid | p | process id
ip | i | ip address
port | po | bound transport port
http_address | http | bound http address
version | v | es version

有非常多,想获取哪个就可以获取哪个。比如如下所示:

[root@ELK-chaofeng01 ~]#curl -XGET http://172.16.0.51:9200/_cat/nodes?h=name,ip,port,jdk
elk02 172.16.0.52 1.8.0_201
elk01 172.16.0.51 1.8.0_201
elk03 172.16.0.53 1.8.0_201

7、显示当前节点的ES信息

[root@ELK-chaofeng01 ~]#curl http://172.16.0.51:9200
{
"name" : "elk01",
"cluster_name" : "ELK-chaofeng",
"cluster_uuid" : "5VIF1_SdQdGbRekuR9q4-A",
"version" : {
"number" : "6.5.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "9434bed",
"build_date" : "2018-11-29T23:58:20.891072Z",
"build_snapshot" : false,
"lucene_version" : "7.5.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

看到“you knoe , foe search ” 这表示当前ES安装成功。

8、安装插件,最著名的插件是HEAD插件。

查看我之前的博客,有讲如何安装HEAD插件的:https://www.cnblogs.com/FengGeBlog/p/10471710.html

9、添加索引和内容

Elasticsearch一些常用操作和一些基础概念

第一行的“-H Content-Type:application/json” 要带上去,这是6.x与5.x下的区别,否则不能创建索引成功。

10、查找我们刚刚创建的索引

[root@ELK-chaofeng01 ~]#curl -XGET '172.16.0.51:9200/student/_search?pretty'
{
"took" : ,
"timed_out" : false,
"_shards" : {
"total" : ,
"successful" : ,
"skipped" : ,
"failed" :
},
"hits" : {
"total" : ,
"max_score" : 1.0,
"hits" : [
{
"_index" : "student",
"_type" : "major",
"_id" : "",
"_score" : 1.0,
"_source" : {
"name" : "Chao feng",
"age" : ,
"course" : "English"
}
}
]
}
}

在索引的后面添加“_search”来查看指定索引的内容,默认是列出当前所有下的所有内容

11、查找指定索引下的指定内容,比如搜索“English”

[root@ELK-chaofeng01 ~]#curl -XGET '172.16.0.51:9200/student/_search?q="English"&pretty'
{
"took" : 12,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "student",
"_type" : "major",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "Chao feng",
"age" : 24,
"course" : "English"
}
}
]
}
}

ES内部会自动进行大小写转换,默认是不区分大小写的。

11.1)HEAD插件上传

Elasticsearch一些常用操作和一些基础概念

12)对某个索引的某个类型做搜索

[root@ELK-chaofeng01 ~]#curl -XGET '172.16.0.51:9200/student/major/_search?q="English"&pretty'
{
"took" : 19,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 1,
"max_score" : 0.2876821,
"hits" : [
{
"_index" : "student",
"_type" : "major",
"_id" : "1",
"_score" : 0.2876821,
"_source" : {
"name" : "Chao feng",
"age" : 24,
"course" : "English"
}
}
]
}
}

13)案例:对某个索引查看统计的个数

我想统计一下es集群中的某个索引中的“notice”有多少个,我之前采集日志向ES集群发送过去了,当时的日志中的“notice”行数是:

Elasticsearch一些常用操作和一些基础概念

此时我在ES集群中使用搜索技术查看

Elasticsearch一些常用操作和一些基础概念

完全正确,搜索的非常好。上面的默认查找方式是“_all”。

你也可以使用这种技术来切割,“loglevel:notice”,在前面加上冒号,表示对特定的类型进行匹配

Elasticsearch一些常用操作和一些基础概念

要学会使用“q=Type:WORD”的方式来查询。

14)做简单查询

Elasticsearch一些常用操作和一些基础概念

15)做复杂处理,注意写的格式;复杂处理的标志就是“query_string”。

Elasticsearch一些常用操作和一些基础概念

注意加引号。

分片定义:

集群(cluster): 由一个或多个节点组成, 并通过集群名称与其他集群进行区分

节点(node): 单个ElasticSearch实例. 通常一个节点运行在一个隔离的容器或虚拟机中

索引(index): 在ES中, 索引是一组文档的集合

分片(shard): 因为ES是个分布式的搜索引擎, 所以索引通常都会分解成不同部分, 而这些分布在不同节点的数据就是分片. ES自动管理和组织分片, 并在必要的时候对分片数据进行再平衡分配, 所以用户基本上不用担心分片的处理细节.

副本(replica): ES默认为一个索引创建5个主分片, 并分别为其创建一个副本分片. 也就是说每个索引都由5个主分片成本, 而每个主分片都相应的有一个copy.

对于分布式搜索引擎来说, 分片及副本的分配将是高可用及快速搜索响应的设计核心.主分片与副本都能处理查询请求, 它们的唯一区别在于只有主分片才能处理索引请求.

在上图示例中, 我们的ElasticSearch集群有两个节点, 并使用了默认的分片配置. ES自动把这5个主分片分配到2个节点上, 而它们分别对应的副本则在完全不同的节点上. 对,就这是分布式的概念.

请记住, 索引的number_of_shards参数只对当前索引有效而不是对整个集群生效.对每个索引来讲, 该参数定义了当前索引的主分片数(而不是集群中所有的主分片数).

关于副本

副本对搜索性能非常重要, 同时用户也可在任何时候添加或删除副本. 正如另篇文章所述, 额外的副本能给你带来更大的容量, 更高的呑吐能力及更强的故障恢复能力.

谨慎分配你的分片

当在ElasticSearch集群中配置好你的索引后, 你要明白在集群运行中你无法调整分片设置. 既便以后你发现需要调整分片数量, 你也只能新建创建并对数据进行重新索引(reindex)(虽然reindex会比较耗时, 但至少能保证你不会停机).

主分片的配置与硬盘分区很类似, 在对一块空的硬盘空间进行分区时, 会要求用户先进行数据备份, 然后配置新的分区, 最后把数据写到新的分区上.

2~3GB的静态数据集

分配分片时主要考虑的你的数据集的增长趋势.

我们也经常会看到一些不必要的过度分片场景. 从ES社区用户对这个热门主题(分片配置)的分享数据来看, 用户可能认为过度分配是个绝对安全的策略(这里讲的过度分配是指对特定数据集, 为每个索引分配了超出当前数据量(文档数)所需要的分片数).

Elastic在早期确实鼓吹过这种做法, 然后很多用户做的更为极端--例如分配1000个分片. 事实上, Elastic目前对此持有更谨慎的态度.

稍有富余是好的, 但过度分配分片却是大错特错. 具体定义多少分片很难有定论, 取决于用户的数据量和使用方式. 100个分片, 即便很少使用也可能是好的;而2个分片, 即便使用非常频繁, 也可能是多余的.
要知道, 你分配的每个分片都是有额外的成本的: 每个分片本质上就是一个Lucene索引, 因此会消耗相应的文件句柄, 内存和CPU资源
每个搜索请求会调度到索引的每个分片中. 如果分片分散在不同的节点倒是问题不太. 但当分片开始竞争相同的硬件资源时, 性能便会逐步下降
ES使用词频统计来计算相关性. 当然这些统计也会分配到各个分片上. 如果在大量分片上只维护了很少的数据, 则将导致最终的文档相关性较差

Elasticsearch一些常用操作和一些基础概念的更多相关文章

  1. 全文检索-Elasticsearch (一) 安装与基础概念

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口 Elasticsearch由java开发,所以在搭建时,需先安 ...

  2. DOM常用操作,Sass基础

    一个元素的子元素个数ParentNode.childElementCount 只读属性返回一个无符号长整型数字,表示给定元素的子元素数. 取消当前事件e.preventDefault();有时候我们选 ...

  3. JAVA-集合类型List(ArrayList、LinkedList)常用操作例子(基础必备)

    package com.net.xinfang.reflect; import java.util.ArrayList; import java.util.Arrays; import java.ut ...

  4. java-Array数组常用操作例子(基础必备)

    package com.net.xinfang.reflect; import java.util.ArrayList; import java.util.Arrays; import java.ut ...

  5. JAVA-集合类型Set常用操作例子(基础必备)

    package com.net.xinfang.reflect; import java.util.Comparator; import java.util.HashSet; import java. ...

  6. 二叉树的python可视化和常用操作代码

    二叉树是一个重要的数据结构, 本文基于"二叉查找树"的python可视化 pybst 包, 做了一些改造, 可以支持更一般的"二叉树"可视化. 关于二叉树和二叉 ...

  7. Docker 基础概念科普 和 常用操作介绍

    Docker 基础概念 Docker是什么?         Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之 ...

  8. Elasticsearch教程之基础概念

    基础概念 Elasticsearch有几个核心概念.从一开始理解这些概念会对整个学习过程有莫大的帮助. 1.接近实时(NRT)        Elasticsearch是一个接近实时的搜索平台.这意味 ...

  9. ArcGIS中的坐标系:基本概念和常用操作(一)

    本文呢是主要是借鉴李郎平李大大的博士论文和百度百科,里面还有一点点我自己的理解,希望能帮助自己加深对于坐标系的认识. 李大大的博客:http://blog.sciencenet.cn/u/Brume ...

随机推荐

  1. maven学习(上)- 基本入门用法

    一.下载及安装 1.1 下载maven 3.1.1 先到官网http://maven.apache.org/download.cgi 下载最新版本(目前是3.1.1 ),下载完成后,解压到某个目录(本 ...

  2. 在VS中向命令行添加参数的方法

    在VS中向命令行添加参数的方法 在VS中向命令行添加参数,即向main()函数传递参数的方法: 右键单击要 添加参数的工程-->属性-->配置属性-->调试,在右侧“命令参数”栏输入 ...

  3. Mini2440 LED驱动程序设计

    1 LED初始化: 2 LED闪烁设计 位或操作:| 取反操作:~ 位与操作:& http://www.tuicool.com/articles/eQzEJv

  4. 论文笔记之:Speed Up Tracking by Ignoring Features

    Speed Up Tracking by Ignoring Features CVPR 2014 Abstract:本文提出一种特征选择的算法,来实现用最"精简"的特征以进行目标跟 ...

  5. 转:VC解析XML文件-CMarkup的使用详解

    本篇文章是对VC解析XML文件-CMarkup的使用进行了详细的分析介绍,需要的朋友参考下 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等. 据说tinyX ...

  6. PS图层混合模式实例详解

          PS中的很多概念都和Core Graphics中的概念相通,比如蒙版.路径.裁剪.混合模式等等.如果你对Core Graphics中的混合模式不太理解,阅读本篇文章能让你对Core Gra ...

  7. 网络攻防工具介绍——Wireshark

    网络攻防工具介绍 Wireshark 简介 Wireshark(前称Ethereal)是一个网络封包分析软件.它是一个理想的开源多平台网络协议分析工具.网络封包分析软件的功能是撷取网络封包,并尽可能显 ...

  8. spark 编程向导

    http://spark.apache.org/docs/latest/programming-guide.html

  9. Spring Boot修改启动端口

    spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境.可是当我们要同时启动2个springboot工程时,就会有问题,有可能会因为8080端口被第 ...

  10. awk匹配某一段内容,打印第一段

    要求: awk 文本在文本中搜索abc搜到后再从搜到的那一行开始一直输出后面的行,直到某一行含有bcd就停止 测试文本: [root@localhost]# cat awktest sadfj sdj ...