草庐IT

Elasticsearch7.8.0版本入门—— Elasticsearch7.8.0映射操作

小志的博客 2023-04-11 原文

目录

一、映射的概述

  • 有了索引库,等于有了数据库中的 database。
  • 索引库(index)中的映射,类似于数据库(database)中的表结构(table)。
  • 创建数据库表需要设置字段名称,类型,长度,约束等;索引库也一样,需要知道这个类型
    下有哪些字段,每个字段有哪些约束信息,这就叫做映射(mapping)。

二、创建映射的示例

2.1、首先,创建索引

  • 在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student
  • 请求后,服务器返回响应

2.2、然后,再创建好的索引基础上,创建映射

  • 在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/ _mapping,请求体内容为:

    {
        "properties": {
            "name":{
                "type": "text",
                "index": true
            },
            "sex":{
                "type": "keyword",
                "index": true
            },
            "age":{
                "type": "long",
                "index": false
            }
        }
    }
    

  • 请求后,服务器返回响应

2.3、映射属性说明

  • 映射属性说明列表
    属性解释
    字段名
    任意填写,下面指定许多属性,例如:title、subtitle、images、price
    type
    类型,Elasticsearch 中支持的数据类型非常丰富,说几个关键的:
    String 类型,分两种(text:可分词;keyword:不可分词,数据会作为完整字段进行匹配)
    Numerical:数值类型,分两类(基本数据类型:long、integer、short、byte、double、float、half_float;浮点数的高精度类型:scaled_float)
    Date:日期类型
    Array:数组类型
    Object:对象
    index
    是否索引,默认为 true,也就是说你不进行任何配置,所有字段都会被索引。
    true:字段会被索引,则可以用来进行搜索
    false:字段不会被索引,不能用来搜索
    index
    是否将数据进行独立存储,默认为 false
    原始的文本会存储在_source 里面,默认情况下其他提取出来的字段都不是独立存储 的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置 "store": true 即可,获取独立存储的字段要比从_source 中解析快得多,但是也会占用 更多的空间,所以要根据实际业务需求来设置。
    analyzer
    分词器,这里的 ik_max_word 即使用 ik 分词器

2.4、查看创建的映射

  • 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/ _mapping
  • 请求后,服务器返回响应

2.5、最后,创建文档

  • 在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/_doc/1,请求体内容为:

    {
    	"name":"王五",
    	"age":30,
    	"sex":"男的"
    }
    

  • 请求后,服务器返回响应

2.6、根据文档中name属性条件查询文档 理解映射示例

  • 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:

    {
        "query":{
            "match":{
                "name":"王"
            }
        }
    }
    

  • 请求后,服务器返回响应

  • 由上图输出结果可知:通过name=“王”,即可查出结果数据,说明创建映射时name属性设置的type值为text,具有分词效果。

2.7、根据文档中sex属性条件查询文档 理解映射示例

  • 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:

    {
        "query":{
            "match":{
                "sex":"男"
            }
        }
    }
    

  • 请求后,服务器返回响应

  • 由上图输出结果可知:通过sex=“男”,查出结果数据为空,说明创建映射时sex属性设置的type值为keyword,不具备分词效果。

2.8、根据文档中age属性条件查询文档 理解映射示例

  • 在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/student/_search,请求体内容为:

    {
        "query":{
            "match":{
                "age":"30"
            }
        }
    }
    

  • 请求后,服务器返回响应

  • 由上图输出结果可知:通过age=“30”,查出结果报错,说明创建映射时age属性设置的index值为false,字段不会被索引,不能用来搜索。

有关Elasticsearch7.8.0版本入门—— Elasticsearch7.8.0映射操作的更多相关文章

  1. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  2. ruby-on-rails - 在 ruby​​ .gemspec 文件中,如何指定依赖项的多个版本? - 2

    我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这

  3. ruby-on-rails - 如果我将 ruby​​ 版本 2.5.1 与 rails 版本 2.3.18 一起使用会怎样? - 2

    如果我使用ruby​​版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby​​1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更

  4. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  5. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

  6. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  7. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  8. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  9. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  10. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

随机推荐