ElasticSearch中字符串类型(Text和keyword)的选择

2023-10-31

ElasticSearch 5.0以后,字符串类型有重大变更,移除了string类型,string字段被拆分成两种新的数据类型: text和keyword。

text:会分词,然后进行索引,用于全文搜索。

          支持模糊、精确查询

          不支持聚合

keyword:不进行分词,直接索引,keyword用于关键词搜索

                  支持模糊、精确查询

                  支持聚合

如果不指定类型,ElasticSearch字符串将默认被同时映射成text和keyword类型,会自动创建下面的动态映射(dynamic mappings):

{
    "foo": {
        "type": "text",
        "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
            }
        }
    }

}

这就是造成部分字段还会自动生成一个与之对应的“.keyword”字段的原因。

可以手动指定类型:

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "text"
          }
        }
      }
    }
  }
}

一个字符串字段可以映射为text字段用于全文本搜索,也可以映射为keyword字段用于排序或聚合,这时候需要用到fields设置多字段。如果业务关系中,需要该字段支持两种类型的查询,可以设置为如下形式:

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": {
          "type": "text",
          "fields": {
            "raw": { 
              "type":  "keyword"
            }
          }
        }
      }
    }
  }
}

name.raw字段是name字段的keyword版本。

拓展:fields多字段另一个应用场景是,设置不同的字段解析器

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "name": { 
          "type": "text",
          "fields": {
            "english": { 
              "type":     "text",
              "analyzer": "english"
            }
          }
        }
      }
    }
  }
}

text类型字段,解析器遇到空格时,会进行分词,比如“abc, def”会被分成[abc,def],但是“abc,def”不会拆分

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ElasticSearch中字符串类型(Text和keyword)的选择 的相关文章

