【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);
相关推荐
core51214 小时前
Elasticsearch 车牌号片段搜索:n-gram 倒排索引实战方案
elasticsearch·n-gram·索引·倒排索引·号牌·片段
এ慕ོ冬℘゜15 小时前
ES Promise.all/ Promise.race
前端·javascript·elasticsearch
Sayai17 小时前
Elasticsearch 日志写入链路调优实战:ingest pipeline 补时间戳、时区偏移修复与按值类型路由(附 translog 实测)
大数据·运维·elasticsearch·搜索引擎·性能优化
总爱写点小BUG19 小时前
git-tidy:一个把「提交规范治理」做成闭环的 Git 桌面客户端
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客1 天前
我们如何通过 70 多个拉取请求,将 OpenTelemetry Java agent 迁移到 invokedynamic
java·大数据·开发语言·elasticsearch·搜索引擎·全文检索·es
BreezeJiang2 天前
写了 Dockerfile 却没生效:ES + Kibana 的 compose 配置里,藏着三个反直觉的点
elasticsearch
Elasticsearch3 天前
Elastic 计划利用 NVIDIA RTX GPU 将 Jina 模型推理速度提升至 8 倍
elasticsearch
Elastic 中国社区官方博客3 天前
告别繁琐控制台:Kabanos 如何将 MongoDB Compass 的易用性带入 Elasticsearch
大数据·数据库·mongodb·elasticsearch·搜索引擎·全文检索
Elastic 中国社区官方博客3 天前
控制告警如何触发、恢复和发送通知:Elastic 可观测性中的 Kibana 通用告警
大数据·数据库·安全·elasticsearch·搜索引擎·全文检索·es
深海里的鱼(・ω<)★3 天前
SMB备份导致的 Gitea 分支推送成功但界面不可见故障复盘
大数据·elasticsearch·gitea