Home PC Games Linux Windows Database Network Programming Server Mobile  
           
  Home \ Server \ Elasticsearch 2.20 Beginners: aggregation     - Linux, C programming language library file handling and preparation of Makefile (Programming)

- Oracle10g 64-bit installation solution in Windows 2008 Server R2 (Database)

- Single Instance ASM under CRS-4124, CRS-4000 error handling (Database)

- Clojure programming languages: take full advantage of the Clojure plug-in Eclipse (Programming)

- Build your own CA services: OpenSSL command line CA Quick Guide (Server)

- Linux host dual LAN transceiver package ARP problem (Linux)

- systemd-nspawn Quick Guide (Linux)

- Using iptables achieve NAT (Linux)

- BusyBox build root file system (Linux)

- Python extension module Ganglia 3.1.x (Linux)

- CentOS7 install JAVA notes (Linux)

- Denyhosts prevent hackers using SSH scanning (Linux)

- Linux hard drive failure Case Studies (Linux)

- Use OpenSSL for RSA encryption and decryption (Linux)

- numpy and SciPy installation under Python for scientific computing package (Linux)

- Depth understanding of JavaScript new mechanism (Programming)

- The principle Httpclient4.4 (execution request) (Programming)

- To solve the Mac in question invalid BASH under configuration environment variable (Linux)

- Oracle 11R2 Grid Infrastructure execute root.sh script rootcrs.pl execution failed treatment (Database)

- Android Studio installed in Ubuntu 15.04 (Linux)

 
         
  Elasticsearch 2.20 Beginners: aggregation
     
  Add Date : 2018-11-21      
         
         
         
  Polymerization (Aggregations) provides the ability to group and statistical documents. Similar polymerization relational database group by grouping functions in Elasticsearch in which the primary aggregate query can get the specific results of the polymerization are polymerized Again, this is a very useful feature. You can get the results many times by one operation of the polymerization, thus avoiding repeated requests, to reduce the burden on the network and servers.

Polymerization (Aggregations) provides the ability to group and statistical documents. Similar polymerization relational database group by grouping functions in Elasticsearch in which the primary aggregate query can get the specific results of the polymerization are polymerized Again, this is a very useful feature. You can get the results many times by one operation of the polymerization, thus avoiding repeated requests, to reduce the burden on the network and servers.

Data Preparation: We insert a few data:

Request: POST localhost:9200/customer/external/?pretty

parameter:

{ "Name": "secisland", "age": 25, "state": "open", "gender": "woman", "balance": 87}

{ "Name": "zhangsan", "age": 32, "state": "close", "gender": "man", "balance": 95}

{ "Name": "zhangsan1", "age": 33, "state": "close", "gender": "man", "balance": 91}

{ "Name": "lisi", "age": 34, "state": "open", "gender": "woman", "balance": 99}

{ "Name": "wangwu", "age": 46, "state": "close", "gender": "woman", "balance": 78}

Wherein the insert 5 as the test data.

Once we have data aggregation test:

Example: all customers grouped by status, then return to the top 10 (the default), press statistics (also the default) Sort:

Request: POST http: // localhost: 9200 / customer / _search pretty?

parameter:

{
  "Size": 0,
  "Aggs": {
    "Group_by_state": {
      "Terms": {
        "Field": "state"
      }
    }
  }
}

This condition is similar to the query in a relational database group by:
SELECT state, COUNT (*) FROM customer GROUP BY state ORDER BY COUNT (*) DESC

Return:

  {
  "Took": 1,
  "Timed_out": false,
  "_shards": {
    "Total": 5,
    "Successful": 5,
    "Failed": 0
  },
  "Hits": {
    "Total": 5,
    "Max_score": 0.0,
    "Hits": []
  },
  "Aggregations": {
    "Group_by_state": {
      "Doc_count_error_upper_bound": 0,
      "Sum_other_doc_count": 0,
      "Buckets": [{
        "Key": "close",
        "Doc_count": 3
      }, {
        "Key": "open",
        "Doc_count": 2
      }]
    }
  }
}

We can be seen, there are two close states customers, users two open states.

Here we are again on the basis of the above increase is a function of the state, while the statistical average balance is calculated for each state.

Request and just the same, but the parameters have changed, consider the following parameters:

{
  "Size": 0,
  "Aggs": {
    "Group_by_state": {
      "Terms": {
        "Field": "state"
      },
      "Aggs": {
        "Average_balance": {
          "Avg": {
            "Field": "balance"
          }
        }
      }
    }
  }
}

Results obtained are as follows:

{
  "Took": 16,
  "Timed_out": false,
  "_shards": {
    "Total": 5,
    "Successful": 5,
    "Failed": 0
  },
  "Hits": {
    "Total": 5,
    "Max_score": 0.0,
    "Hits": []
  },
  "Aggregations": {
    "Group_by_state": {
      "Doc_count_error_upper_bound": 0,
      "Sum_other_doc_count": 0,
      "Buckets": [{
        "Key": "close",
        "Doc_count": 3,
        "Average_balance": {
          "Value": 88.0
        }
      }, {
        "Key": "open",
        "Doc_count": 2,
        "Average_balance": {
          "Value": 93.0
        }
      }]
    }
  }
}

Look carefully at how the nested average_balance gathered in group_by_state ACCUMULATION. This is a common pattern polymerization. Any field can be aggregated to get the results we want again after polymerization.

