elasticsearch 子查询聚合查询只现实10条是怎么回事

Elasticsearch聚合多field问题
举个例子,现在索引中一条记录如下
"districtName": [
"districtId": [
由于es只能根据某field聚合,导致无法同时聚合districtId和districtName,
本人想获得的结果类似
"key": "9,上海",
"doc_count": 1
不知道各位有什么办法解决
改索引结构,用nested,ES的数组是无序的,没有这样的对应关系吧1.查询指定索引下每个A_logtype有多少数据
2.查询多个索引下每个A_logtype下有多少数据
Elasticsearch分组聚合
1.查询指定索引下每个A_logtype有多少数据
curl -XPOST ':19200/ylchou-0-/_search?pretty' -d '
& & & & & "size": 0,
& & & & & "aggs": {
& & & & & & "group_by_state": {
& & & & & & & "terms": {
& & & & & & & & "field": "A_logtype"
& & & & & & & }
& & & & & & }
& & & & & }
& & & & }'
& "took" : 33,
& "timed_out" : false,
& "_shards" : {
& & "total" : 1,
& & "successful" : 1,
& & "failed" : 0
& "hits" : {
& & "total" : 30434,
& & "max_score" : 0.0,
& & "hits" : [ ]
& "aggregations" : {
& & "group_by_state" : {
& & & "doc_count_error_upper_bound" : 0,
& & & "sum_other_doc_count" : 0,
& & & "buckets" : [ {
& & & & "key" : "waf-214",
& & & & "doc_count" : 28928
& & & }, {
& & & & "key" : "waf-358",
& & & & "doc_count" : 1506
2.查询多个索引下每个A_logtype下有多少数据
curl -XPOST 'localhost:19200/ylchou-0-2015-*/_search?pretty' -d '
& & & & & "size": 0,
& & & & & "aggs": {
& & & & & & "group_by_state": {
& & & & & & & "terms": {
& & & & & & & & "field": "A_logtype"
& & & & & & & }
& & & & & & }
& & & & & }
& & & & }'
& "took" : 531,
& "timed_out" : false,
& "_shards" : {
& & "total" : 28,
& & "successful" : 28,
& & "failed" : 0
& "hits" : {
& & "total" : ,
& & "max_score" : 0.0,
& & "hits" : [ ]
& "aggregations" : {
& & "group_by_state" : {
& & & "doc_count_error_upper_bound" : 0,
& & & "sum_other_doc_count" : 23151,
& & & "buckets" : [ {
& & & & "key" : "error",
& & & & "doc_count" : 3880753
& & & }, {
& & & & "key" : "draglog-168",
& & & & "doc_count" : 3566095
& & & }, {
& & & & "key" : "策略测试数据004",
& & & & "doc_count" : 2999538
& & & }, {
& & & & "key" : "syslog-37",
& & & & "doc_count" : 1284500
& & & }, {
& & & & "key" : "waf-214",
& & & & "doc_count" : 667958
& & & }, {
& & & & "key" : "QimingStar13",
& & & & "doc_count" : 646717
& & & }, {
& & & & "key" : "136test",
& & & & "doc_count" : 201971
& & & }, {
& & & & "key" : "标准化策略测试数据101",
& & & & "doc_count" : 161039
& & & }, {
& & & & "key" : "Waf150test",
& & & & "doc_count" : 24208
& & & }, {
& & & & "key" : "waf-358",
& & & & "doc_count" : 21579ElasticSearch教程--第二十章:探索您的数据--执行聚合
本篇教程翻译自ElasticSearch官方教程,原文地址:
其他章节见:
第二十章:探索您的数据--执行聚合
聚合可以从您的数据中组织并且提取数据。出于简单期间,您可以将聚合大致看做是SQL的GROUP
BY和SQL的聚合函数。在Elasticsearch中,您可以执行搜索,返回结果,并且同时返回从结果分离出来的聚合结果。这是十分强大的和有效的,您可以执行查询和多个聚合,并且可以在一次查询中得到所有操作结果,使用一个简明的API避免了网络往返传输。
下面这个例子首先根据州来聚合了所有的账户,然后返回前十个(默认的)计数最多的(默认的)州:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
& "size": 0,
& "aggs": {
& & "group_by_state":
"terms": {
& "field": "state"
在SQL中,上面的聚合在概念上类似于:
SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY
COUNT(*) DESC
返回结果如下(部分显示):
&"hits" : {
& & "total" : 1000,
& & "max_score" : 0.0,
& & "hits" : [ ]
& "aggregations" : {
& & "group_by_state" :
"buckets" : [ {
& "key" : "al",
& "doc_count" : 21
& "key" : "tx",
& "doc_count" : 17
& "key" : "id",
& "doc_count" : 15
& "key" : "ma",
& "doc_count" : 15
& "key" : "md",
& "doc_count" : 15
& "key" : "pa",
& "doc_count" : 15
& "key" : "dc",
& "doc_count" : 14
& "key" : "me",
& "doc_count" : 14
& "key" : "mo",
& "doc_count" : 14
& "key" : "nd",
& "doc_count" : 14
我们可以看到,在AL(abama)州有21个账户,在TX州有17个账户,然后是ID(aho)州有15个,等等。
注意,我们可以设置set=0来不显示搜索结果,因为我们只想看聚合结果。
在前面的聚合基础上,下面的例子计算每个州的平均账户余额(同样的,显示按照降序排序的前十个):
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
& "size": 0,
& "aggs": {
& & "group_by_state":
"terms": {
& "field": "state"
& "average_balance": {
& & "avg": {
& & & "field":
注意我们是如何嵌套average_balance聚合在group_by_state聚合里面的。对于聚合来说,这是一个常见的模式。您可以反复地在聚合里面嵌套聚合来从您的数据中提取您所需要的结果。
在前面的聚合基础上,现在让我们用降序来排列评价余额:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
& "size": 0,
& "aggs": {
& & "group_by_state":
"terms": {
& "field": "state",
& "order": {
& & "average_balance":
& "average_balance": {
& & "avg": {
& & & "field":
下面的例子演示了如何用年龄段(20-29,30-39,40-49)来分组,然后按照性别,最后得到每个年龄段,每个性别的平均账户余额:
curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
& "size": 0,
& "aggs": {
& & "group_by_age": {
"range": {
& "field": "age",
& "ranges": [
& & & "from":
& & & "to":
& & & "from":
& & & "to":
& & & "from":
& & & "to":
& "group_by_gender": {
& & "terms": {
& & & "field":
& & "aggs": {
"average_balance": {
& "avg": {
& & "field": "balance"
聚合还有很多其他的功能,这里我们就不讨论了。如果您想进一步地了解,可以查看。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。elasticsearch的基础语句介绍聚合功能很强大可以分析数据
elasticsearch聚合功能很强大 可以分析数据,比MySQL更加强大。可以根据爬山归类到运动。。。
下面是 安装以及一些基础命令
curl -L -O http://download.elasticsearch.org/PATH/TO/VERSION.zip &1&
unzip elasticsearch-VERSION.zipcdelasticsearch?VERSION
./bin/plugin -i elasticsearch/marvel/latest
禁用监控,关闭Marvel:
echo &marvel.agent.enabled: false& && ./config/elasticsearch.yml
cd /usr/share/elasticsearch
./bin/elasticsearch
打开另一个终端运行测试:
curl &http://localhost:9200/?pretty&
你能看到以下信息:{
&status&: 200,
&name&: &Shrunken Bones&,
&version&: {
&number&: &1.4.0&,
&lucene_version&: &4.10&
&tagline&: &You Know, for Search&
这说明你的ELasticsearch集群已经启动并运行
关系数据库(Relational DB) -& 库(Databases) -& 表(Tables) -& 行(Rows) -& 列(Columns)
Elasticsearch -& 索引(Indices) -& 类型(Types) -& 文档(Documents) -& 字段(Fields)
PUT /megacorp/employee/1
&first_name& : &John&,
&last_name& : &Smith&,
&age& : 25,
&about& : &I love to go rock climbing&,
&interests&: [ &sports&, &music& ]
PUT /megacorp/employee/3
&first_name&: &Douglas&,
&last_name&:&Fir&,
&about&:&I like to build cabinets&,
&interests&:[&forestry&]
注意到路径 /megacorp/employee/1 包含三部分信息:
megacorp 索引名
employee 类型名
1 这个职员的ID
搜索全部员工的请求:
GET /megacorp/employee/_search
GET /megacorp/employee/_search?q=_id:AU3leyatuy05ZviT4RuM
DSL语句查询 json格式
GET /megacorp/employee/_search
&query& : {
&match& : {
&last_name& : &Smith&
全文模糊 全文搜索
GET /megacorp/employee/_search
&query& : {
&match& : {
&about& : &rock climbing&
查询 about 包含完整短语&rock climbing&的员工。
GET /megacorp/employee/_search
&query& : {
&match_phrase& : {
&about& : &rock climbing&
高亮查询结果
GET /megacorp/employee/_search
&match_phrase&:{
&about&:&rock climbing&
&highlight&:{
&fields&:{
&about& : {}
牛逼的聚合功能
GET /megacorp/employee/_search
&all_interests&: {
&terms&: { &field&: &interests& }
&aggregations&: {
&all_interests&: {
&doc_count_error_upper_bound&: 0,
&sum_other_doc_count&: 0,
&buckets&: [
&key&: &music&,
&doc_count&: 4
&key&: &sports&,
&doc_count&: 4
&key&: &forestry&,
&doc_count&: 3
自动把员工的爱好归类 比如 爬山 归类到运动!!聚合功能就是在分析数据
姓&Smith&的兴趣爱好最多的是
GET /megacorp/employee/_search
&query&: {
&match&: {
&last_name&: &smith&
&all_interests&: {
&terms&: {
&field&: &interests&
统计每种兴趣下职员的平均年龄
GET /megacorp/employee/_search
&aggs& : {
&all_interests& : {
&terms& : { &field& : &interests& },
&aggs& : {
&avg_age& : {
&avg& : { &field& : &age& }}

我要回帖

更多关于 elasticsearch 查询 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信