如何在基于多个嵌套字段的ElasticSearch中进行搜索
我正在产品文档中嵌入产品属性,我希望进行聚合,当其值大于0时,该聚合应返回属性的名称 我应该如何组合查询 ======================================================= ElasticSearch中存储的数据示例如下: 从下面的数据集中,我希望结果是:[“糖”,“脂肪”],因为没有产品含有水如何在基于多个嵌套字段的ElasticSearch中进行搜索,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,我正在产品文档中嵌入产品属性,我希望进行聚合,当其值大于0时,该聚合应返回属性的名称 我应该如何组合查询 ======================================================= ElasticSearch中存储的数据示例如下: 从下面的数据集中,我希望结果是:[“糖”,“脂肪”],因为没有产品含有水 [{ 名称:“产品1”, 价格:12.0, 特性:[ { 组:“产品组成”, 名称:“糖”, 价值:1 }, { 组:“产品组成”, 名称:“脂肪”, 价值:
[{
名称:“产品1”,
价格:12.0,
特性:[
{
组:“产品组成”,
名称:“糖”,
价值:1
},
{
组:“产品组成”,
名称:“脂肪”,
价值:2
},
{
组:“产品组成”,
名称:“水”,
数值:0
},
{
组:“包装”,
名称:“尺寸”,
价值:“大”
}
]
}, {
名称:“产品2”,
价格:11.0,
特性:[
{
组:“产品组成”,
名称:“糖”,
数值:0
},
{
组:“产品组成”,
名称:“脂肪”,
价值:2
},
{
组:“产品组成”,
名称:“水”,
数值:0
},
{
组:“包装”,
名称:“尺寸”,
价值:“小”
}
]
}]
=======索引映射========
{
“测试产品”:{
“映射”:{
“产品”:{
“动态模板”:[
{
“模板1”:{
“路径匹配”:“properties.value”,
“匹配映射类型”:“双”,
“映射”:{
“比例系数”:100,
“类型”:“缩放浮点数”
}
}
},
{
“模板2”:{
“路径匹配”:“properties.value”,
“匹配映射类型”:“字符串”,
“映射”:{
“字段”:{
“原始”:{
“忽略上面的内容”:100,
“类型”:“关键字”
}
},
“类型”:“文本”
}
}
}
],
“财产”:{
“姓名”:{
“类型”:“文本”,
“字段”:{
“原始”:{
“类型”:“关键字”
}
}
},
“价格”:{
“类型”:“双”
},
“财产”:{
“类型”:“嵌套”,
“财产”:{
“集团”:{
“类型”:“文本”,
“字段”:{
“原始”:{
“类型”:“关键字”
}
}
},
“姓名”:{
“类型”:“文本”,
“字段”:{
“原始”:{
“类型”:“关键字”
}
}
},
“价值”:{
“类型”:“文本”
}
}
}
}
}
}
}
}
您将在响应中获得属性>以下查询的内部点击
查询:
GET test_products/_search
{
"query": {
"nested": {
"path": "properties",
"query": {
"bool": {
"must": [
{
"range": {
"properties.value": { --> check for value greater than 0
"gt": 0
}
}
}
],
"must_not": [
{
"term": {
"properties.group.raw": { ---> remove packaging
"value": "Packaging"
}
}
}
]
}
},
"inner_hits": {} ----> in response will give matched nested documents
}
}
}
请分享您的相关数据映射,以便我可以在我的测试集群中模拟它。您好@apt-get\u instal\u skill,很抱歉回复太晚,我已经在问题中添加了索引映射。