elasticsearch query bool nested对象 聚合

复杂的查询
下面的查询是小编自己研究写的一个比较复杂,的语句。涉及到查query ,bool must,已经过滤条件term
关键词介绍
from : 表示从第几条开始返回
size: 表示返回的题目数大小。
query :查询语句
bool 、must、 should 是拼接sql中的where条件,bool 、must组合表示 and,bool 、should 组合表示 or。
range: 范围查询语句,在本语句中我们只使用了小于 “lte”,大于 "gte"也可以将小于大于写到一个range内对一个数据的范围进行筛选。
aggs是对数据进行聚合,本示例中的我们实行的是对复杂对象(nested)的聚合操作。
其中group的格式为
{
id:1,
name:“myname”,
group:[{id:1,name:1},{id:2,name:2},{id:13,name:13}]
}

GET /my_index/_search
{
 "from": 0, 
 "size": 1, 
  "query": {
    "bool": {
      "must": [
        {
          "term": {
            "time": {
              "value": "2019-01-10 12:15:00"
            }
          }
        },
        {
          "bool": {
            "should": [
              {
                "range": {
                  "wireless_ss_1_rate": {
                    "lte": 0.9
                  }
                }
              },
              {
                "range": {
                  "wireless_cll_rate": {
                    "gte": 0.015
                  }
                }
              },
              {
                "range": {
                  "erab_dr_1_rate": {
                    "gte": 0.015
                  }
                }
              },
              {
                "range": {
                  "uppktlo_rate": {
                    "gte": 0.015
                  }
                }
              },
              {
                "range": {
                  "uppktlos_rate": {
                    "gte": 0.015
                  }
                }
              },
              {
                "range": {
                  "ho_s_rate": {
                    "lte": 0.9
                  }
                }
              },
              {
                "range": {
                  "wireless_ac_rate": {
                    "lte": 0.95
                  }
                }
              },
              {
                "range": {
                  "ulprbmea_rate": {
                    "gte": 0.7
                  }
                }
              },
              {
                "range": {
                  "dlprbmea_rate": {
                    "gte": 0.7
                  }
                }
              },
              {
                "range": {
                  "effectivemean": {
                    "gte": 50
                  }
                }
              },
              {
                "range": {
                  "effectivemax": {
                    "gte": 50
                  }
                }
              },
              {
                "range": {
                  "ho_succ_qci1_rate": {
                    "lte": 0.9
                  }
                }
              },
              {
                "range": {
                  "ulmeannl_avg": {
                    "gte": -105
                  }
                }
              },
              {
                "range": {
                  "outgeran_rate": {
                    "lte": 0.9
                  }
                }
              }
            ]
          }
        }
       
       
      
      ]
    }
  },
    "aggs": {
        "aggs_group": {
          "nested": {
            "path": "group"
          },
          "aggs": {
            "duration_ranges": {
          "terms": {
            "field": "group.id",
            "size": 100000
            // size 设置返回聚合的条目数,默认是10条。
          }
        }
      }
    }
  }
  ,
  "_source": ["my_col"]
}

注意集合时候需要将被聚合对象的fielddata属性是否开,该属性作用是1.懒加载,2.聚合时候可以把数据放入缓存来加快计算速度
1.一般对象释放fielddata属性
#释放name

PUT /my_index/_mapping/_doc
{
  "properties": {
    "name": {
      "type": "text",
      "fielddata": true
    }
  }
}

2.复杂对象(nested对象)释放fielddata属性
#释放cell_group.id

PUT /tpa_eutrancell_q_2019.01.10/_mapping/_doc
{
  "properties": {
    "group": {
      "type": "nested",
      "properties": {
        "id": {
          "type": "text",
          "fielddata": true
        }
      }
    }
  }
}

上面的语句是正确可以执行的。欢迎各位大家给予意见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值