三、ElasticSearch 8.6.0 快速使用 - 索引 API 的基本操作

作者: 温新

分类: 【Elasticsearch】

阅读: 1202

时间: 2023-02-21 16:44:40

hi,我是温新,一名 PHPer

ES 版本:ElasticSearch 8.6.0

系统版本:Rocky Linux 9.1

学习目标:掌握索引的 CURD 操作

本篇文章结合官方文档编写及参考网络资料编写,虽非全部原创,但也是结合了自己的理解,若转载请附带本文 URL,编写不易,持续编写更不易,谢谢!

本篇文章将学习索引的 CURD 操作。

创建索引

语法:

<span style="color: rgb(238, 236, 225);">PUT <index_name></span><br></br>

index_name 为索引名称。

索引命名规范:

必须以小写英文字母命名索引;

不要使用驼峰命令;

出现多个单品时,以全小写 + 下划线分隔方式,如 goods_shop

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 添加索引</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">PUT ziruchu</span>

成功返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"shards_acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"index"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ziruchu1"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

删除索引

语法:

<span style="color: rgb(238, 236, 225);">DELETE <index_name></span><br></br>

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 删除索引</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">DELETE ziruchu</span>

成功返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

判断索引是否存在

语法:

<span style="color: rgb(238, 236, 225);">HEAD <index_name></span><br></br>

案例:

<span style="color: rgb(238, 236, 225);">HEAD ziruchu</span><br></br>

返回值:

<span style="color: rgb(238, 236, 225);">200 - OK</span><br></br>

settings 设置

创建索引时指定 settings

语法:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">PUT <index_name></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"settings"</span>: {}</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 添加索引并设置 settings</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">PUT ziruchu</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"settings"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"number_of_shards"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span>,  //主分片数量为 <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"number_of_replicas"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">1</span> //每个主分片分配一个副本</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"shards_acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"index"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ziruchu"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

查询索引

语法:

<span style="color: rgb(238, 236, 225);">GET <index_name></span><br></br>

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 查询索引</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">GET ziruchu</span>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"ziruchu"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"aliases"</span>: {},</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"mappings"</span>: {},</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"settings"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"index"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"routing"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">          <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"allocation"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">            <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"include"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">              <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"_tier_preference"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"data_content"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">            }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">          }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        },</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"number_of_shards"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"1"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"provided_name"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ziruchu"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"creation_date"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"1676987928986"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"number_of_replicas"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"1"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"uuid"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"wArIVeQASZ6shIVtkD-Q4w"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"version"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">          <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"created"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"8060099"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

关闭索引

语法:

<span style="color: rgb(238, 236, 225);">POST <index_name>/close</span><br></br>

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 关闭索引</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">POST ziruchu/_close</span>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"shards_acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"indices"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ziruchu"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"closed"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

打开索引

语法:

<span style="color: rgb(238, 236, 225);">POST <index_name>/_open</span><br></br>

案例:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(98, 151, 85) !important"># 打开索引</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">POST</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">ziruchu</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">/</span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">_open</span></span>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"shards_acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

添加索引 & 映射 & 分词

添加索引的时候可以添加该索引的映射,且可以为映射指定分词。下面直接通过案例演示:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px"><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">PUT</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">human</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"mappings"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"properties"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"name"</span>: {</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"type"</span>:<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"keyword"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      },</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"address"</span>:{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"type"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"text"</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">        <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"analyzer"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ik_max_word"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">      }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">    }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  }</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"shards_acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span>,</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"index"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"human"</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>

删除索引

语法:

<span style="color: rgb(238, 236, 225);">DELETE <index_name></span><br></br>

案例:

<span style="color: rgb(238, 236, 225);">DELETE ziruchu</span><br></br>

返回值:

<span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">{</span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">  <span class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"acknowledged"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">true</span></span><br></br><span style="box-sizing: border-box;color: rgb(171, 178, 191);padding-right: 0.1px">}</span>
请登录后再评论