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

摘要:
-es2.x和es5.x版本定义字符串类型2.x版本esstring类型全文搜索分词索引=单个字符的分析匹配称为分析字符串关键字搜索分词索引=not_分析匹配整个文本。它被称为未分析字符串index=no,这意味着它未被索引。结果是无法检索字符串类型,这将给我们带来很多困惑。为了避免上述尴尬,str

一 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(不分词)一个用于全文检索,一个用于聚合和排序
————————————————
版权声明:本文为CSDN博主「健康平安的活着」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011066470/article/details/88760762

免责声明:文章转载自《es版本2.x的string和5.x的keyword,text的区别和联系》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MacOS的包管理神器homebrew使用入门教程vs 在高分屏下开发 winform 配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【216】◀▶ IDL 字符串操作说明 (黑底)

参考:String Processing Routines —— 字符串处理函数 参考:IDL_String Methods 01   STRING 返回字符串。 02   STRCMP 比较字符串,一样返回1,不一样返回0,默认大小写敏感。 03   STRMATCH 字符串进行比较,一致返回1,不一致返回0。 04   STRCOMP...

Android获取系统时间方法的总结

Android获取系统时间方法的方法有很多种,常用的有Calendar、Date、currentTimeMills等方法。 (1)Calendar Calendar获取系统时间首先要用Calendar.getInstance()函数获取一个实例,再为该实例设定时区(中国的时区为GMT+8:00),最后使用Calendar.get()函数获取时间的具体信息,...

Delphi源程序格式书写规范

Delphi源程序格式书写规范     1,规范简介   本规范主要规定Delphi源程序在书写过程中所应遵循的规则及注意事项。编写该规范的目的是使公司软件开发人员的源代码书写习惯保持一致。这样做可以使每一个组员都可以理解其它组员的代码,以便于源代码的二次开发记忆系统的维护。 2,一般格式规范 2.1 缩进   缩进就是在当源程序的级改变时为增加可读性而露...

【Lua】手游聊天系统客户端完成总结

网上很多例子,我是参考这篇文章:http://www.myexception.cn/operating-system/1591495.html 1.聊天系统难题一:消息需要支持插入表情和换行。 一开始我打算借鉴上面文章中的方法自己用label和image拼接实现自己的富文本,后来同事建议我使用cocos2dx自带的富文本空间RichText,网上找了一些例...

redis-缓存设计-记录前一个小时和最新的日志

需求 记录最新的日志 99条 同时记录上一个小时和最近一个小时的 日志出现次数 记录日志代码 /** * * @param conn 连接 * @param name 模块名字 * @param message 日志信息 * @param level 日志等级 * @param timeout...

JSON格式转换成XML格式

第一种方法: 需要使用命名空间System.Runtime.Serialization.Json 下面有JsonReaderWriterFactory XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), X...