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、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

go 指针接收者和值接收者的区别小结

《go指针接收者和值接收者的区别小结》在Go语言中,值接收者和指针接收者是方法定义中的两种接收者类型,本文主要介绍了go指针接收者和值接收者的区别小结,文中通过示例代码介绍的非常详细,需要的朋友们下... 目录go 指针接收者和值接收者的区别易错点辨析go 指针接收者和值接收者的区别指针接收者和值接收者的

售价599元起! 华为路由器X1/Pro发布 配置与区别一览

《售价599元起!华为路由器X1/Pro发布配置与区别一览》华为路由器X1/Pro发布,有朋友留言问华为路由X1和X1Pro怎么选择,关于这个问题,本期图文将对这二款路由器做了期参数对比,大家看... 华为路由 X1 系列已经正式发布并开启预售,将在 4 月 25 日 10:08 正式开售,两款产品分别为华

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