es版本2.x的string和5.x的keyword,text的区别和联系

2024-05-29 09:48

本文主要是介绍es版本2.x的string和5.x的keyword,text的区别和联系,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 es2.x和es5.x版本定义字符串类型

2.x版本的es

string的类型

全文检索   分词   index=analysis  按单个字符匹配    被称作analyzed字符串

关键词搜索 不分词  index=not_analysis  按照整个文本进行匹配  被称为not-analyzed字符串

index=no  表示不被索引,产生的后果就是不能被检索到

string类型会给我们带来很多困惑:

5.x版本的es

为了避免上述尴尬, string字段被拆分成两种新的数据类型: text(分词)用于全文搜索的, 而keyword(不分词)用于关键词搜索.

ElasticSearch决定从Logstash中借取思路: 字符串将默认被同时映射成text和keyword类型

{

    "foo": "bar"

}

ElasticSearch将会为你创建下面的动态映射(dynamic mappings):

{

    "foo": {

        "type": "text",

        "fields": {

            "keyword": {

                "type": "keyword",

                "ignore_above": 256

            }

        }

    }

}

当然, 基于这个映射你即可以在foo字段上进行全文搜索, 也可以通过foo.keyword字段实现关键词搜索及数据聚合.

第二:2.x和5.x中text和keyword的对比

1.定义分词analyzed,2.x和5.x的定义

{

    "foo": {

        "type": "string",

        "index": "analyzed"

    }

}

如今只要映射为text即可:

 

{

    "foo": {

        "type": "text",

        "index": true

    }

}

换句话说:2.x的type=string,index=analyzed等于5.x的type=text,index=true

2.定义分词not_analyzed,2.x和5.x的定义

{

    "foo": {

        "type": "string",

        "index": "not_analyzed"

    }

}

也只需要被定义为keyword即可:

 

{

    "foo": {

        "type": "keyword",

        "index": true

    }

}

换句话说:2.x的type=string,index=not_analyzed等于5.x的type=keyword,index=true

简而言之,言而总之:text(分词),keyword(不分词)一个用于全文检索,一个用于聚合和排序。

都看到这里了,就顺手点击左上角的【关注】按钮,点击右上角的小手,给个评论,关注一下,再走呗!☺

https://blog.csdn.net/u010825931/article/details/8091639

这篇关于es版本2.x的string和5.x的keyword,text的区别和联系的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1013326

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

数据库使用之union、union all、各种join的用法区别解析

《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,... 目录一、Union 和Union All1、区别:2、注意点:3、具体举例二、Join关键字的区别&php

java中的HashSet与 == 和 equals的区别示例解析

《java中的HashSet与==和equals的区别示例解析》HashSet是Java中基于哈希表实现的集合类,特点包括:元素唯一、无序和可包含null,本文给大家介绍java中的HashSe... 目录什么是HashSetHashSet 的主要特点是HashSet 的常用方法hasSet存储为啥是无序的

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型