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

  • 相关阅读:
    MySQL索引方法
    【转】CentOS Linux解决Device eth0 does not seem to be present(linux)
    charles4.2下载与破解方法以及配置https
    laravel 安装碰到的问题:全局安装 Laravel Installer,然后用下面的指令创建新项目: laravel new blog报连接超时解决方案
    Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[2]
    Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]
    跨集群拷贝hdfs
    kylin
    Error:scalac: Error: org.jetbrains.jps.incremental.scala.remote.ServerException
    笔记
  • 原文地址:https://www.cnblogs.com/WalkOnMars/p/12455823.html
Copyright © 2011-2022 走看看