Elasticsearch索引库和文档的相关操作详细指南

 更新时间:2023年11月02日 09:50:37   作者:小威要向诸佬学习呀  
这篇文章主要给大家介绍了关于Elasticsearch索引库和文档的相关操作的相关资料,Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言:

最近一直在复习Elasticsearch相关的知识,公司搜索相关的技术用到了这个,用公司电脑配了环境,借鉴网上的课程进行了总结。希望能够加深自己的印象以及帮助到其他的小伙伴儿们😉😉。

mapping映射属性

前面说到,Mapping映射是索引中对文档的约束,类似于数据库表中对字段的约束。那么mapping都有哪些常见的属性呢:

type:type属性是用来定义字段数据类型结构的,常见的简单类型有:

  • 字符串:text(可以分词的文本),keyword(精确值,不可分词)
  • 数值:byte,short,integer,long,float,double
  • 布尔型:boolean
  • 日期型:date
  • 对象型:object

index:用来说明是否创建索引,不设置时默认为true(创建索引)

analyzer:使用哪种分词器,ik_smart(最少切分,粗粒度),ik_max_word(最细切分,细粒度)

properties:字段中的子字

操作索引库

操作索引库和操作文档的命令略微简单一些,以下简单做个概述吧。

创建索引库

在我们学习ssm框架的时候,用到了restful请求风格,在es中,也是通过restful请求来操作索引库和文档的。请求的内容用DSL语句表示,创建索引库的DSL语句如下:

由上可以看到,当type类型为"text"时,才能设置分词器类型,当字段类型为“keyword”时,不会设置。在字段的内部可以有子字段的。

举个栗子,我们对下面栗子编写DSL语句:

{
“info”: “小威要向诸佬学习”,
“email”: “xiaoweibest.cn”
“name”:{
“firstname”: “小”,
“lastname”: “威”
}
}

分析:info中的内容是需要分词的,email中的内容不需要,name中同时又有两个子属性:

PUT /xiaowei
{
  "mappings":{
    "properties":{
      "info": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "object",
        "properties": {
          "firstname": {
            "type": "keyword"
          },
          "lastname": {
            "type": "keyword"
        }
        }
      }
    }
  }
}

运行即可创建索引库:

查询,删除索引库

查看索引库仅需要通过简单的Get命令,后面跟要查询的索引库名称即可,即Get 索引库名。以刚创建的索引库为例:

# 查看数据库
GET /xiaowei

想必很容易猜的出删除索引库的命令,佬想对了,删除索引库命令就是DELETE 索引库名称,即:

# 删除索引库
DELETE /xiaowei

修改索引库

在es中,索引库和mapping映射创建后无法对其进行修改,因为创建后,es会根据映射为其创建倒排索引,一旦修改索引库和mapping,倒排索引会失效,但是可以为索引库添加新的字段:

添加类型为long的年龄字段:

PUT /xiaowei/_mapping
{
  "properties": {
    "age": {
      "type": "long"
    }
  }
}

将年龄字段类型修改为integer并运行:

PUT /xiaowei/_mapping
{
  "properties": {
    "age": {
      "type": "integer"
    }
  }
}

运行后会发现会提示不能修改索引库:

操作文档

索引库中文档的操作DSL语法也比较简单,这里直接以例子的形式记录知识

增删查文档

添加文档的语法比较简单,和上面类似:

#新增文档
POST /xiaowei/_doc/1
{
  "info": "小威",
  "email": "xiaowei.cn",
  "name": {
    "firstname": "小",
    "lastname": "威"
  }
}

由上图可以看到创建文档成功,并且会有版本号version,在每次改变文档时,版本号都会进行+1操作。
当然,查询和删除文档和上面的例子命令一样,查询文档GET/索引库名称/_doc,删除文档DELECT/索引库名称/_doc。

GET /xiaowei/_doc/1

DELECT /xiaowei/_doc/1

如上图,每次操作文档version的值都会进行+1。

修改文档

修改文档有两种方式,一种为PUT命令全量覆盖,一种为POST命令局部修改。

使用PUT命令操作文档时,如果只是PUT了一个字段,其他的字段就被覆盖了,相当于删除了之前旧的文档,重新创建了一个新文档。
而POST命令可以局部修改想要改变的值,即增量修改,修改指定字段的值。。

比如讲刚才添加文档的email值首字母大写,DSL代码如下:

POST /xiaowei/_update/1
{
  "doc": {
    "email": "XiaoWei.cn"
  }
}

运行结果:

总结

到此这篇关于Elasticsearch索引库和文档的相关操作的文章就介绍到这了,更多相关Elasticsearch索引库和文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot如何实现读取.config文件

    SpringBoot如何实现读取.config文件

    文章介绍如何在Java中读取XML文件:通过创建XML数据源、定义POJO类(含父类Menudata和子类Menudatas)、编写解析工具、实现Service层及Controller调用,最终使用Layui框架展示数据,强调文件后缀转换及层级结构处理
    2025-08-08
  • JAVA中JNI的简单使用分享

    JAVA中JNI的简单使用分享

    这篇文章介绍了JAVA中JNI的简单使用,有需要的朋友可以参考一下
    2013-10-10
  • Java中字节流和字符流的区别与联系

    Java中字节流和字符流的区别与联系

    Java中的字节流和字符流是用于处理输入和输出的两种不同的流,本文主要介绍了Java中字节流和字符流的区别与联系,字节流以字节为单位进行读写,适用于处理二进制数据,本文结合实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2024-12-12
  • spring boot实现软删除的示例代码

    spring boot实现软删除的示例代码

    这篇文章主要介绍了spring boot实现软删除的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • java获取两个数组中不同数据的方法

    java获取两个数组中不同数据的方法

    这篇文章主要介绍了java获取两个数组中不同数据的方法,实例分析了java操作数组的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • struts2静态资源映射代码示例

    struts2静态资源映射代码示例

    这篇文章主要介绍了struts2静态资源映射的相关内容,涉及了具体代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-09-09
  • Kotlin 基础教程之类、对象、接口

    Kotlin 基础教程之类、对象、接口

    这篇文章主要介绍了Kotlin 基础教程之类、对象、接口的相关资料,需要的朋友可以参考下
    2017-06-06
  • java指纹识别以及谷歌图片识别技术源码

    java指纹识别以及谷歌图片识别技术源码

    这篇文章主要为大家详细爱介绍了java指纹识别以及谷歌图片识别技术源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • mybatis中association标签的使用解读

    mybatis中association标签的使用解读

    这篇文章主要介绍了mybatis中association标签的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • MyBatis-Plus模糊查询特殊字符串转义的实现

    MyBatis-Plus模糊查询特殊字符串转义的实现

    使用MyBatis中的模糊查询时,当查询关键字中包括有_、\、%时,查询关键字失效,本文主要介绍了MyBatis-Plus模糊查询特殊字符串转义的实现,感兴趣的可以了解一下
    2024-06-06

最新评论