文章目录
- 前言
- 汇总
- 索引配置项设计
- 索引字段类型
-
- keyword
- text类型
- 多字段映射 (Multi-fields)
- **path_analyzer**
- [数值类型 float](#数值类型 float)
- 日期类型
- tags字段设计
- 自定义路径分析器
- 资料获取

前言
博主介绍:✌目前全网粉丝4W+,csdn博客专家、Java领域优质创作者,博客之星、阿里云平台优质作者、专注于Java后端技术领域。
涵盖技术内容:Java后端、大数据、算法、分布式微服务、中间件、前端、运维等。
博主所有博客文件目录索引:博客目录索引(持续更新)
CSDN搜索:长路
视频平台:b站-Coder长路
汇总
- keyword vs text:
-
keyword:精确匹配,用于过滤、聚合、排序。text:全文搜索,用于内容检索。
- 数值类型选择:
-
integer:整数值,如状态码、等级long:大数值,如文件大小、价格date:时间日期,支持范围查询
索引配置项设计
json
"settings": {
"number_of_shards": 15,
"number_of_replicas": 1,
"refresh_interval": "30s"
}
- shards: 15 - 数据分片数,影响并行处理能力
- replicas: 1 - 每个分片的副本数,影响高可用性
- refresh_interval: 30s - 索引刷新间隔,影响数据实时性
索引字段类型
keyword
keyword类型:
json
"id": {
"type": "keyword"
}
- 含义:用于精确值匹配,不分词
- 适用场景:ID、状态码、标签等需要精确匹配的字段
- 特点:支持聚合、排序,性能优于text类型
text类型
json
"fileName": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart"
}
- 含义:全文搜索字段,会被分词
- analyzer:索引时使用的分词器
- search_analyzer:搜索时使用的分词器
- ik_max_word:细粒度分词
- ik_smart:粗粒度分词
多字段映射 (Multi-fields)
fileName的多字段定义:
json
"fileName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
},
"raw": {
"type": "text",
"analyzer": "standard"
}
}
}
- fileName:主字段,使用IK中文分词
- fileName.keyword:keyword子字段,用于精确匹配、聚合
- fileName.raw:使用标准分词器的text子字段
- ignore_above: 256 - 超过256字符的不会被索引
path_analyzer
json
"filePath": {
"type": "text",
"analyzer": "path_analyzer",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
- path_analyzer:自定义路径分析器,用于文件路径的层次化搜索
- 可以搜索如
/home/user/documents/并匹配子路径
数值类型 float
json
"fileSize": {
"type": "float"
}
- float:单精度浮点数,适合文件大小存储
日期类型
json
"updateTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss||epoch_millis"
}
- format:支持多种日期格式
yyyy-MM-dd HH:mm:ss:字符串格式epoch_millis:时间戳格式
tags字段设计
json
"tags": {
"type": "keyword",
"fields": {
"text": {
"type": "text",
"analyzer": "ik_smart"
}
}
}
- tags:keyword类型,用于精确标签匹配
- tags.text:text类型,用于标签的全文搜索
自定义路径分析器
json
"analysis": {
"analyzer": {
"path_analyzer": {
"type": "custom",
"tokenizer": "path_tokenizer"
}
},
"tokenizer": {
"path_tokenizer": {
"type": "path_hierarchy"
}
}
}
- path_hierarchy:专门用于路径层次结构的tokenizer
- 例如
/a/b/c会被分词为:/a,/a/b,/a/b/c
资料获取
大家点赞、收藏、关注、评论啦~
精彩专栏推荐订阅:在下方专栏👇🏻
- 长路-文章目录汇总(算法、后端Java、前端、运维技术导航):博主所有博客导航索引汇总
- 开源项目Studio-Vue---校园工作室管理系统(含前后台,SpringBoot+Vue):博主个人独立项目,包含详细部署上线视频,已开源
- 学习与生活-专栏:可以了解博主的学习历程
- 算法专栏:算法收录
更多博客与资料可查看👇🏻获取联系方式👇🏻,🍅文末获取开发资源及更多资源博客获取🍅