关键字字段未使用?

时间:2018-01-18 18:59:56

标签: elasticsearch

使用聚合函数删除查询的重复项,使用弹性搜索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)) {
    ...
}

对此有何建议?

1 个答案:

答案 0 :(得分:0)

您在映射中声明uuid是一个带有字段的文本条目,该字段将被称为类型关键字的uuid.keyword。因此,只需将您在术语查询中使用的字段更改为uuid.keyword,这应该可以。