ES 索引关闭source后是否可以更新?
2023-12-21 16:13:08
## 背景
ES优化有一个常用手段是将不需要返回的字段的source关闭掉,以此节省磁盘空间,同时也节省内存;比如向量字段一般关闭source;
## 疑问
ES 索引(部分字段 或者 全部字段)关闭source后是否可以更新?
## 测试
# 创建索引关闭source
PUT test_exclude
{
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"field": {
"type": "keyword"
}
}
}
}
# 新增测试数据
POST test_exclude/_doc/1
{
"field": 1
}
# 倒排索引查询
GET test_exclude/_search
{
"query": {
"terms": {
"field": [
"1"
]
}
}
}
可以查到结果
# 增量更新
POST test_exclude/_update/1
{
"doc": {
"field": "2"
}
}
异常,如下:
{
"error": {
"root_cause": [
{
"type": "document_source_missing_exception",
"reason": "[_doc][1]: document source missing",
"index_uuid": "FS4InI3pQoaXyxRWcFROLQ",
"shard": "2",
"index": "test_exclude"
}
],
"type": "document_source_missing_exception",
"reason": "[_doc][1]: document source missing",
"index_uuid": "FS4InI3pQoaXyxRWcFROLQ",
"shard": "2",
"index": "test_exclude"
},
"status": 400
}
# 全量更新(index API),直接覆盖 --- 成功
PUT test_exclude/_doc/1
{
"field": 2
}
# 查询
GET test_exclude/_search
{
"query": {
"terms": {
"field": [
"2"
]
}
}
}
可以查到结果,原有的查询 field=1,无法查询到
## 结论
全量更新(覆盖)可以;
增量更新会异常;
文章来源:https://blog.csdn.net/qq_33999844/article/details/135130457
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!