• ES分布式搜索-索引库操作


    索引库操作

    1、mapping映射属性

    可以查看官方文档学习:ES官方手册

    mapping是对索引库中文档的约束,常见的mapping属性包括:

    • type:字段数据类型,常见的简单类型有:

      • 字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)

      • 数值:long、integer、short、byte、double、float、

      • 布尔:boolean

      • 日期:date

      • 对象:object
    • index:是否创建索引,默认为true
    • analyzer:使用哪种分词器(绝大多数情况下分词text即可)
    • properties:该字段的子字段

    2、创建索引库

    ES中通过Restful请求操作索引库、文档。请求内容用DSL语句来表示。创建索引库和mapping的DSL语法如下:

    PUT /索引库名称
    {
      "mappings": {
        "properties": {
          "字段名":{
            "type": "text",
            "analyzer": "ik_smart"
          },
          "字段名2":{
            "type": "keyword",
            "index": "false"
          },
          "字段名3":{
            "properties": {
              "子字段": {
                "type": "keyword"
              }
            }
          },
          // ...略
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    例如:

    # 创建名为rediaz的索引库
    PUT /rediaz
    {
      "mappings": {
        "properties": {
          "info": {
            "type": "text",
            "analyzer": "ik_smart"
          },
          "email": {
            "type": "keyword",
            "index": false  //不会创建索引,不会被搜索
          },
          "name": {
            "type": "object",
            "properties": {
              "firstname": {
                "type": "keyword"
              },
              "lastname": {
                "type": "keyword"
              }
            }
          }
        }
      }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    索引库创建结果:

    {
      "acknowledged" : true,
      "shards_acknowledged" : true,
      "index" : "rediaz"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、查询、删除和修改索引库

    1. 查询:

      GET /索引库名
      
      • 1

      示例:

      GET /rediaz
      
      • 1
    2. 删除:

      DELETE /索引库名
      
      • 1

      示例:

      DELETE /rediaz
      
      • 1
    3. 修改:

      在ES中禁止修改索引库:在索引库创建成功之后,其数据结构(即mapping映射)已经创建好了,ES会基于mapping来创建倒排索引,如果修改索引库,则会将ES库中的所有倒排索引失效。

      但是可以添加新的字段:

      PUT /索引库名/_mapping
      {
      "properties" : {
        "新字段名":{
          "type" : "integer "}
        }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      示例:

      PUT /rediaz/_mapping
      {
      "properties" : {
        "age":{
          "type" : "integer"}
        }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
  • 相关阅读:
    (生物信息学)R语言绘图初级——3-5分文章必备——小提琴图
    IntelliJ IDEA运行Eclipse项目或非Maven项目的详细配置
    iOS Bug 收集
    时间戳权限
    树状数组笔记
    《LeetCode力扣练习》代码随想录——链表(两两交换链表中的节点---Java)
    【深入浅出 Yarn 架构与实现】3-2 Yarn Client 编写
    新唐(nuvoton)MCU软件开发指南—环境搭建设置
    MySQL给查询加序号
    5年Java面试阿里P6经验总结
  • 原文地址:https://blog.csdn.net/m0_63144319/article/details/136565140