Elasticsearch系列——实战探索text与keyword的区别

Elasticsearch系列——实战探索text与keyword的区别前言本文使用的工具是 kibana Linux Kibana 的安装与测试 在 elasticsearc x 版本 字符串数据只有 string 类型 ES 更新到 5 版本后 取消了 string 数据类型 代替它的是 keyword 和 text 数据类型那么 text 和 keyword 有什么区别呢 我们通过下面的步骤来探索一下 step1 添加数据首先 使用 bulk 往 es

作者专注于Java、架构、Linux、小程序、爬虫、自动化等技术。 工作期间含泪整理出一些资料,微信搜索【程序员高手之路】,回复 【java】【黑客】【爬虫】【小程序】【面试】等关键字免费获取资料。

先赞后看,此生必赚!

前言

本文使用的工具是kibana(Linux—Kibana的安装与测试)

在 elasticsearch2.x 版本,字符串数据只有string类型

ES更新到5版本后,取消了 string 数据类型,代替它的是 keyword 和 text 数据类型

那么 text 和keyword有什么区别呢?

我们通过下面的步骤来探索一下:

step1 添加数据

首先,使用bulk往es数据库中批量添加一些document(关于bulk批量操作的命令,请参考:点我打开链接)

POST /book/novel/_bulk {"index": {"_id": 1}} {"name": "Gone with the Wind", "author": "Margaret Mitchell", "date": "2018-01-01"} {"index": {"_id": 2}} {"name": "Robinson Crusoe", "author": "Daniel Defoe", "date": "2018-01-02"} {"index": {"_id": 3}} {"name": "Pride and Prejudice", "author": "Jane Austen", "date": "2018-01-01"} {"index": {"_id": 4}} {"name": "Jane Eyre", "author": "Charlotte Bronte", "date": "2018-01-02"}

Elasticsearch系列——实战探索text与keyword的区别

step2 查看mapping

查看一下mapping

发现name、author的type是text,

还有个field是keyword,keyword的type是keyword:

Elasticsearch系列——实战探索text与keyword的区别

step3 查询

我们使用term查询某个小说:

GET book/novel/_search { "query": { "constant_score": { "filter": { "term": { "name": "Gone with the Wind" } }, "boost": 1.2 } } }

结果是什么也没有查到:

Elasticsearch系列——实战探索text与keyword的区别

然后使用name的keyword查询:

GET book/novel/_search { "query": { "constant_score": { "filter": { "term": { "name.keyword": "Gone with the Wind" } }, "boost": 1.2 } } }

可以查询到一条数据:

Elasticsearch系列——实战探索text与keyword的区别

step4 实验

使用name不能查到,而使用name.keyword可以查到,很奇怪呢!

使用name进行分词的时候,结果会有4个词出来:

Elasticsearch系列——实战探索text与keyword的区别

使用name.keyword进行分词的时候,结果只有一个词出来:

Elasticsearch系列——实战探索text与keyword的区别

结论

1. text类型:会分词,先把对象进行分词处理,然后再再存入到es中。

当使用多个单词进行查询的时候,当然查不到已经分词过的内容!

2. keyword:不分词,没有把es中的对象进行分词处理,而是存入了整个对象

这时候当然可以进行完整地查询!默认是256个字符!

OK, GAME OVER!

更多内容,请关注公众号:程序员高手之路

在公众号回复:es基础   即可免费获取elasticsearch视频教程(未加密)!

Elasticsearch系列——实战探索text与keyword的区别

Elasticsearch系列——实战探索text与keyword的区别

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230330.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月5日 上午10:01
下一篇 2026年3月5日 上午10:22


相关推荐

  • ansible及ansible-palybook使用(持续更新)

    ansible及ansible-palybook使用(持续更新)

    2022年3月11日
    72
  • 人眼中的光 —— 光强,光通量,光照度,光亮度是什么

    人眼中的光 —— 光强,光通量,光照度,光亮度是什么平时接触到一些对光描述的词汇总是一头雾水 本文对这些词汇术语进行了介绍 并从非专业的角度进行理解 1 客观存在首先 光是一种电磁波 当一个物体发光时相当于向外辐射能量 其向外辐射的光能可以用焦耳 J 表示 辐射光能的功率可以用瓦特 W 来描述 另外 光源往往以点光源的形式存在像烛光 灯泡 离我们很遥远的恒星 它们朝着四面八方发光向外扩散 我们以发光点为圆心作半径为 1 的一个球 球的面积为 在球的表面取面积为 1 的一块圆片 这块圆片对应一个锥形空间称为 1 立体角 sr 它可以帮我们描述光在不同

    2025年11月19日
    5
  • ajax html例子,AJAX实例[通俗易懂]

    ajax html例子,AJAX实例[通俗易懂]AJAX实例实例一:一个简单的AJAX实例创建一个简单的XMLHttpRequest,从一个TXT文件中返回数据实例functionloadXMLDoc(){varxmlhttp;if(window.XMLHttpRequest){//IE7+,Firefox,Chrome,Opera,Safari浏览器执行代码xmlhttp=newXMLHttpRequest();}els…

    2022年8月16日
    10
  • 「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发

    「超市管理系统——商品管理」 · Java Swing + MySQL JDBC开发目录文档说明 一 语言和环境二 要求三 重要说明四 推荐实现步骤五 注意事项实现代码 一 数据库 二 JavaSwing com ynavc Beancom ynavc Controllerco ynavc Daocom ynavc Testcom ynavc Vive 文档说明 一 语言和环境 A 实现语言 Java SWING JDBC MySqlB 开发环境 MyEclipse9 0 及以上版本 MySql5 6 及

    2026年3月19日
    2
  • ofbiz学习笔记

    ofbiz学习笔记

    2022年1月27日
    56
  • 指针初始化

    指针初始化引用:https://blog.csdn.net/qq_43574794/article/details/84864349https://baike.baidu.com/item/%E6%8C%8

    2022年7月3日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号