ES创建索引语法
兼顾全文搜索与精确匹配
"create_by" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
在 Elasticsearch 里,像 "create_by"
这样既定义为 text
类型又通过 fields
子字段定义为 keyword
类型的做法是一种常见且合理的设计,不存在问题,反而具备诸多优势,下面为你详细分析。
设计目的和优势
1. 兼顾全文搜索与精确匹配
text
类型:text
类型主要用于全文搜索。当你将一个字段定义为text
类型时,Elasticsearch 会使用分词器对输入的文本进行分词处理。例如,若create_by
字段的值为"John Doe"
,分词后可能变为"John"
和"Doe"
。这样在执行全文搜索时,你可以使用match
查询,通过搜索"John"
或者"Doe"
来找到包含该值的文档。
{
"query": {
"match": {
"create_by": "John"
}
}
}
keyword
子字段:keyword
类型用于精确匹配和排序。create_by.keyword
子字段将整个输入值作为一个整体进行存储和索引,不会进行分词处理。这在需要精确匹配完整值的场景中非常有用,比如根据完整的用户名来筛选记录。
{
"query": {
"term": {
"create_by.keyword": "John Doe"
}
}
}
2. 满足不同业务需求
在实际的业务场景中,对于某些字段可能既需要进行全文搜索,也需要进行精确匹配。以用户姓名为例,用户可能想要搜索包含某个姓名片段的所有记录,也可能需要精确查找某个特定用户的记录。通过这种设计,一个字段就能同时满足这两种需求。
3. 提高排序和聚合性能
在进行排序和聚合操作时,keyword
类型比 text
类型更合适。因为 text
类型经过分词后,难以直接用于排序和聚合,而 keyword
类型存储的是完整的原始值,能够高效地支持这些操作。
ignore_above
参数的作用
ignore_above
参数设置为 256
意味着如果 create_by.keyword
字段的值长度超过 256 个字符,Elasticsearch 将忽略该值,不进行索引。这样可以避免索引过长的字符串,节省存储空间和提高索引性能。
示例代码
以下是一个简单的示例,展示如何创建包含这种映射的索引,并进行不同类型的查询:
// 创建索引并定义映射
PUT my_index
{
"mappings": {
"properties": {
"create_by": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
// 插入文档
POST my_index/_doc
{
"create_by": "John Doe"
}
// 全文搜索
GET my_index/_search
{
"query": {
"match": {
"create_by": "John"
}
}
}
// 精确匹配
GET my_index/_search
{
"query": {
"term": {
"create_by.keyword": "John Doe"
}
}
}
综上所述,这种将字段同时定义为 text
和 keyword
类型的设计是为了满足多样化的查询需求,是一种灵活且有效的 Elasticsearch 映射策略。
精准匹配
"operation_id" : {
"type" : "keyword"
}
keyword 类型:operation_id 字段直接定义为 keyword 类型。这意味着该字段的值不会被分词,会被作为一个整体进行存储和索引。适用于需要精确匹配的场景,例如根据操作 ID 来查找特定的操作记录。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南