fix malformed query on tech fields ('_' in query)

This commit is contained in:
Jean-Yves Gaulier
2020-01-30 15:25:40 +01:00
parent 8312be6fc8
commit b1b35cc92b
3 changed files with 17 additions and 18 deletions

View File

@@ -360,7 +360,6 @@ class QueryController extends Controller
// add technical fields // add technical fields
$fieldsInfosByName = []; $fieldsInfosByName = [];
foreach(ElasticsearchOptions::getAggregableTechnicalFields() as $k => $f) { foreach(ElasticsearchOptions::getAggregableTechnicalFields() as $k => $f) {
$k = '_'.$k;
$fieldsInfosByName[$k] = $f; $fieldsInfosByName[$k] = $f;
$fieldsInfosByName[$k]['trans_label'] = $this->app->trans($f['label']); $fieldsInfosByName[$k]['trans_label'] = $this->app->trans($f['label']);
$fieldsInfosByName[$k]['labels'] = []; $fieldsInfosByName[$k]['labels'] = [];

View File

@@ -652,7 +652,7 @@ class ElasticSearchEngine implements SearchEngineInterface
$aggs = []; $aggs = [];
// technical aggregates (enable + optional limit) // technical aggregates (enable + optional limit)
foreach (ElasticsearchOptions::getAggregableTechnicalFields() as $k => $f) { foreach (ElasticsearchOptions::getAggregableTechnicalFields() as $k => $f) {
$size = $this->options->getAggregableFieldLimit('_'.$k); $size = $this->options->getAggregableFieldLimit($k);
if ($size !== databox_field::FACET_DISABLED) { if ($size !== databox_field::FACET_DISABLED) {
if ($size === databox_field::FACET_NO_LIMIT) { if ($size === databox_field::FACET_NO_LIMIT) {
$size = ESField::FACET_NO_LIMIT; $size = ESField::FACET_NO_LIMIT;
@@ -663,7 +663,7 @@ class ElasticSearchEngine implements SearchEngineInterface
'size' => $size 'size' => $size
] ]
]; ];
$aggs['_'.$k] = $agg; $aggs[$k] = $agg;
} }
} }
// fields aggregates // fields aggregates

View File

