二.管理索引常用的API

1.查看现有索引信息

查看所有索引信息列表:curl -X GET http://elk101.k8s.com:9200/_cat/indices?v查看某个索引的详细信息:curl -x GET http://elk101.k8s.com:9200/linux-2020-10-2温馨提示: (1)"?v"表示输出表头信息,如下所示:health status index           uuid                   pri rep docs.count docs.deleted store.size pri.store.sizegreen  open   linux-2020-10-1 JDAp11N8RVqyjGROol3J4Q   1   1          0            0       416b           208bgreen  open   bigdata         3k606BwcTIWZOHG3tRPMNA   5   2          0            0        3kb            1kbgreen  open   linux-2020-10-3 8DJBzgo2Sn2qwe-UDa8_RA   1   1          0            0       416b           208bgreen  open   linux-2020-10-2 NsO3vA-JTZ61W4OH4OqGxw   1   1          0            0       416b           208bgreen  open   linux           I0jNRp0wT8OgvR9Uf6EZow   1   1          0            0       416b           208bgreen  open   bigdata3        h1OS5CX6TomeDY_dcdy-vQ   3   1          0            0      1.2kb           624bgreen  open   bigdata2        egmZVZS6QqCpACPBe2-1LA   1   1          0            0       416b           208b(2)curl默认发送的就是GET请求;以下是对响应结果进行简单的说明:health:green:所有分片均已分配。yellow:所有主分片均已分配,但未分配一个或多个副本分片。如果群集中的节点发生故障,则在修复该节点之前,某些数据可能不可用。red:未分配一个或多个主分片,因此某些数据不可用。在集群启动期间,这可能会短暂发生,因为已分配了主要分片。status:索引状态,分为打开和关闭状态。index:索引名称。uuid:索引唯一编号。pri:主分片数量。rep:副本数量。docs.count:可用文档数量。docs.deleted:文档删除状态(逻辑删除)。store.size:主分片和副分片整体占空间大小。pri.store.size:主分片占空间大小。

2.创建索引

curl -X PUT http://elk101.k8s.com:9200/bigdata可选提交的数据如下:{"settings": {"index": {"number_of_replicas": "1","number_of_shards": "3"}}}温馨提示:(1)对于提交的参数说明:"number_of_replicas"参数表示副本数。"number_of_shards"参数表示分片数。(2)对于返回的参数说明:"acknowledged"参数表示响应结果,如果为"true"表示操作成功。"shards_acknowledged"参数表示分片结果,如果为"true"表示操作成功。"index"表示索引名称。(3)创建索引库的分片数默认为1片,在7.0.0之前的Elasticsearch版本中,默认为5片。(4)如果重复添加索引,会返回错误信息;

3.删除索引[生产环境中谨慎操作,建议先使用关闭索引一段时间在进行删除]

根据索引模式删除:curl -X DELETE http://elk101.k8s.com:9200/linux-2020-11*删除某个特定的索引:curl -X DELETE http://elk101.k8s.com:9200/linux-2020-10-2

4.查看某个索引是否存在

curl -X HEAD http://elk101.k8s.com:9200/linux-2020-10-2温馨提示:注意观察返回的状态码,如果返回"200"说明该索引是存在的,如果返回"400",说明索引是不存在的。

5.索引别名

curl -X POST http://elk101.k8s.com:9200/_aliases提交数据如下:(1)添加别名:{"actions" : [{ "add" : { "index" : "linux-2020-10-3", "alias" : "linux2020" } },{ "add" : { "index" : "linux-2020-10-3", "alias" : "linux2021" } }]}(2)删除别名{"actions" : [{ "remove" : { "index" : "linux-2020-10-3", "alias" : "linux2025" } }]}(3)重命名别名{"actions" : [{ "remove" : { "index" : "linux-2020-10-3", "alias" : "linux2023" } },{"add": { "index" :"linux-2020-10-3" , "alias" : "linux2025" }}]}(4)为多个索引同时添加别名{"actions" : [{"add": { "index" :"bigdata3" , "alias" : "linux666" }},{"add": { "index" :"bigdata2" , "alias" : "linux666" }},{"add": { "index" :"linux-2020-10*" , "alias" : "linux666" }}]}温馨提示:(1)索引别名是用于引用一个或多个现有索引的辅助名称。大多数Elasticsearch API接受索引别名代替索引;(2)加索引后请结合"elasticsearch-head"的WebUI进行查看;(3)一个索引可以关联多个别名,一个别名也能被多个索引关联;

