我对 FOSElasticaBundle 有疑问,在 elasticsearch 中清空/删除属性。
我在跑:
Friendsofsymfony/elastica-bundle v5.0.3 ruflin/elastica v6.1.1 jms/serializer-bundle v3.2.0 jms/serializer v2.3.0 symfony v4.2.7 elasticsearch v6.7.1
当我通过教义保存对象时。它被正确序列化并被发送到elasticsearch。每个更新也在工作:
{
"update":{
"_index":"demo_companies",
"_type":"company",
"_id":13
}
}
{
"doc":{
"id":13,
"company_name":"Demo Company",
"company_tagline":"Only the finest",
},
"doc_as_upsert":true
}
但是,当我清除表单中的 company_tagline 并将其保存在数据库中时,正如预期的那样。现在序列化后,由于没有序列化空字符串,因此缺少 company_tagline。所以批量更新看起来像这样:
{
"update":{
"_index":"demo_companies",
"_type":"company",
"_id":13
}
}
{
"doc":{
"id":13,
"company_name":"Demo Company",
},
"doc_as_upsert":true
}
现在查询 elasticsearch 时,company_tagline 仍然存在:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 14,
"max_score" : 1.0,
"hits" : [
{
"_index" : "demo_companies",
"_type" : "company",
"_id" : "13",
"_score" : 1.0,
"_source" : {
"id" : 13,
"company_name" : "FTI Touristik GmbH",
"company_tagline":"Only the finest"
}
}
]
}
}
我认为那是因为doc_as_upsert
只更新了适当的属性。因此,由于请求中缺少 company_tagline,因此它不会被更新/删除。
有没有办法对条目进行硬更新而不是更新它?