[Elasticsearch - CLI] Phân tích dữ liệu (Aggregations API)
Đôi khi, chỉ tìm kiếm không đủ, bạn cần phải thực hiện các aggregations để có cái nhìn sâu hơn về dữ liệu. Một ví dụ điển hình là terms aggregations, cho phép nhóm kết quả tìm kiếm theo một thuộc tính cụ thể.
Ví dụ, để đếm số lượng sách theo publisher, chúng ta có thể sử dụng Aggregations API như sau:
$ curl -i https://localhost:9200/catalog/books/_search?pretty -d '
{
"query": {
"match": {
"description": "elasticsearch"
}
},
"aggs": {
"publisher": {
"terms": {
"field": "publisher"
}
}
}
}'
Kết quả (rút gọn)
{
"aggregations": {
"publisher": {
"buckets": [
{
"key": "Manning",
"doc_count": 2
},
{
"key": "O’Reilly",
"doc_count": 1
}
]
}
}
}
Ở đây, ngoài việc trả về danh sách các books, Elasticsearch cũng đếm số lượng sách theo từng publisher.
Chúng ta cũng có thể thực hiện child aggregations, ví dụ nhóm các authors theo sách của họ:
$ curl -i https://localhost:9200/catalog/books/_search?pretty -d '
{
"aggs": {
"authors": {
"children": {
"type": "authors"
},
"aggs": {
"top-authors": {
"terms": {
"script": {
"inline": "doc['first_name'].value + ' ' + doc['last_name'].value",
"lang": "painless"
},
"size": 10
}
}
}
}
}
}'
Với Aggregations API, bạn có thể thực hiện nhiều loại thống kê khác nhau trên dữ liệu của mình một cách hiệu quả.
All rights reserved