Elasticsearch清空一个对象
Elasticsearch empty an object
ES 新手。我正在尝试创建用户索引,以允许访问者搜索用户。为了确保我可以在搜索结果中显示个人资料图片,我还有一个图像对象。我的数据如下所示。
"_source": {
"username": "pewpewlasers",
"name": "Pew Pew",
"image": {
"filename": "filename.jpg",
"uid": 14
}
}
我所做的是每次这些数据发生变化时,我都会使用更新 API (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html) 来更新字段。这很好用,除非用户删除个人资料图片。
通常我会发送这样的请求:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc" : {
"image" : {
"filename": "newfilename.jpg",
"uid": 15
}
}
}'
效果很好。但是,每当用户删除个人资料图片时,我都会尝试发送以下请求:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc" : {
"image" : {}
}
}'
这不会用空对象替换旧图像数据,因此在搜索中给我不正确的信息。
试试这个:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc": {
"image": null
}
}'
根据文档的 this section,null
、[]
和 [null]
都是等价的,在如下查询中它们将 return 所有没有 image
值的文档:
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "image"
}
}
}
}
}
ES 新手。我正在尝试创建用户索引,以允许访问者搜索用户。为了确保我可以在搜索结果中显示个人资料图片,我还有一个图像对象。我的数据如下所示。
"_source": {
"username": "pewpewlasers",
"name": "Pew Pew",
"image": {
"filename": "filename.jpg",
"uid": 14
}
}
我所做的是每次这些数据发生变化时,我都会使用更新 API (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html) 来更新字段。这很好用,除非用户删除个人资料图片。
通常我会发送这样的请求:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc" : {
"image" : {
"filename": "newfilename.jpg",
"uid": 15
}
}
}'
效果很好。但是,每当用户删除个人资料图片时,我都会尝试发送以下请求:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc" : {
"image" : {}
}
}'
这不会用空对象替换旧图像数据,因此在搜索中给我不正确的信息。
试试这个:
curl -XPOST 'localhost:9200/test/users/1/_update' -d '{
"doc": {
"image": null
}
}'
根据文档的 this section,null
、[]
和 [null]
都是等价的,在如下查询中它们将 return 所有没有 image
值的文档:
{
"query": {
"filtered": {
"filter": {
"missing": {
"field": "image"
}
}
}
}
}