Look at the following example, we obtain the results of the above-average amount of accounts again in descending order:

Request the same as before:

parameter:

{
  "Size": 0,
  "Aggs": {
    "Group_by_state": {
      "Terms": {
        "Field": "state",
        "Order": {
          "Average_balance": "desc"
        }
      },
      "Aggs": {
        "Average_balance": {
          "Avg": {
            "Field": "balance"
          }
        }
      }
    }
  }
}

Results obtained:

{
  "Took": 1,
  "Timed_out": false,
  "_shards": {
    "Total": 5,
    "Successful": 5,
    "Failed": 0
  },
  "Hits": {
    "Total": 5,
    "Max_score": 0.0,
    "Hits": []
  },
  "Aggregations": {
    "Group_by_state": {
      "Doc_count_error_upper_bound": 0,
      "Sum_other_doc_count": 0,
      "Buckets": [{
        "Key": "open",
        "Doc_count": 2,
        "Average_balance": {
          "Value": 93.0
        }
      }, {
        "Key": "close",
        "Doc_count": 3,
        "Average_balance": {
          "Value": 88.0
        }
      }]
    }
  }
}

This article by the Mosaic Rand (secisland) original, reproduced, please indicate the author and source.

The following example is more complex: demonstrates how age group (ages 20-29, 30-39, 40-49), and then through sex, and finally get every age group, the average account balance each sex:

{
  "Size": 0,
  "Aggs": {
    "Group_by_age": {
      "Range": {
        "Field": "age",
        "Ranges": [
          {
            "From": 20,
            "To": 30
          },
          {
            "From": 30,
            "To": 40
          },
          {
            "From": 40,
            "To": 50
          }
        ]
      },
      "Aggs": {
        "Group_by_gender": {
          "Terms": {
            "Field": "gender"
          },
          "Aggs": {
            "Average_balance": {
              "Avg": {
                "Field": "balance"
              }
            }
          }
        }
      }
    }
  }
}

Check out the return:

{
  "Took": 15,
  "Timed_out": false,
  "_shards": {
    "Total": 5,
    "Successful": 5,
    "Failed": 0
  },
  "Hits": {
    "Total": 5,
    "Max_score": 0.0,
    "Hits": []
  },
  "Aggregations": {
    "Group_by_age": {
      "Buckets": [{
        "Key": "20.0-30.0",
        "From": 20.0,
        "From_as_string": "20.0",
        "To": 30.0,
        "To_as_string": "30.0",
        "Doc_count": 1,
        "Group_by_gender": {
          "Doc_count_error_upper_bound": 0,
          "Sum_other_doc_count": 0,
          "Buckets": [{
            "Key": "woman",
            "Doc_count": 1,
            "Average_balance": {
              "Value": 87.0
            }
          }]
        }
      }, {
        "Key": "30.0-40.0",
        "From": 30.0,
        "From_as_string": "30.0",
        "To": 40.0,
        "To_as_string": "40.0",
        "Doc_count": 3,
        "Group_by_gender": {
          "Doc_count_error_upper_bound": 0,
          "Sum_other_doc_count": 0,
          "Buckets": [{
            "Key": "man",
            "Doc_count": 2,
            "Average_balance": {
              "Value": 93.0
            }
          }, {
            "Key": "woman",
            "Doc_count": 1,
            "Average_balance": {
              "Value": 99.0
            }
          }]
        }
      }, {
        "Key": "40.0-50.0",
        "From": 40.0,
        "From_as_string": "40.0",
        "To": 50.0,
        "To_as_string": "50.0",
        "Doc_count": 1,
        "Group_by_gender": {
          "Doc_count_error_upper_bound": 0,
          "Sum_other_doc_count": 0,
          "Buckets": [{
            "Key": "woman",
            "Doc_count": 1,
            "Average_balance": {
              "Value": 78.0
            }
          }]
        }
      }]
    }
  }
}

As can be seen from the above examples, Elasticsearch aggregation capability is very powerful.
     
         
         
         
  More:      
 
- Android Application Development: Genymotion can not start solving (Linux)
- Java polymorphic methods inside constructors complete analysis (Programming)
- The ORA-01113 error is handled with BBED without archiving (Database)
- Linux use iptables ban Ping (Linux)
- Ubuntu users Steam controller does not work solutions (Linux)
- Use lsof restore accidentally deleted log files or database (Linux)
- Linux screen commonly commands (Linux)
- Timing task Crontab under Linux system (Linux)
- Understand ASP.NET 5 running the command: DNVM, DNX, and DNU (Server)
- Ubuntu 15.04 using the Eclipse 4.4, Java 8 and WTP (Linux)
- WebLogic 12c Configuration Node Manager Managed Server (Database)
- How to Start a Linux application running in the background using the terminal mode (Linux)
- The REVERSE function of DB2 (Database)
- File encryption and decryption of Linux security mechanisms (Linux)
- CentOS 6/7 Series Docker Installation (Linux)
- Java object serialization (Programming)
- Whisker Menu 1.4.3 Install menu Linux (Linux)
- Linux signal and orphans, and zombie process (Programming)
- User rights management system under Linux (Linux)
- Linux Network Programming - non-blocking program (Programming)
     
           
     
  CopyRight 2002-2022 newfreesoft.com, All Rights Reserved.