首页 > 其他分享 >Elasticsearch--索引映射管理

Elasticsearch--索引映射管理

时间:2024-07-23 09:26:54浏览次数:14  
标签:映射 -- text secisland mapping 索引 Elasticsearch type

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO

联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬

学习必须往深处挖,挖的越深,基础越扎实!

阶段1、深入多线程

阶段2、深入多线程设计模式

阶段3、深入juc源码解析


阶段4、深入jdk其余源码解析


阶段5、深入jvm源码解析

码哥源码部分

码哥讲源码-原理源码篇【2024年最新大厂关于线程池使用的场景题】

码哥讲源码【炸雷啦!炸雷啦!黄光头他终于跑路啦!】

码哥讲源码-【jvm课程前置知识及c/c++调试环境搭建】

​​​​​​码哥讲源码-原理源码篇【揭秘join方法的唤醒本质上决定于jvm的底层析构函数】

码哥源码-原理源码篇【Doug Lea为什么要将成员变量赋值给局部变量后再操作?】

码哥讲源码【你水不是你的错,但是你胡说八道就是你不对了!】

码哥讲源码【谁再说Spring不支持多线程事务,你给我抽他!】

终结B站没人能讲清楚红黑树的历史,不服等你来踢馆!

打脸系列【020-3小时讲解MESI协议和volatile之间的关系,那些将x86下的验证结果当作最终结果的水货们请闭嘴】

映射(mapping)

映射像关系数据库中的表结构,每一个索引都有一个映射,它定义了索引中的每一个字段类型,以及一个索引范围内的设置。一个映射可以事先被定义,或者在第一次存储文档的时候自动识别。

增加映射

API允许向索引(index)添加文档类型(type),或者向文档类型中添加字段(field)。

    PUT /secisland
    {
      "mappings": {
        "log":{
          "properties": {
            "message":{
              "type": "text"
            }
          }
        }
      }
    }
    
    
    GET /secisland/_mapping

添加索引名为secisland,文档类型为log,其中包含字段message,字段类型为text。


    PUT secisland/_mapping/user
    {
      "properties": {
        "name": {
          "type": "text"
        }
      }
    }

向已经存在的索引secisland添加文档类型为user,包含字段name,字段类型为text。


```js PUT secisland/_mapping/log { "properties": { "user_name": { "type": "text" } } } ``` 已经存在索引secisland,文档类型为log,添加新的字段user_name,字段类型是字符串。

    //查看mapping
    GET /secisland/_mapping

返回:

    {
      "secisland": {
        "mappings": {
          "user": {
            "properties": {
              "name": {
                "type": "text"
              }
            }
          },
          "log": {
            "properties": {
              "message": {
                "type": "text"
              },
              "user_name": {
                "type": "text"
              }
            }
          }
        }
      }
    }

1. 多个索引设置映射
可以一次向多个索引添加文档类型:

    PUT /{index}/_mapping/{type}
    {body}
  • {index}可以有多种方式,都好分隔:比如test1,test2,test3。_all表示所有索引。通配符*表示所有。test*表示以test开头。
  • {type}需要添加或更新的文档类型。
  • {body}需要添加的字段或字段类型

2. 更新字段映射
在一般情况下,对现有字段的映射不会更新。对这个规则有一些例外。

  1. 新的属性被添加到对象数据类型的字段。
  2. 新的多域字段被添加到现有的字段。
  3. doc_values可以被禁用。
  4. 增加了ignore_above参数

3. 不同类型之间的冲突
在同一个索引的不同类型中,相同名称的字段中必须有相同的映射,因为它们内部是在同一个领域内,如果试图在这种情况下更新映射参数,系统将会抛出异常。除非在更新的时候指定update_all_types参数。在这种情况下它将更新所有同一索引同名称的映射参数。

示例:

    PUT /secisland/
    {
      "mappings": {
        "type_one":{
          "properties": {
            "text":{"type": "text", "analyzer": "standard"}
          }
        },
        "type_two":{
          "properties": {
            "text":{"type": "text", "analyzer": "standard"}
          }
        }
      }
    }

修改type_one的映射

    PUT /secisland/_mapping/type_one
    {
      "properties": {
        "text":{
          "type": "text",
          "analyzer": "standard",
          "search_analyzer": "whitespace"
        }
      }
    }

报错:


如果要修改,添加参数update_all_types,同时更新两个类型。

    PUT /secisland/_mapping/type_one?update_all_types
    {
      "properties": {
        "text":{
          "type": "text",
          "analyzer": "standard",
          "search_analyzer": "whitespace"
        }
      }
    }
获取映射

获取文档映射接口允许通过索引或者索引和类型来搜索:

    GET /secisland/_mapping/type_one

系统支持同时获取多个索引和类型的语法。
获取文档映射接口一次可以获取多个索引或文档映射类型。

格式如下:

    GET /{index}/_mapping/{type}
    
    {type}和{index}可以接受逗号(,)分隔符,也可以使用_all来表示全部索引。

获取字段映射

获取文档字段接口允许搜索一个或多个字段。这个用来搜索想要搜索的字段, 而不是某个索引或者文档类型的全部内容。