@@ -282,42 +282,42 @@ class ElasticsearchOptions
public static function getAggregableTechnicalFields() public static function getAggregableTechnicalFields()
{ {
return [ return [
'base' => [ '_base' => [
'type' => 'string', 'type' => 'string',
'label' => 'prod::facet:base_label', 'label' => 'prod::facet:base_label',
'field' => "database", 'field' => "database",
'esfield' => 'databox_name', 'esfield' => 'databox_name',
'query' => 'database:%s', 'query' => 'database:%s',
], ],
'collection' => [ '_collection' => [
'type' => 'string', 'type' => 'string',
'label' => 'prod::facet:collection_label', 'label' => 'prod::facet:collection_label',
'field' => "collection", 'field' => "collection",
'esfield' => 'collection_name', 'esfield' => 'collection_name',
'query' => 'collection:%s', 'query' => 'collection:%s',
], ],
'doctype' => [ '_doctype' => [
'type' => 'string', 'type' => 'string',
'label' => 'prod::facet:doctype_label', 'label' => 'prod::facet:doctype_label',
'field' => "type", 'field' => "type",
'esfield' => 'type', 'esfield' => 'type',
'query' => 'type:%s', 'query' => 'type:%s',
], ],
'camera_model' => [ '_camera_model' => [
'type' => 'string', 'type' => 'string',
'label' => 'Camera Model', 'label' => 'Camera Model',
'field' => "meta.CameraModel", 'field' => "meta.CameraModel",
'esfield' => 'metadata_tags.CameraModel', 'esfield' => 'metadata_tags.CameraModel',
'query' => 'meta.CameraModel:%s', 'query' => 'meta.CameraModel:%s',
], ],
'iso' => [ '_iso' => [
'type' => 'number', 'type' => 'number',
'label' => 'ISO', 'label' => 'ISO',
'field' => "meta.ISO", 'field' => "meta.ISO",
'esfield' => 'metadata_tags.ISO', 'esfield' => 'metadata_tags.ISO',
'query' => 'meta.ISO=%s', 'query' => 'meta.ISO=%s',
], ],
'aperture' => [ '_aperture' => [
'type' => 'number', 'type' => 'number',
'label' => 'Aperture', 'label' => 'Aperture',
'field' => "meta.Aperture", 'field' => "meta.Aperture",
@@ -327,7 +327,7 @@ class ElasticsearchOptions
return round($value, 1); return round($value, 1);
}, },
], ],
'shutterspeed' => [ '_shutterspeed' => [
'type' => 'number', 'type' => 'number',
'label' => 'Shutter speed', 'label' => 'Shutter speed',
'field' => "meta.ShutterSpeed", 'field' => "meta.ShutterSpeed",
@@ -340,7 +340,7 @@ class ElasticsearchOptions
return $value . ' s.'; return $value . ' s.';
}, },
], ],
'flashfired' => [ '_flashfired' => [
'type' => 'boolean', 'type' => 'boolean',
'label' => 'FlashFired', 'label' => 'FlashFired',
'field' => "meta.FlashFired", 'field' => "meta.FlashFired",
@@ -354,49 +354,49 @@ class ElasticsearchOptions
return array_key_exists($value, $map) ? $map[$value] : $value; return array_key_exists($value, $map) ? $map[$value] : $value;
}, },
], ],
'framerate' => [ '_framerate' => [
'type' => 'number', 'type' => 'number',
'label' => 'FrameRate', 'label' => 'FrameRate',
'field' => "meta.FrameRate", 'field' => "meta.FrameRate",
'esfield' => 'metadata_tags.FrameRate', 'esfield' => 'metadata_tags.FrameRate',
'query' => 'meta.FrameRate=%s', 'query' => 'meta.FrameRate=%s',
], ],
'audiosamplerate' => [ '_audiosamplerate' => [
'type' => 'number', 'type' => 'number',
'label' => 'Audio Samplerate', 'label' => 'Audio Samplerate',
'field' => "meta.AudioSamplerate", 'field' => "meta.AudioSamplerate",
'esfield' => 'metadata_tags.AudioSamplerate', 'esfield' => 'metadata_tags.AudioSamplerate',
'query' => 'meta.AudioSamplerate=%s', 'query' => 'meta.AudioSamplerate=%s',
], ],
'videocodec' => [ '_videocodec' => [
'type' => 'string', 'type' => 'string',
'label' => 'Video codec', 'label' => 'Video codec',
'field' => "meta.VideoCodec", 'field' => "meta.VideoCodec",
'esfield' => 'metadata_tags.VideoCodec', 'esfield' => 'metadata_tags.VideoCodec',
'query' => 'meta.VideoCodec:%s', 'query' => 'meta.VideoCodec:%s',
], ],
'audiocodec' => [ '_audiocodec' => [
'type' => 'string', 'type' => 'string',
'label' => 'Audio codec', 'label' => 'Audio codec',
'field' => "meta.AudioCodec", 'field' => "meta.AudioCodec",
'esfield' => 'metadata_tags.AudioCodec', 'esfield' => 'metadata_tags.AudioCodec',
'query' => 'meta.AudioCodec:%s', 'query' => 'meta.AudioCodec:%s',
], ],
'orientation' => [ '_orientation' => [
'type' => 'string', 'type' => 'string',
'label' => 'Orientation', 'label' => 'Orientation',
'field' => "meta.Orientation", 'field' => "meta.Orientation",
'esfield' => 'metadata_tags.Orientation', 'esfield' => 'metadata_tags.Orientation',
'query' => 'meta.Orientation=%s', 'query' => 'meta.Orientation=%s',
], ],
'colorspace' => [ '_colorspace' => [
'type' => 'string', 'type' => 'string',
'label' => 'Colorspace', 'label' => 'Colorspace',
'field' => "meta.ColorSpace", 'field' => "meta.ColorSpace",
'esfield' => 'metadata_tags.ColorSpace', 'esfield' => 'metadata_tags.ColorSpace',
'query' => 'meta.ColorSpace:%s', 'query' => 'meta.ColorSpace:%s',
], ],
'mimetype' => [ '_mimetype' => [
'type' => 'string', 'type' => 'string',
'label' => 'MimeType', 'label' => 'MimeType',
'field' => "meta.MimeType", 'field' => "meta.MimeType",