Удаление пустых атрибутов при обновлении - PullRequest
1 голос
/ 30 апреля 2019

У меня проблема с FOSElasticaBundle, с атрибутами очистки / удаления вasticsearch.

Я бегу:

friendsofsymfony /astica-bundle v5.0.3 Руфлин / Эластика v6.1.1 jms / serializer-bundle v3.2.0 JMS / сериализатор v2.3.0 Symfony v4.2.7 asticsearch v6.7.1

Когда я сохраняю объект с помощью доктрины. он получает правильно сериализованный и отправляется вasticsearch. Каждое обновление также работает:

{  
   "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
}

Когда теперь запрашивается эластичный поиск, 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 отсутствует в запросе, он не обновляется и не удаляется.

Есть ли какой-нибудь способ выполнить жесткое обновление записи вместо ее обновления?

...