示例:搜索secisland索引中type_one所有为text类型的字段

    GET /secisland/_mapping/type_one/field/text

返回:

    {
      "secisland": {
        "mappings": {
          "type_one": {
            "text": {
              "full_name": "text",
              "mapping": {
                "text": {
                  "type": "text",
                  "analyzer": "standard",
                  "search_analyzer": "whitespace"
                }
              }
            }
          }
        }
      }
    }

一次获取多个索引或文档映射类型:

    GET /{index}/{type}/_mapping/field/{field}

{index},{type},{field}可以使用逗号(,)分隔,也可以使用通配符。

    GET /secisland,kimchy/_mapping/field/message
    GET /_all/_mapping/secilog,book/field/message,user.id
    GET /_all/_mapping/tw*/field/*.id

指定字段的操作如下。获取文档字段接口,可以使用逗号(,)分隔符或者通配符(*)。

对象类型的字段可以使用(.)来指定具体字段。

    GET /secisland/_mapping/article/field/author.id

判断类型是否存在

检查索引或文档类型是否存在:

    HEAD /secisland/secilog

存在返回200,不存在返回404

标签:映射,--,text,secisland,mapping,索引,Elasticsearch,type
From: https://blog.csdn.net/smart_an/article/details/140624751

相关文章

  • Elasticsearch--索引别名
    作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬学习必须往深处挖,挖的越深,基础越扎实!阶段1、深入多线程阶段2、深入多线程设计模式阶段3、深入juc源码解析阶段4、深入jdk其余源码解析......
  • 0基础小白学编程一定要知道的十个网站
    作为计算机专业马上要毕业的学姐分享一期——新手编程需要知道的高含金量的网站这些基础网站陪我走过一个又一个考试周,简直yyds!!那不得把我这三年来压箱底的网站交出来如果觉得对你有点用,辛苦友友一键三连哦!抱拳=.=废话不多说,直接开正文----------------------------------......
  • 冒泡排序与选择排序
    选择排序:(1)首先通过n-1次比较,从n个数中找出最小的,将它与第一个数交换—第一趟选择排序,结果最小的数被安置在第一个元素位置上。(2)再通过n-2次比较,从剩余的n-1个数中找出关键字次小的记录,将它与第二个数交换—第二趟选择排序(3)重复上述过程,共经过n-1趟排序后,排序结束排序原......
  • LSI-9361-RAID卡如何解除安全模式?
    一、故障现象RAID卡进入安全模式导致系统无法引导成功。(如下截图)图一二、恢复安全模式方案1、 进入 BIOS 配置,然后选择 Advanced,再选中 AVAGOMegaRAID。图二2、MainMenu回车进入图三3、选择ControllerManagement回车进入图四4、选择AdvancedContr......
  • 双LIN收发器TJA1022(NXP)
    一、简述TJA1022支持2路LIN(LocalInterconnectNetwork),波特率高达20Kbd,符合LIN2.0、LIN2.1、LIN2.2、LIN2.2A、ISO17987-4:2016(12VLIN)和SAEJ2602规范。TJA1022T和TJA1022TK(SO14/HVSON14封装)与TJA1020、TJA1021、TJA1027和TJA1029引脚兼容; TJA1022HG(DHVQFN24封装)与......
  • “微软蓝屏”事件暴露了软件更新过程中的风险
    “微软蓝屏”事件暴露了网络安全哪些问题?近日,一次由微软视窗系统软件(CrowdStrike)更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全技术公司“众击”提供的一个带有“缺陷”的软件更新,它......
  • S参数入门
    个人公众号的文章。一、说明S参数全称为散射参数,主要用来作为描述线性无源互联结构的一种行为模型,来源于网络分析方法。网络分析法是一种频域方法,在一组离散的频率点上,通过在输入和输出端口得到的参量完全描述线性时不变系统(定义参考《信号与系统》),无需了解系统的内部详细构......
  • 如何在 Google Colab 上打开 txt?
    我的iris.txt存储在GoogleDrive的MyDrive/ML中,我试图打开并阅读它。importcsvimportnumpyfile=open(r"/drive/ML/iris.txt")mylist=list(csv.reader(file))lines=numpy.asarray(mylist)它返回了错误,我该怎么办?IOErrorTraceback(mostrecentcalll......
  • 1258:【例9.2】数字金字塔
    1.题目描述题目。。。是这样的来!\(3!2!1!\)上链接!我是链接2.分析从下往上开始,最大的是\(24\),有两条路可走,就走大的那一个\(15\)以此判断,最后加上\(13\)便为\(13+8+26+15+24=86\)果然,dp大法好!Q:dp是什么?A:动态规划Q:动态规划是什么?A:自行百度我是另一个链接3.代码......
  • 「代码随想录算法训练营」第十八天 | 二叉树 part8
    669.修剪二叉搜索树题目链接:https://leetcode.cn/problems/trim-a-binary-search-tree/题目难度:中等文章讲解:https://programmercarl.com/0669.修剪二叉搜索树.html视频讲解:https://www.bilibili.com/video/BV17P41177ud?share_source=copy_web题目状态:没有思路,看题解过......