关闭某一个索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-10-1/_close关闭批量索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-*/_close温馨提示:(1)如果将索引关闭,则意味着该索引将不能执行任何打开索引状态的所有读写操作,当然这样也会为服务器节省一定的集群资源消耗;(2)生产环境中,我们可以将需要删除的索引先临时关闭掉,可以先关闭7个工作日,然后在执行删除索引,因为光关闭索引尽管能减少消耗但存储空间依旧是占用的;(3)关闭索引后,记得查看现有索引信息,并结合"elasticsearch-head"插件的WebUI界面进行查看哟;
7.打开索引
打开某一索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-10-3/_open打开批量索引:curl -X POST http://elk101.k8s.com:9200/linux-2020-*/_open
使用POST方法创建文档,创建文档时会自动生成随机文档的"_id"(推荐方式):curl -X POST http://elk101.k8s.com:9200/shopping/_doc使用POST方法创建文档,我们也可以自定义文档文档的"_id":(不推荐使用,因为在数据量比较大的时候,自定义"_id"可能会存在如何去重的情况)curl -X POST http://elk101.k8s.com:9200/shopping/_doc/10010使用PUT方法创建文档姿势一:curl -X PUT http://elk101.k8s.com:9200/shopping/_doc/10011使用PUT方法创建文档姿势二:curl -X PUT http://elk101.k8s.com:9200/shopping/_create/10012提交以下数据:{"title":"戴尔(DELL)31.5英寸 4K 曲面 内置音箱 低蓝光 影院级色彩 FreeSync技术 可壁挂 1800R 电脑显示器 S3221QS","price":3399.00 ,"brand": "Dell","weight": "15.25kg","item": "https://item.jd.com/100014940686.html"}温馨提示:PUT方法要求幂等性,二POST方法则并不要求幂等性。所谓的幂等性可参考请求的"_id"和响应返回的"_id"是否一致。
2.查询文档
主键查询:curl -X GET http://elk101.oldboyedu.com:9200/shopping/_doc/10012全查询:curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search判断文档是否存在:(只需要观察响应的状态码,如果为200说明文档存在,如果是404说明文档不存在)curl -X HEAD http://elk101.oldboyedu.com:9200/shopping/_doc/x0zdh3kBpj8F95BSQ5Pv一个文档中不仅仅存在数据,它还包含了元数据(metadata),即关于文档的信息。换句话说,就是描述数据的数据。三个必须的元数据节点是"_index","_type"和"_id":"_index":文档添加到的索引名称,即文档存储的地方。索引(index)类似于关系型数据库里的"数据库",它是我们存储和索引关联数据的地方。事实上,我们的数据被存储和索引在分片(shards)中,索引是把一个或多个分片分组在一起的逻辑空间。然而,这只是一些内部细节,我们的程序完全不用关心分片。对于我们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。"_type":文件类型。Elasticsearch索引现在支持单一文档类型_doc。"_id":添加文档的唯一标识符。id仅仅是一个字符串,它与"_index"和"_type"组合时,就可以在Elasticsearch中唯一标识一个文档。当创建一个文档时,你可以自定义"_id",也可以让Elasticsearch帮你自动生成(32位长度)。温馨提示:如果用浏览器查看返回数据可能看起来不太美观,我们可以借助"pretty"参数来使得输出的可读性更强。当然,我们也可以借助插件哟~
3.更新文档
全局更新:(生产环境使用较少)curl -X PUT/POST http://elk101.oldboyedu.com:9200/shopping/_doc/10012{"title": "ALIENWARE外星人新品外设高端键鼠套装AW510K机械键盘cherry轴 RGB/AW610M 610M 无线鼠标+510K机械键盘+510H耳机","price": 5200.00,"brand": "ALIENWARE外星人","weight": "1.0kg","item": "https://item.jd.com/10030370257612.html"}局部更新:(生产环境经常使用)curl -X POST http://elk101.oldboyedu.com:9200/shopping/_update/10012curl -X POST http://elk101.oldboyedu.com:9200/shopping/_doc/10012/_update{"doc":{"price": 6000.00,"weight": "2.0kg"}}温馨提示:更新局部数据时,说明每一次更新数据返回的结果都不相同,因此我们不应该使用PUT方法,而是使用POST方法哟~
curl -X POST http://elk101.oldboyedu.com:9200/teacher/_search{"query": {"exists": {"field": "hobby" // 只查询含有"hobby"字段的文档。}}}温馨提示:(1)关于"teacher"索引的数据生成,可直接参考下面的"批量操作"创建数据的案例。(2)exists查询可以用于查找文档中是否包含指定字段或没有某个字段,这个查询只是针对已经查出一批数据来,但是想区分出某个字段是否存在的时候使用。
12.过滤查询
curl -X POST http://elk101.oldboyedu.com:9200/teacher/_search{"query":{"bool":{"filter":{"term":{"hobby":"linux"}}}}}match和filter查询对比:(1)一条过滤(filter)语句会询问每个文档的字段值是否包含着特定值;(2)查询(match)语句会询问每个文档的字段值与特定值的匹配程序如何:一条查询(match)语句会计算每个文档与查询语句的相关性,会给出一个相关性评分"_score",并且按照相关性对匹配到的文档进行排序。这种评分方式非常适用于一个没有完全配置结果的全文本搜索。(3)一个简单的文档列表,快速匹配运算并存入内存是十分方便的,每个文档仅需要1个字节。这些缓存的过滤结果集与后续请求的结果使用是非常高效的;(4)查询(match)语句不仅要查询相匹配的文档,还需要计算每个文档的相关性,所以一般来说查询语句要比过滤语句更好使,并且查询结果也不可缓存。温馨提示:做精确匹配搜索时,最好用过滤语句,因为过滤语句可以缓存数据。但如果要做全文搜索,需要通过查询语句来完成。
13.多词搜索
(1)默认基于"or"操作符对某个字段进行多词搜索
curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":{"match":{"title":{"query":"曲面设计","operator":"or"}}}}},"highlight":{"fields":{"title":{}}}}(2)基于"and"操作符对某个字段进行多词搜索
curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":{"match":{"title":{"query":"曲面","operator":"and"}}}}},"highlight":{"fields":{"title":{}}}}
推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping.html创建索引:curl -X PUT http://elk101.oldboyedu.com:9200/teacher{"settings": {"index": {"number_of_replicas": "1","number_of_shards": "5"}}}添加索引的映射关系:curl -X PUT http://elk101.oldboyedu.com:9200/teacher/_mapping{"properties":{"name":{"type":"text", // 该类型是文本类型,该类型存储的数据是可以被拆分的。"index":true},"gender":{"type":"keyword", // 该类型是关键字类型,该类型存储的数据是不可被拆分的"index":true},"telephone":{"type":"text","index":false // 如果字段的"index"为false,则无法使用该字段进行数据查找!},"address":{"type":"keyword","index":false}}}往索引中添加数据:curl -X PUT http://elk101.oldboyedu.com:9200/teacher/_create/10001{"name":"oldboy","gender":"男性的","telephone":"1024","address":"北京沙河"}测试各个映射字段是否可以查询数据:curl -X GET http://elk101.oldboyedu.com:9200/teacher/_search(1)基于"name"字段可以查询到数据:{"query":{"match":{"name":"oldboy"}}}(2)基于"gender"字段可以查询到数据:{"query":{"match":{"gender":"男性的" // 注意,此处必须完全匹配,如果不完全匹配则查询不到数据哟~因为"gender"字段被我们显式定义为"keyword"类型啦~}}}(3)基于"telephone"字段无法查询到数据:{"query":{"match":{"telephone":1024}}}(4)基于"address"字段无法查询到数据:{"query":{"match":{"address":"北京沙河"}}}
七.管理集群常用的API
1.查看集群的健康状态信息
curl -X GET http://elk101.k8s.com:9200/_cluster/health?wait_for_status=yellow&timeout=50s&pretty温馨提示:(1)wait_for_status表示等待ES集群达到状态的级别;(2)timeout表示指定等待的超时时间;(3)pretty表示美观的输出响应体,尤其是在浏览器输入;以下是对响应结果进行简单的说明:cluster_name集群的名称。status集群的运行状况,基于其主要和副本分片的状态。常见的状态为:green:所有分片均已分配。yellow:所有主分片均已分配,但未分配一个或多个副本分片。如果群集中的节点发生故障,则在修复该节点之前,某些数据可能不可用。red:未分配一个或多个主分片,因此某些数据不可用。在集群启动期间,这可能会短暂发生,因为已分配了主要分片。timed_out:如果false响应在timeout参数指定的时间段内返回(30s默认情况下)。number_of_nodes:集群中的节点数。number_of_data_nodes:作为专用数据节点的节点数。active_primary_shards:活动主分区的数量。active_shards:活动主分区和副本分区的总数。relocating_shards:正在重定位的分片的数量。initializing_shards:正在初始化的分片数。unassigned_shards:未分配的分片数。delayed_unassigned_shards:其分配因超时设置而延迟的分片数。number_of_pending_tasks:尚未执行的集群级别更改的数量。number_of_in_flight_fetch:未完成的访存次数。task_max_waiting_in_queue_millis:自最早的初始化任务等待执行以来的时间(以毫秒为单位)。active_shards_percent_as_number:群集中活动碎片的比率,以百分比表示。
2.获取集群的配置信息(了解即可)
查看集群的信息:curl -X GET http://elk101.k8s.com:9200/_cluster/settings?include_defaults修改集群的信息:curl -X PUT http://elk101.k8s.com:9200/_cluster/settings{ "persistent": { "cluster.routing.allocation.enable": "none"}}温馨提示:(1)默认情况下,此API调用仅返回已显式定义的设置,包括"persistent"(持久设置)和"transient"(临时设置);(2)其中include_defaults表示的是默认设置;
3.查看集群的统计信息(了解即可)
curl -X GET https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html返回参数说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-stats.html
4.查看集群shard分配的分配情况(了解即可)
curl -X PUT http://elk101.k8s.com:9200/_cluster/allocation/explain提交的参数如下:(1)查看未分配的主分片原因{"index": "linux-2020-10-3","shard": 0,"primary": true}(2)查看未分配的副本分片原因{"index": "linux-2020-10-3","shard": 0,"primary": false}返回的参数说明:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-allocation-explain.html温馨提示:当您试图诊断shard未分配的原因或碎片为什么在您可能期望的情况下继续留在当前节点时,此API非常有用。
以下是一些大数据中常见组件监控页面的端口号:1. Hadoop:HDFS Web UI在Hadoop2.x版本中默认端口为50070,在Hadoop3.x版本中为9870,用于查看集群文件及目录;YARN Web UI端口为8088,可查看MR执行情况&…