ES 关于text和keyword两种类型数据搜索区别

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。ES 关于text和keyword两种类型数据搜索区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

ElasticSearch 5.0以后,string类型有重大变更,移除了string类型,

string字段被拆分成两种新的数据类型: text用于全文搜索的,而keyword用于关键词搜索。

ES 关于text和keyword两种类型数据搜索区别

 ES 关于text和keyword两种类型数据搜索区别

 1、ES 关于text和keyword两种类型

ElasticSearch字符串将默认被同时映射成text和keyword类型,将会自动创建下面的动态映射。

通过 GET /dist_test/_mapping/field/weixin_number 命令查看 weixin_number 字段数据类型,可以看到 mapping 下除了 text 还有 keyword。两者有什么区别呢? 

{
  "dist_test" : {
    "mappings" : {
      "weixin" : {
        "weixin_number" : {
          "full_name" : "weixin_number",
          "mapping" : {
            "weixin_number" : {
              "type" : "text",
              "fields" : {
                "keyword" : {
                  "type" : "keyword",
                  "ignore_above" : 256
                }
              }
            }
          }
        }
      }
    }
  }
}

 1.1 text:

  1. 会分词,然后进行索引
  2. 支持模糊、精确查询
  3. 不支持聚合
  4. 分词器默认standard ,对于中文来说就是按字分词
  5. 支持fields属性,可以在fields中添加keyword子类型,以实现精确检索

1.2 keyword:

  1. 不进行分词,直接索引
  2. 支持模糊、精确查询
  3. 支持聚合
  4. 支持按字数建立索引,以便节约索引空间
  5. 看下text分词规律。

1.2.1、纯小写字符串

GET /dist_test/_analyze
{
  "field": "weixin_number",
  "text": "vicky1176320626"
}

1.2.2、包含大写字母字符串会全部转换为小写。

GET /dist_test/_analyze
{
  "field": "weixin_number",
  "text": "XP3412"
}

1.2.3、包含特殊符号,如空格、-,则会分词为多个字符串。

GET /dist_test/_analyze
{
  "field": "weixin_number",
  "text": "AAAA-95533"
}

这也是某些情况下,term 查询后查询不到数据的原因。解决方案也很简单,使用 keyword 精确查询即可。

如例:针对Text类型的数据,要使用term查询

{
  "from": 0,
  "size": 10,
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "city.keyword": {
              "value": "湖南省长沙市",
              "boost": 1
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}

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

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/160768.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!