使用聚合函数删除查询的重复项,使用弹性搜索python库得到以下错误:
elasticsearch.exceptions.RequestError:TransportError(400, ' search_phase_execution_exception',' Fielddata在文字上被禁用 默认情况下的字段在[uuid]上设置fielddata = true以便加载 通过反转索引来反转内存中的fielddata。请注意这一点 但是可以使用大量记忆。或者使用关键字字段 代替'。)
但正如所建议的那样,我已经使用" uuid"的关键字字段重新创建了索引。这是我的映射:
es_body = {
'from' : self.limit_from,
'size' : 10,
'query': {
'bool': {
'must': {
'multi_match': {
'query': keywords,
'type':'best_fields',
'operator':'and',
'fields': [
'title','summary','keywords'
],
},
},
'filter': {
'term': {
'bot_id': self.current_bot.id
}
}
},
},
'aggs': {
'unique_uuids': {
'terms': {
'field': 'uuid'
}
}
}
}
我的查询看起来像这样:
$file_name = $_FILES['HOT_Logo']['name'];
$file_tmp_name = $_FILES['HOT_Logo']['tmp_name'];
$file_target = '../../images/hotel-logos/';
$file_size = $_FILES['HOT_Logo']['size'];
// Resize
$ratio = $width/$height;
if($ratio > 1) {
$new_width = 300;
$new_height = 300/$ratio;
}
else {
$new_width = 300*$ratio;
$new_height = 300;
}
$src = imagecreatefromstring(file_get_contents($file_tmp_name));
$dst = imagecreatetruecolor($new_width, $new_height);
imagecopyresampled($dst, $src, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
imagedestroy($src);
imagepng($dst, $file_target.$file_name);
imagedestroy($dst);
// Rename file
$temp = explode('.', $_FILES['HOT_Logo']['name']);
$newfilename = 'new_img_name.'.end($temp);
// Upload image
if(move_uploaded_file($_FILES['HOT_Logo']['tmp_name'], $file_target.$newfilename)) {
...
}
对此有何建议?
答案 0 :(得分:0)
您在映射中声明uuid
是一个带有字段的文本条目,该字段将被称为类型关键字的uuid.keyword
。因此,只需将您在术语查询中使用的字段更改为uuid.keyword
,这应该可以。