【ES】---field、field.keyword的区别

目录

一、说明

ElasticSearch5.x以上版本使用text和keyword作为字符串类型取代之前版本的string类型。新版本字符串将默认被同时映射成text和keyword类型。

字符串(text) :用于全文索引,该类型的字段将通过分词器进行分词,最终用于构建索引;
字符串(keyword):不分词,只能搜索该字段的完整的值,用于精准匹配过滤和聚合;

-----备注说明:

一般Boolean、数值类型不需要分词;

另外,Date类型特殊,如果加上 @JSONField(name = "file_upload_time", format = "yyyy-MM-dd HH:mm:ss"),表明将Date按照format形式转换了,因此在查询时为了不分词,需要加上keyword;

二、代码示例

java 复制代码
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder()
        .must(QueryBuilders.termQuery("delete", Boolean.FALSE)) //Boolean类型
        .must(QueryBuilders.termQuery("sid", 1111L))  //Long类型
        .must(QueryBuilders.existsQuery("type.relegation_id")) //type为数组,relegation_id为string
        .mustNot(QueryBuilders.termQuery("type.relegation_id.keyword", ""))
.must(QueryBuilders.rangeQuery("create_time.keyword").from("2022-01-01 00:00:01").to("2023-07-23 00:00:06")); //create_time是Date类型,加了format

StatsAggregationBuilder metricAggre = AggregationBuilders.stats("metric").field("file_size");
AggregationBuilder subAgg = AggregationBuilders.terms("group_by_extension")
        .script(new Script("doc['w_extension.keyword'].value.toUpperCase()")).size(Integer.MAX_VALUE);
subAgg.subAggregation(metricAggre);
AggregationBuilder aggregationBuilder = AggregationBuilders.terms("group_by_base_id").field("type.relegation_id.keyword").size(Integer.MAX_VALUE);
aggregationBuilder.subAggregation(subAgg);
相关推荐
AAA修煤气灶刘哥7 小时前
ES 地理查询玩明白,产品要的 “附近的店” 再也难不倒我!(附 DSL+Java 实战)
java·后端·elasticsearch
AAA修煤气灶刘哥12 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
Elasticsearch12 小时前
Elastic Observability 中 Discover 的跟踪,用于深入的应用洞察
elasticsearch
Elasticsearch13 小时前
使用 cloud-native Elasticsearch 与 ECK 运行
elasticsearch
在未来等你16 小时前
Elasticsearch面试精讲 Day 9:复合查询与过滤器优化
大数据·分布式·elasticsearch·搜索引擎·面试
boonya20 小时前
Elasticsearch核心原理与面试总结
大数据·elasticsearch·面试
77qqqiqi20 小时前
安装es和kibana
elasticsearch·kibana
LQ深蹲不写BUG1 天前
ElasticSearch 基础内容深度解析
大数据·elasticsearch·搜索引擎
2501_920047031 天前
git在Linux中的使用
linux·git·elasticsearch
和科比合砍81分2 天前
ES模块(ESM)、CommonJS(CJS)和UMD三种格式
大数据·elasticsearch·搜索引擎