五、ElasticSearch 8.6.0 快速使用 - 映射 API 的基本操作

作者: 温新

分类: 【Elasticsearch】

阅读: 922

时间: 2023-02-22 07:53:10

hi,我是温新,一名 PHPer

ES 版本:ElasticSearch 8.6.0

系统版本:Rocky Linux 9.1

学习目标:掌握映射的 CURD 操作

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

映射:把它当做 MySQL 中的数据表结构来看。

前情回顾

上篇文章中,添加文档时并没有创建映射,这是因为 ES 中的自动映射。

在 ES 中,创建索引前,不强制要求创建映射,ES 会根据字段的值来推断字段类型,从而自动创建并指定索引类型。

查看映射

1、查看完整映射

语法:

<span style="color: rgb(255, 255, 255);">GET /<index_name>/_mappings</span><br></br>

案例:

<span style="color: rgb(255, 255, 255);">GET ziruchu/_mapping</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">"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">"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">"properties"</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">"age"</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">"type"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"long"</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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"name"</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">"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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"fields"</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">"keyword"</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">"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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"ignore_above"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">256</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><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>

2、查看索引中指定字段的 _mappings

语法:

<span style="color: rgb(255, 255, 255);">GET /<index_name>/_mappings/field/<field_name></span><br></br>

案例:

<span style="color: rgb(255, 255, 255);">GET ziruchu/_mapping/field/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 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">"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">"name"</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">"full_name"</span>: <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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"mapping"</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">"name"</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">"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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"fields"</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">"keyword"</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">"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 class="cm-string cm-property" style="box-sizing: border-box;color: rgb(97, 175, 239) !important">"ignore_above"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">256</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><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 style="box-sizing: border-box;color: rgb(209, 154, 102) !important">PUT</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">index_name</span><span style="box-sizing: border-box;color: rgb(86, 182, 194) !important">></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">"field_a"</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">"<parameter_name>"</span>: <span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"<parameter_value>"</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="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">arts</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">"title"</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">"arts"</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(86, 182, 194) !important"><</span><span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">index_name</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">_mapping</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">"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">"<field_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">"text"</span>, <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(152, 195, 121) !important">"analyzer"</span>:<span style="box-sizing: border-box;color: rgb(152, 195, 121) !important">"ik_max_word"</span>, <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(152, 195, 121) !important">"fielddata"</span>: <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">false</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="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">put</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">ziruchu_arts</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(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">PUT</span> <span style="box-sizing: border-box;color: rgb(209, 154, 102) !important">ziruchu_arts</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">_mapping</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">"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">"age"</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">"integer"</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="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>
请登录后再评论