6.关闭索引

关闭某一个索引: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

8.其它操作

推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices.html

三.管理文档的基本操作API

1.添加文档

使用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方法哟~

4.删除文档

curl -X DELETE http://elk101.oldboyedu.com:9200/shopping/_doc/10012

四.ElasticSearch的DSL查询语言

1.条件查询

基于请求路径实现条件查询:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search?q=brand:DELL基于请求体实现条件查询:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match":{"brand":"DELL"}}}	基于请求体实现全量查询:curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search可选的以下请求体:{"query":{"match_all":{}}}

2.分页查询

	假设有20条数据,我们规定每页仅有3条数据,我们想要查看第7页的数据,就可以执行下面的查询语句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3}字段说明:from:指定跳过的数据偏移量大小,默认是0。查询指定页码的from值 = ”(页码 - 1) * 每页数据条数“。size:指定显示的数据条数大小,默认是10。在集群系统中深度分页:我们应该当心分页太深或者一次请求太多的结果,结果在返回前会被排序。但是记住一个搜索请求常常涉及多个分片。每个分片生成排好序的结果,它们接着需要集中起来排序以确保整体排序顺序。为了理解为什么深度分页是有问题的,让我们假设在一个有5个主分片的索引中搜索:(1)当我们请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给请求节点(requesting node),它在排序这所有的50个结果以筛选出顶端的10个结果;(2)现在假设我们请求第1000页,结果10001到10010,工作方式都相同,不同的时每个分片都必须产生顶端的10010个结果,然后请求节点排序这50050个结果并丢弃50040个;(3)你可以看到在分布式系统中,排序结果的花费随着分页的深入而成倍增长,这也是为什么网络搜索引擎中任何语句返回多余1000个结果的原因;

3.只查看返回数据的指定字段

	假设有20条数据,我们规定每页仅有3条数据,我们想要查看第7页的数据,并只查看"brand"和"price"这两个字段,就可以执行下面的查询语句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3,"_source": ["brand","price"]}

4.查看指定字段并排序

	假设有20条数据,我们规定每页仅有3条数据,我们想要查看第7页的数据,并只查看"brand"和"price"这两个字段,就可以执行下面的查询语句。curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_all":{}},"from": 18,"size": 3,"_source": ["brand","price"],"sort":{"price":{"order":"desc"}}}温馨提示:"desc"表示降序排列,而"asc"表示升序排列。

