扩展:关于ES字符串类型(Text vs keyword)的选择

ElasticSearch 5.0以后,string类型有重大变更,移除了string类型,string字段被拆分成两种新的数据类型text用于全文搜索的,keyword用于关键词搜索。
ElasticSearch字符串将默认被同时映射成textkeyword类型,将会自动创建下面的动态映射(dynamic mappings):
{
    "class_code": {
        "type": "text",
        "fields": {
            "keyword": {
                "type": "keyword",
                "ignore_above": 256
            }
        }
    }
}
这就是造成部分字段还会自动生成一个与之对应的“.keyword”字段的原因。
Text vs. keyword
Text:会分词,然后进行索引
       支持模糊、精确查询
       不支持聚合
keyword:不进行分词,直接索引
       支持模糊、精确查询
       支持聚合


用法(不分词的精确查询):
{
  "query": {
      "bool":{
          "must":[
              {"term":{"class_code.keyword":"05"}},
              {"term":{"risk_code.keyword":"DAA"}},
              {"match_phrase":{"supercomcode":"65000000"}},
              {
                  "range":{
                          "startdate":{
                              "gte":"2015-09-01",
                              "lte":"2015-09-26"
                          }
                      
                  }
              }
          ]
      }
  },
  "_source":["policyno"]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值