随机推荐

  • swagger对json数据的处理

    在实习中遇到了一个不寻常的事情 今天和同事讨论一个小问题 同事使用swagger 想要调用一个接口 这个接口要传递一个json对象 对应java的一个实体类 但是有一个属性同事不想看到它 就用 JsonIgnore给注掉了 当时这个我不知道
  • gulp4.0入门, 看这一篇就够了

    前言 之前我们讲了gulp3 0 这篇引入gulp4 0 4 0相比3 0有一些改变的地方 gulp3 0压缩顺序默认是顺序执行的 4 0引入压缩并行的处理方式 gulp series 4 0 依赖顺序执行 gulp parallel 4
  • C# ASP.NET 连接MySQL 如何先进行多条件查询,然后进行数据库插入操作

    数据库内有很多字段 但是2个字段 id mac id 中的任何一个都不能在数据库的记录中重复 WEB网页上有n个TEXTBOX控件 用于输入数据库字段的值 其中 textbox1输入id字段值 textbox3输入mac id字段的值 插入
  • Python爬虫:设置Cookie解决网站拦截并爬取蚂蚁短租

    我们在编写Python爬虫时 有时会遇到网站拒绝访问等反爬手段 比如这么我们想爬取蚂蚁短租数据 它则会提示 当前访问疑似黑客攻击 已被网站管理员设置为拦截 提示 如下图所示 此时我们需要采用设置Cookie来进行爬取 下面我们进行详细介绍
  • VTM1.0代码阅读:compressCtu函数

    compressCtu函数是对一个ctu进行编码的函数 入口参数cs是pictrue的cs 这个cs里面存储当前帧的所有已编码过CTU的cu pu tu等信息 area为当前要编译ctu的区域 ctuRsAddr为当前ctu的rs扫描地址
  • 【笔记-node】《imooc-nodejs入门到企业web开发中的应用》

    目录 课程名 备注 入门必学 nodejs入门到企业web开发中的应用 框架与工具 node js koa2 mysql打造前后端分离精品项目 旧岛 项目实战 20190317 20200720 imooc nodejs入门到企业web开发
  • DTO/VO/Entity等数据类型转换

    DTO VO Entity等数据类型转换 在web开发中 前端传递数据给后端时采用DTO类型 而存入数据库时则采用entity类型 这样的操作存在类型转换 如果我们一个一个的设值也就太麻烦了 我们可以采用spring提供的jar包来解决这样
  • 计算机 创新方法举例,列举列举五种创新的方法并加以举例说明

    一 简化模式 在研发新产品时 我们总会不自觉的想要在产品上增加新的特色或功能 导致产品使用起来越发复杂 这样的画蛇添足对产品来说是一种负担 我们要运用简化模式 主要是将产品中多余的属性移除 再增加新功能 例如 手机从键盘按键模式变成触屏的虚
  • mybatisPlus update更新部分字段

    第一种方式 其中 lambdaUpdateWrapper set 表示要更新的字段值 eq 则表示 WHERE 条件 public void updateEntity LambdaUpdateWrapper
  • 人工智能AI生成的艺术:从文本到图像、视频、3D建模

    继去年火遍全网的虚拟人之后 AI绘画又成了今年热议的科技话题 AI绘画就是 以文生图 打通了文字和图像的隔阂 只要输入一段文字描述 AI 就可以把用户脑海中想象的画面呈现出来 这是一种文字转图像 Text to image 特性的崭新交互方
  • 基于SpringBoot的在线教育平台系统

    基于SpringBoot Vue的线教育平台系统 前后端分离 开发语言 Java 数据库 MySQL 技术 SpringBoot Vue Mybaits Plus ELementUI 工具 IDEA Ecilpse Navicat Mave
  • 【专题5: 硬件设计】 之 【69.开关电源 之 如何计算buck电路占空比和电感的计算】

    嵌入式工程师成长之路 系列文章 总目录 系列文章总目录 希望本是无所谓有 无所谓无的 这正如脚下的路 其实地上本没有路 走的人多了 也便成了路 原创不易 文章会持续更新 欢迎微信扫码关注公众号 承接 小程序 嵌入式 PC端项目开发 联系作者
  • Apache Kafka Connect JNDI注入漏洞复现(CVE-2023-25194)

    1 产品简介 Kafka Connect是一种用于在Apache Kafka和其他系统之间可扩展且可靠地流式传输数据的工具 它使快速定义将大量数据移入和移出Kafka的连接器变得简单 Kafka Connect可以摄取整个数据库或从所有应用
  • STM32+SG90舵机详解(详细)

    上一次使用舵机只是草草了解 只大概知道是pwm控制的 这次又使用到了舵机 本以为复制上次代码就可以调试成功 没想到却弄了很久 我使用的是STM32f103c8t6 用的是定时器4 这个f1板子的定时器各个通道io口如下图所示 在开始之前我们
  • git push -u origin master

    1 错误描述 出错场景描述 github上创建远程仓库的时候选择添加README md文件 git bash连接远程库 然后执行push操作 出现下面的问题 git push u origin master To github com XX
  • Linux 下存放ssh信息的文件位置

    vi root ssh known hosts root prme stg dhcp1649 StorageJavaAuto cat root ssh known hosts prme stg188 eng vmware com 10 11
  • axure创建网页

    最近发现一个好玩的东西 就是axure了 学习操作了下 弄出了一个简单的搜狗页面还有登录界面 该有的交互也弄了些 感觉挺好玩的 也扒拉下生成了html 好好看看 代码可能有点长 你忍一下qwq
  • Ubuntu小技巧19--Kibana安装方法

    Ubuntu小技巧19 Kibana安装方法 Kibana 是一款开源的数据分析和可视化平台 它是 Elastic Stack 成员之一 设计用于和 Elasticsearch 协作 可以使用 Kibana 对 Elasticsearch
  • c++pointer踩坑记录 (std::move, shared_ptr)

    要实现的需求 拿到一个指向数据的void 指针 用这个指针替换旧对象数据 要求 不额外申请内存 我在这过程中搜过的问题 看的知识点 how to use enum in c use std move to pointer std vecto
  • ElasticSearch中字符串类型(Text和keyword)的选择

    ElasticSearch 5 0以后 字符串类型有重大变更 移除了string类型 string字段被拆分成两种新的数据类型 text和keyword text 会分词 然后进行索引 用于全文搜索 支持模糊 精确查询 不支持聚合 keyw