opensearch
索引使用
索引使用
索引创建
创建示例
使用 copyTO
优点:
-
查询简单:只需要搜索一个字段
all_fields -
维护方便:新增字段时只需添加
copy_to配置 -
性能优化:单个字段的倒排索引,查询效率较高
-
权重统一:所有字段在搜索时权重相同
缺点:
-
存储开销:数据会被复制,存储空间增加
-
灵活性差:无法为不同字段设置不同的分词策略
-
无法区分字段权重:所有字段在搜索时重要性相同
-
字段信息丢失:无法知道匹配的是哪个具体字段
2. 不使用 copy_to 的方式(多字段搜索)
优点:
-
存储效率:无数据复制,节省存储空间
-
灵活性高:可以为不同字段设置不同的分词器
-
权重控制:可以调整不同字段的搜索权重
-
字段级信息:可以知道匹配的具体字段,便于结果展示和排序
缺点:
-
查询复杂:需要使用
multi_match查询多个字段 -
性能开销:同时查询多个字段可能比单个字段稍慢
-
维护成本:新增搜索字段需要修改查询逻辑
PUT /document_index
{
"settings": { // 分词配置
"analysis": {
"analyzer": {
"ik_smart_analyzer": {
"type": "custom",
"tokenizer": "ik_smart"
},
"ik_max_analyzer": {
"type": "custom",
"tokenizer": "ik_max_word"
}
}
},
"index": { // 分片配置
"number_of_shards": 1,
"number_of_replicas": 1
}
},
"mappings": { // 具体的字段配置
"properties": {
"id": {
"type": "long",
"copy_to": "all_fields" // 复制到全字段
},
"page": {
"type": "integer",
"copy_to": "all_fields" // 复制到全字段
},
"text": {
"type": "text",
"analyzer": "ik_max_analyzer",
"search_analyzer": "ik_smart_analyzer",
"copy_to": "all_fields" // 复制到全字段
},
"all_fields": {
"type": "text",
"analyzer": "ik_max_analyzer",
"search_analyzer": "ik_smart_analyzer"
}
}
}
}