- Truy vấn theo điều kiện
Truy vấn tất cả dữ liệu có tên là "Nguyễn Ba":
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 72
{
"query": {
"match": {
"name": "Nguyễn Ba"
}
}
}
- Truy vấn tất cả dữ liệu
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 53
{
"query": {
"match_all": {}
}
}
Nếu lượng dữ liệu lớn, bạn có thể sử dụng truy vấn phân trang.
- Truy vấn phân trang
Ví dụ: bắt đầu từ trang 0, mỗi trang hiển thị 3 kết quả.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 81
{
"query": {
"match_all": {}
},
"from": 0,
"size": 3
}
Để chỉ định các trường cụ thể cần trả về, bạn có thể thêm "source": [xxx, xxx] vào yêu cầu. Ví dụ, chỉ muốn lấy trường name.
- Truy vấn với các trường được chỉ định
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 105
{
"query": {
"match_all": {}
},
"from": 0,
"size": 3,
"_source": ["name"]
}
- Sắp xếp kết quả
Để sắp xếp, bạn chỉ cần thêm "sort" vào yêu cầu.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 184
{
"query": {
"match_all": {}
},
"from": 0,
"size": 10,
"_source": ["name", "age"],
"sort": {
"age": {
"order": "asc"
}
}
}
- Truy vấn với điều kiện AND (tương tự như AND trong SQL)
Truy vấn dữ liệu có tên là "Lê Năm" và tuổi là 30.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 260
{
"query": {
"bool": {
"must": [
{
"match": {
"age": 30
}
},
{
"match": {
"name": "Lê Năm"
}
}
]
}
}
}
- Truy vấn với điều kiện OR (tương tự như OR trong SQL)
Truy vấn dữ liệu có tên là "Lê Năm" hoặc tuổi là 30.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 260
{
"query": {
"bool": {
"should": [
{
"match": {
"age": 30
}
},
{
"match": {
"name": "Lê Năm"
}
}
]
}
}
}
- Truy vấn theo phạm vi
Truy vấn dữ liệu có tên là "Lê Bảy" hoặc "Lê Năm" và tuổi nằm trong khoảng từ 20 đến 35.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 454
{
"query": {
"bool": {
"should": [
{
"match": {
"name": "Lê Bảy"
}
},
{
"match": {
"name": "Lê Năm"
}
}
],
"filter": {
"range": {
"age": {
"gt": 20,
"lt": 35
}
}
}
}
}
}
- Truy vấn tổng hợp
Tổng hợp theo nhóm tuổi.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 180
{
"aggs": {
"age_group": {
"terms": {
"field": "age"
}
}
},
"size": 0
}
Kết quả trả về:
{
"took": 29,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 5,
"relation": "eq"
},
"max_score": null,
"hits": []
},
"aggregations": {
"age_group": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 30,
"doc_count": 3
},
{
"key": 20,
"doc_count": 2
}
]
}
}
}
- Tính giá trị trung bình
Tính giá trị trung bình của trường age.
GET /_search HTTP/1.1
Host: http://127.0.0.1:9200/shopping
Content-Type: application/json
Content-Length: 180
{
"aggs": {
"age_avg": {
"avg": {
"field": "age"
}
}
},
"size": 0
}