5.多条件查询

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search使用must查询,则查询结果必须满足所有的匹配要求,缺一不可:{"query":{"bool":{"must":[{"match":{"price": 429}},{"match":{"brand": "罗技"}}]}}}使用should查询,则查询结果只须满足其中一个匹配的要求即可:{"query":{"bool":{"should":[{"match":{"price": 429}},{"match":{"brand": "DELL"}}]}}}使用"minimum_should_match"参数实现最少满足需求的文档数查找:{"query":{"bool":{"should":[{"match":{"brand": "华为"}},{"match":{"brand": "小米"}},// {//     "match":{//         "brand": "苹果"//     }// },{"match":{"price": "4699"}}],"minimum_should_match": 2  // 至少要满足2个should需求才能获取到对应的文档哟~}}}使用"minimum_should_match"参数实现最少满足需求的文档数查找,采用百分比案例:{"query":{"bool":{"should":[{"match":{"brand": "华为"}},{"match":{"brand": "小米"}},// {//     "match":{//         "brand": "苹果"//     }// },{"match":{"price": "4699"}}],"minimum_should_match": "60%"  //可以适当调大,比如调到70%观察命中结果!}}}温馨提示:bool查询可以用来合并多个条件查询结果的布尔逻辑,这些参数可以分别继承一个查询或者一个查询条件的数组。bool查询包含以下操作符:must:多个查询条件的完全匹配,相当于"and"。must_not:多个查询条件的相反匹配,相当于"not"。should:至少有一个查询条件匹配,相当于"or"。评分计算规则:(1)bool查询会为每个文档计算相关度评分"_score",再将所有匹配的must和should语句的分数"_score"求和,最后除以must和should语句的总数。(2)must_not语句不会影响评分,它的作用只是将不相关的文档排除。(3)默认情况下,should中的内容不是必须匹配的,如果查询语言中没有must,那么就会至少匹配其中一个。当然,也可以通过"minimum_should_match"来指定匹配度,该值可以是数字(例如"2")也可以是
百分比(如"65%")。

6.范围查询

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"bool":{"must":[{"match":{"brand": "罗技"}}],"filter":{"range":{"price":{"gt": 100,"lt":300}}}}}}温馨提示:(1)上面的查询条件是匹配"brand"的值"罗技"的数据并按照"price"进行范围过滤;(2)常用的范围操作符包含如下所示:gt:大于。gte:大于等于。lt:小于。lte:小于等于。

7.全文检索

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match":{"brand":"小华苹"}}}温馨提示:(1)尽管我们没有"小华苹"的品牌,但ES在查询的时候会对"小华果"进行文字拆分,会使用倒排索引技术去查找文档,从而查到小米, 华为,苹果的品牌。(2)match查询会在真正查询之前用分词器先分析,默认的中文分词器并不太适合使用,生产环境建议更换分词器,比如IK分词器等。

8.完全匹配

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_phrase":{"brand":"小华果"}}}温馨提示:我们可以使用"match_phrase"进行完全匹配,则返回0条匹配结果。

9.语法高亮

    curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search{"query":{"match_phrase":{"brand":"苹果"}},"highlight":{"fields":{"brand":{}}}}

10.精确匹配查询

curl -X PUT http://elk101.oldboyedu.com:9200/shopping/_search	{"query": {"term": {"price": 4699 // 查询字段的值尽量不要使用中文哟~如果非要用,建议使用特定的分词器!}}}{"query": {"terms": {"price": [299,4066,499]}}}温馨提示:term主要用于精确匹配哪些值,比如数字,日期,布尔值或"not_analyzed"(未经分析的文本数据类型)的字符串。terms跟term有点类似,但terms允许指定多个匹配条件,如果某个字段指定了多个值,那么文档需要一
定去做匹配。

11.查询包含指定字段的文档

    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":{}}}}

14.权重案例(了解即可)

	有些时候,我们可能需要对某些词增加权重来影响这条数据的得分。curl -X GET http://elk101.oldboyedu.com:9200/shopping/_search{"query": {"bool": {"must": {"match": {"brand": {"query": "小米","operator": "or"}}},"should": [{"match": {"title": {"query": "防水","boost": 10}}},{"match": {"title": {"query": "黑色","boost": 2}}}]}},"highlight": {"fields": {"title": {}}}}

15.聚合查询

	curl -X GET/POST http://elk101.oldboyedu.com:9200/shopping/_search按照brand字段进行分组:{"aggs":{  // 聚合操作"brand_group":{  // 该名称可以自定义,我习惯性基于相关字段起名称。"terms":{  // 分组"field":"brand.keyword"  // 指定用于计算的相关字段,此处指定的时brand字段,但brand字段的fielddata默认值为false,因此此处我们需要写brand.keyword"}}},"size": 0 // 设置显示hits数据的大小,当size的值为0时,表示不查看原始数据!如果设置大于0,则显示指定的数据条数。如果设置为-1,则只显示10条,如果设置小于-1则报错!}按照”price“字段计算所有商品的平均值:{"aggs":{  // 聚合操作"price_avg":{  // 该名称可以自定义,我习惯性基于相关字段起名称。"avg":{  // 分组"field":"price"  // 分组字段}}},"size": 0 // 设置显示hits数据的大小,当size的值为0时,表示不查看原始数据!如果设置大于0,则显示指定的数据条数。如果设置为-1,则只显示10条,如果设置小于-1则报错!}

五.批量操作

1.为什么要使用批量操作

	有些情况下可以通过批量操作以减少网络请求,也可以实现可重复性的利用率。例如:批量查询,批量插入数据。

2.批量插入操作

	温馨提示:元数据最少要写一个在Elasticsearch中,支持批量的插入,修改,删除操作,都是通过"_bulk"的API完成的。批量插入请求格式如下:(请求格式不同寻常){ action: { metadata }}\n{ request body }\n{ action: { metadata }}\n{ request body }\n...批量插入数据:curl -X POST http://elk101.oldboyedu.com:9200/_bulk{"create":{"_index":"teacher","_type":"_doc","_id":9001}}{"id":1001,"name":"oldboy","gender":"Male","telephone":"1024","address":"北京沙河","hobby":"linux 象棋 羽毛球 跑步"}{"create":{"_index":"teacher","_type":"_doc"}}{"id":1002,"name":"吉泽明步","gender":"Female","telephone":"2048"}{"create":{"_index":"teacher","_type":"_doc","_id":9002}}{"id":1003,"name":"苍老师","gender":"Female","telephone":"4096","address":"日本东京"}{"create":{"_index":"teacher"}}{"id":1004,"name":"加藤鹰","gender":"Male","telephone":"8192"}{"create":{"_index":"teacher","_id":9003}} {"id":1004,"name":"小园梨央","gender":"Female","address":"日本东京","hobby":"自拍、拉拉队"}温馨提示:从上面的案例可以看出,元数据最少要写一个"_index"。而对应的提交的请求体则可以根据我们的需求自定义即可。

3.批量查询操作

curl -X POST http://elk101.oldboyedu.com:9200/teacher/_mget{"ids":["9001","9002","9003","9005"] // 查询ID为"9001","9002","9003","9005"的数据。}	温馨提示:注意观察响应的结果,如果数据没有查询到,则found"的值为false。

4.批量删除数据

	在Elasticsearch中,支持批量的插入,修改,删除操作,都是通过"_bulk"的API完成的。批量删除请求格式如下:(请求格式不同寻常){ action: { metadata }}\n{ action: { metadata }}\n{ action: { metadata }}\n批量删除数据:curl -X POST http://elk101.oldboyedu.com:9200/teacher/_doc/_bulk{"delete":{"_index":"teacher","_type":"_doc","_id":9001}}{"delete":{"_index":"teacher","_id":9002}}{"delete":{"_index":"teacher","_id":9003}}{"delete":{"_index":"teacher","_id":9005}}温馨提示:(1)关于URL的"_doc"其实是可以省略不写的,我此处是一个习惯性操作,表示是对文档的操作;(2)请求体最后最后一行一定要有一个换行符;(3)删除数据的结果查看响应体的"result"字段,如果为"not_found",则说明数据未删除,因为没有找到该文档;

5.一次性批处理多少性能最高

	ES提供了Bulk API支持批量操作,当我们有大量的写任务时,可以使用Bulk来进行批量写入。对于批量操作,我们一次性批量多少操作性能最高呢?我们不得不参考以下几点:(1)整个批量请求需要被加载到接收我们请求节点的内存里,所以请求越大,给其它请求可用的内存就越小。有一个最佳的bulk请求大小。超过这个大小,性能不能提升而且可能降低;(2)最佳大小,当然并不是一个固定的数字,它完全取决于你的硬件,你文档的大小和复杂度以及索引和搜索的负载;(3)幸运的是,这个最佳点(sweetspot)还是容易找到的,试着批量索引标准的文档,随着大小的增长,当性能开始降低,说明你批次的大小太大了。开始的数量可以在1000-5000个文档之间,如果你的文档非常大,可以使用较小的批次;(4)通常着眼于你请求批次的物理大小是非常有用的,1000个1KB的文档和1000个1MB的文档大不相同,一个好的批次最好保持在5~15MB逐渐增加,当性能没有提示时,把这个数据量作为最大值;(5)bulk默认设置批量提交的数据量不能超过100M;

六.其它查询操作

1.ElasticSearch中支持的类型(了解即可)

	前面我们创建的索引以及插入数据,都是由Elasticsearch进行自动判断。有些时候我们需要进行明确的字段类型的,否则,自动判断的类型和实际需求是不相符的。此处我针对字符串类型做一个简单的说明:(因为上面的案例的确用到了)string类型(deprecated,已废弃):在ElasticSearch旧版本中使用较多,从ElasticSearch 5.x开始不再支持string,由text和keyword类型代替。text类型:当一个字段要被全文搜索的,比如Email内容,产品描述,应该使用text类型。设置text类型以后,字段内容会被分析,在生成倒排索引以前,字符串会被分词器分成一个一个词项。text类型的字段不用于排序,很少用于聚合。换句话说,text类型是可拆分的。keyword类型:适用于索引结构化的字段,比如email地址,主机名,状态码,标签,IP地址等。如果字段需要进行过滤(比如查找已发布博客中status属性为published的文章),排序,聚合。keyword类型的字段只能通过精确值搜索到。换句话说,keyword类型是不可拆分的。关于ElasticSearch的详细的数据类型并不是我们运维人员所关心的,因为这些是开发人员去研究的,感兴趣的小伙伴卡自行参考官方文档。推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/7.12/mapping-types.html

2.映射关系

推荐阅读: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非常有用。

5.其他操作(了解即可)

推荐阅读:https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92397.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/92397.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/92397.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当文档包含表格时,如何结合大模型和OCR提取数据?

在AI应用极速发展的当下,LLM(大语言模型)与RAG(检索增强生成)系统已成为构建智能问答、知识管理等高阶应用的核心引擎。 然而,许多团队在项目落地时遭遇了现实的挑战:模型的实际表现——无论是回…

机器学习工程化 3.0:从“实验科学”到“持续交付”的 7 个关卡

一、背景:为什么 90% 的 ML 项目死在了实验台? Gartner 2024 报告显示,87% 的企业机器学习项目未能走出实验室。原因并非算法落后,而是缺少“工程化骨骼”:数据漂移无人发现,模型上线一周就失效&#xff1b…

BGP笔记整理

一、BGP 基础概念1. 产生背景BGP(Border Gateway Protocol)是自治系统(AS)间的动态路由协议,属于外部网关协议(EGP),用于在不同 AS 之间传递路由信息。2. 自治系统(AS&am…

Mysql-MVCC机制

1. MVCC机制详解 在Read Uncommitted级别下,事务总是读取到最新的数据,因此根本用不到历史版本,所以MVCC不在该级别下工作。 在Serializable级别下,事务总是顺序执行。写会加写锁,读会加读锁,完全用不到MVC…

MySQL面试题及详细答案 155道(061-080)

《前后端面试题》专栏集合了前后端各个知识模块的面试题,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

大数据中需要知道的监控页面端口号都有哪些

以下是一些大数据中常见组件监控页面的端口号:1. Hadoop:HDFS Web UI在Hadoop2.x版本中默认端口为50070,在Hadoop3.x版本中为9870,用于查看集群文件及目录;YARN Web UI端口为8088,可查看MR执行情况&…

时隔六年!OpenAI 首发 GPT-OSS 120B / 20B 开源模型:性能、安全与授权细节全解

为什么这次开放值得关注? OpenAI 时隔六年再次“放权重”,一次性公布 gpt-oss-120b 与 gpt-oss-20b 两个尺寸,并允许商业化二次开发 —— 采用 Apache 2.0 许可且可直接在 Hugging Face 下载(WIRED)。官方表示,开放旨在 降低门槛…

漏洞全讲解之中间件与框架漏洞(数字基础设施的“阿喀琉斯之踵“)

一、中间件漏洞的严峻现状根据Synopsys《2023年开源安全报告》显示:企业应用中平均包含158个中间件依赖高危漏洞年增长率达62%(X-Force数据)最危险漏洞:Log4j2(CVE-2021-44228)影响全球83%企业平均修复延迟…

Leetcode——菜鸟笔记2(移动0)

文章目录题目解题题目 解题 /*nums【0&#xff0c;1&#xff0c;0&#xff0c;3&#xff0c;2】numsSize5 nums【1.3.2.0.0】 1.找非零数&#xff0c;依次放在前面 2.剩下补0 */ void moveZeroes(int* nums, int numsSize) {int count0 0;int temp 0;for (int i 0; i < …

【LINUX网络】应用层自定义协议与序列化——通过实现一个简单的网络计算器来体会自定义协议

在了解了各种协议的使用以及简单的socket接口后&#xff0c;学会了“怎么传”的问题&#xff0c;现在来了解一下“传什么”的问题。 1. 序列化与反序列化 在前面的TCP、UDP的socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一…

电脑一键重装系统win7/win10/win11无需U盘(无任何捆绑软件图文教程)

建议还是使用U盘进行重装系统&#xff0c;如果暂时还不会没有U盘&#xff0c;那就按照我这个来吧。 一&#xff0c;工具下载&#xff1a; 一键重装工具 密码:g5p3 二&#xff0c;镜像下载: 镜像站点&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 可以下载需要重装的系统…

深入探索Supervision库:Python中的AI视觉助手

深入探索Supervision库&#xff1a;Python中的AI视觉助手 在计算机视觉和机器学习领域&#xff0c;数据处理和结果可视化是项目成功的关键环节。今天我们将深入探讨一个强大的Python库——Supervision&#xff0c;它专为简化AI视觉项目的工作流程而设计。 什么是Supervision&am…

面向对象之类、继承和多态

系统是由汇总了数据和过程的“对象”组成的。在面向对象中&#xff0c;软件被定义为“类”&#xff0c;然后创建“实例”并运行。系统是通过“实例”之间的互相交换“消息”而运行的&#xff0c;但由于进行了“封装”&#xff0c;所以无法查看内部的详细内容&#xff0c;这被称…

传统防火墙与下一代防火墙

防火墙的发展过程第一种简单包过滤防火墙工作于&#xff1a;3、4层实现了对于IP、UDP、TCP信息的一些检查优点&#xff1a;速度快、性能高、可用硬件实现&#xff1b;兼容性较好检查IP、UDP、TCP信息缺点&#xff1a;安全性有限&#xff1a;仅能基于数据包的表面层面进行审查&a…

计算机视觉前言-----OpenCV库介绍与计算机视觉入门准备

前言&#xff1a;OpenCV库介绍与计算机视觉入门 OpenCV概述 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;由Intel于1999年首次发布&#xff0c;现由非盈利组织OpenCV.org维护。它包含了超过2500种…

AI面试系统助手深度评测:6大主流工具对比分析

导语&#xff1a;秋招季&#xff0c;企业如何破局高效招聘&#xff1f;随着2024年秋招季临近&#xff0c;企业招聘压力陡增。据牛客调研数据显示&#xff0c;74.2%的求职者已接触过AI面试&#xff0c;89.2%的企业认为AI显著提升了筛选效率。然而&#xff0c;面对市场上琳琅满目…

浮雕软件Artcam安装包百度云网盘下载与安装指南

如你所知&#xff0c;ArtCAM是一款专业的CAD/CAM软件工具&#xff0c;主要用于三维浮雕设计、珠宝加工及CNC数控雕刻&#xff0c;可将二维构思快速转化为三维艺术产品&#xff0c;深受使用者的喜爱。一、主要应用领域‌工艺品与制造业‌&#xff1a;木工雕花、标牌制作、模具制…

六边形架构模式深度解析

在分布式系统设计领域&#xff0c;六边形架构&#xff08;Hexagonal Architecture&#xff0c;又称端口与适配器模式&#xff09;作为一种以领域为中心的架构模式&#xff0c;通过明确分离核心业务逻辑与外部交互&#xff0c;有效提升系统的可测试性、可扩展性与可维护性。本文…

Beelzebub靶机

一、主机发现 arp-scan扫描一下局域网靶机 二、信息收集 nmap -sV -A -T4 -p- 192.168.31.132 22端口ssh服务和80端口web服务是打开的 目录扫描 三、渗透测试 访问一下web服务是个apache的首页 web页面分析 有一个很奇怪的地方&#xff0c;index.php明明是一个200的响应&a…

目前常用于视频会议的视频编码上行/下行带宽对比

视频编码上行/下行带宽对比H.264、VP8和VP9在不同终端数量下的上行与下行带宽需求差异&#xff08;单位&#xff1a;Mbps&#xff09;编码效率说明H.264基准编码标准&#xff0c;上行和下行带宽需求相对较高&#xff0c;硬件兼容性最佳VP8开源编码&#xff0c;上行和下行带宽均…