# HG changeset patch
# User Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
# Date 1474043388 -7200
#      Fri Sep 16 18:29:48 2016 +0200
# Node ID d0bef20eb4a8d55e773ecaa3d073ca4d46e60c00
# Parent  235988caf1392f5d725f5bb8074714846c93a3f8
[es] settings must be "deep-updated" with custom ones

Otherwise we would overwrite the "mappings" entry

diff --git a/entities.py b/entities.py
--- a/entities.py
+++ b/entities.py
@@ -16,6 +16,9 @@
 # along with this program. If not, see <http://www.gnu.org/licenses/>.
 
 """cubicweb-elasticsearch entity's classes"""
+
+import collections
+
 from cubicweb import view
 from cubicweb.predicates import is_instance
 
@@ -24,6 +27,15 @@
 from cubes.elasticsearch import es
 
 
+def deep_update(d1, d2):
+    for key, value in d2.iteritems():
+        if isinstance(value, collections.Mapping):
+            d1[key] = deep_update(d1.get(key, {}), value)
+        else:
+            d1[key] = d2[key]
+    return d1
+
+
 class EsRegistry(AppObject):
     __registry__ = 'es'
 
@@ -55,8 +67,8 @@
             settings = self.settings
         else:
             settings = {}
-            settings.update(self.settings)
-            settings.update(custom_settings)
+            deep_update(settings, self.settings)
+            deep_update(settings, custom_settings)
         es.create_index(self.get_connection(), index_name, settings)