我有一个产品类型的索引,这个产品有一些共同的属性,但依赖于类别有不同的属性(我做一个dinamyc映射)。
如何最好地映射它并在聚合之后进行聚合,而不知道如何命名该字段。
[specifications] => Array
(
[properties] => Array
(
[property1] => Array
(
[type] => string
[index] => not_analyzed
)
[property2] => Array
(
[type] => string
[index] => not_analyzed
),
etc...
)
)
答案 0 :(得分:1)
我找到了解决方案: 映射:
'attributes' => array(
'type' => 'nested',
'properties' => array(
'key' => array(
'type' => 'string',
'index' => 'not_analyzed',
),
'value' => array(
'type' => 'string',
'index' => 'not_analyzed',
),
),
),
AGGS:
'attributes' => array(
'nested' => array(
'path' => 'attributes',
),
'aggs' => array(
'key' => array(
'terms' => array(
'field' => 'attributes.key',
),
'aggs' => array(
'value' => array(
'terms' => array(
'field' => 'attributes.value',
),
),
),
),
),
),
答案 1 :(得分:0)
多重匹配查询允许通配符字段。
您可以调整一些命名约定或隔离要在对象字段(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-object-type.html)中搜索的字段,然后使用widlcard来定位这些内部字段。