作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在Elasticsearch中合并一些数据,但是每次它替换我以前的数据而不是合并时。
假设当我新建时,它应该与先前的数据一起添加,而不是替换先前的数据。因此,假设在“update_field”中存在一个名为“Christofer”的用户,因此当我array_merge($ usernames)中$ usernames包含一个或几个用户名时,它总是替换先前的数据。
我正在使用PHP。
$usernames= array ("Johanna", "Maria");
$doc = array();
$doc['update_field'] = array_merge($usernames);
$u_params = array();
$u_params['id'] = 'my_id';
$u_params['index'] = 'my_index';
$u_params['type'] = 'my_type';
$u_params['body'] = array('doc' => $doc);
$client->update($u_params);
最佳答案
您需要使用partial update。请改用此方法,即您需要在正文中发送doc
哈希,其中包含要修饰的字段(即update_fields
):
$params = [
'index' => 'my_index',
'type' => 'my_type',
'id' => 'my_id',
'body' => [
'doc' => [
'update_field' => array_merge($usernames)
]
]
];
$client->update($params);
$usernames= array ("Johanna", "Maria");
$script = array();
$script['script'] = 'ctx._source.update_field += new_value';
$script['params'] = array('new_value' => array_merge($usernames));
$u_params = array();
$u_params['id'] = 'my_id';
$u_params['index'] = 'my_index';
$u_params['type'] = 'my_type';
$u_params['body'] = $script;
$client->update($u_params);
elasticsearch.yml
配置文件中启用了脚本:
script.disable_dynamic: false
关于php - 如何在Elasticsearch中合并数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31716906/
我是一名优秀的程序员,十分优秀!