介绍
嵌入式类型
tips

- Object 数据类型的数组会被扁平化处理为一个简单的键与值的列表,即对象的相同属性会放到同一个数组中,在检索时会出现错误。参考官网:How arrays of objects are flattened
- 对于 Object 类型的数组,要使用 nested 字段类型,就是嵌入式属性。参考官网:Using nested fields for arrays of objects
使用
映射
PUT gulimall_product/{"mappings": {"properties": {"attrs": {"type": "nested","properties": {"attrId": {"type": "long"},"attrName": {"type": "keyword"},"attrValue": {"type": "keyword"}}}}}}
DSL(查询)
GET gulimall_product/_search{"query": {"bool": {"filter": {"nested": {"path": "attrs","query": {"bool": {"must": [{"term": {"attrs.attrId": {"value": "6"}}},{"terms": {"attrs.attrValue": ["骁龙","海思(Hisilicon)"]}}]}}}}}}}
聚合
GET gulimall_product/_search{"query": {"match_all": {}},"aggs": {"attr_agg":{"nested": {"path": "attrs"},"aggs": {"attr_id_agg": {"terms": {"field": "attrs.attrId","size": 10},"aggs": {"attr_name_agg": {"terms": {"field": "attrs.attrName","size": 10}},"attr_value_agg":{"terms": {"field": "attrs.attrValue","size": 10}}}}}}},"size": 0}
