API này được sử dụng để tìm kiếm nội dung trong Elasticsearch. Người dùng có thể tìm kiếm bằng cách gửi yêu cầu nhận với chuỗi truy vấn làm tham số hoặc họ có thể đăng truy vấn trong nội dung thư của yêu cầu đăng. Chủ yếu tất cả các APIS tìm kiếm là đa chỉ mục, đa loại.
Đa chỉ mục
Elasticsearch cho phép chúng tôi tìm kiếm các tài liệu có trong tất cả các chỉ số hoặc trong một số chỉ số cụ thể. Ví dụ: nếu chúng ta cần tìm kiếm tất cả các tài liệu có tên chứa trung tâm, chúng ta có thể thực hiện như được hiển thị ở đây
GET /_all/_search?q=city:paprola
Khi chạy đoạn mã trên, chúng tôi nhận được phản hồi sau:
{
"took" : 33,
"timed_out" : false,
"_shards" : {
"total" : 7,
"successful" : 7,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.9808292,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "5",
"_score" : 0.9808292,
"_source" : {
"name" : "Central School",
"description" : "CBSE Affiliation",
"street" : "Nagan",
"city" : "paprola",
"state" : "HP",
"zip" : "176115",
"location" : [
31.8955385,
76.8380405
],
"fees" : 2200,
"tags" : [
"Senior Secondary",
"beautiful campus"
],
"rating" : "3.3"
}
}
]
}
}
Tìm kiếm URI
Nhiều tham số có thể được chuyển trong thao tác tìm kiếm bằng Mã định danh tài nguyên đồng nhất
S.Không | Mô tả về Thông Số |
1 | Q Tham số này được sử dụng để chỉ định chuỗi truy vấn. |
2 | nhân hậu Tham số này được sử dụng để chỉ định chuỗi truy vấn. Các lỗi dựa trên định dạng có thể được bỏ qua bằng cách chỉ cần đặt tham số này thành true. Nó là sai theo mặc định. |
3 | lĩnh vực Tham số này được sử dụng để chỉ định chuỗi truy vấn. |
4 | sắp xếp Chúng ta có thể nhận được kết quả được sắp xếp bằng cách sử dụng tham số này, các giá trị có thể có cho tham số này là fieldName, fieldName: asc / fieldname: desc |
5 | hết giờ Chúng tôi có thể giới hạn thời gian tìm kiếm bằng cách sử dụng thông số này và phản hồi chỉ chứa các lần truy cập trong thời gian được chỉ định đó. Theo mặc định, không có thời gian chờ. |
6 | chấm dứt_sau Chúng tôi có thể hạn chế phản hồi đối với một số tài liệu cụ thể cho mỗi phân đoạn, khi đạt đến đó, truy vấn sẽ kết thúc sớm. Theo mặc định, không có cuối_sau. |
7 | từ Bắt đầu từ chỉ mục của các lần truy cập để trả về. Mặc định là 0. |
số 8 | kích thước Nó biểu thị số lần truy cập để trả lại. Mặc định là 10. |
Yêu cầu tìm kiếm
Chúng tôi cũng có thể chỉ định truy vấn bằng cách sử dụng DSL truy vấn trong phần thân yêu cầu và có nhiều ví dụ đã được đưa ra trong các chương trước. Một ví dụ như vậy được đưa ra ở đây
POST /schools/_search
{
"query":{
"query_string":{
"query":"up"
}
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được phản hồi sau:
{
"took" : 11,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 0.47000363,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "4",
"_score" : 0.47000363,
"_source" : {
"name" : "City Best School",
"description" : "ICSE",
"street" : "West End",
"city" : "Meerut",
"state" : "UP",
"zip" : "250002",
"location" : [
28.9926174,
77.692485
],
"fees" : 3500,
"tags" : [
"fully computerized"
],
"rating" : "4.5"
}
}
]
}
}
Elasticsearch – Tổng hợp
Khung tổng hợp thu thập tất cả dữ liệu được chọn bởi truy vấn tìm kiếm và bao gồm nhiều khối xây dựng, giúp xây dựng các bản tóm tắt phức tạp của dữ liệu. Cấu trúc cơ bản của một tập hợp được hiển thị ở đây:
"aggregations" : {
"" : {
"" : {
}
[,"meta" : { [] } ]?
[,"aggregations" : { []+ } ]?
}
[,"" : { ... } ]*
}
Có nhiều loại tập hợp khác nhau, mỗi loại có mục đích riêng. Chúng được thảo luận chi tiết trong chương này.
Tổng hợp số liệu
Các tổng hợp này giúp tính toán ma trận từ các giá trị của trường của các tài liệu tổng hợp và đôi khi một số giá trị có thể được tạo ra từ các tập lệnh.
Ma trận số có giá trị đơn như tổng hợp trung bình hoặc đa giá trị như thống kê.
Tổng hợp Trung bình
Tổng hợp này được sử dụng để lấy giá trị trung bình của bất kỳ trường số nào có trong các tài liệu tổng hợp. Ví dụ
POST /schools/_search
{
"aggs":{
"avg_fees":{"avg":{"field":"fees"}}
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 41,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "schools",
"_type" : "school",
"_id" : "5",
"_score" : 1.0,
"_source" : {
"name" : "Central School",
"description" : "CBSE Affiliation",
"street" : "Nagan",
"city" : "paprola",
"state" : "HP",
"zip" : "176115",
"location" : [
31.8955385,
76.8380405
],
"fees" : 2200,
"tags" : [
"Senior Secondary",
"beautiful campus"
],
"rating" : "3.3"
}
},
{
"_index" : "schools",
"_type" : "school",
"_id" : "4",
"_score" : 1.0,
"_source" : {
"name" : "City Best School",
"description" : "ICSE",
"street" : "West End",
"city" : "Meerut",
"state" : "UP",
"zip" : "250002",
"location" : [
28.9926174,
77.692485
],
"fees" : 3500,
"tags" : [
"fully computerized"
],
"rating" : "4.5"
}
}
]
},
"aggregations" : {
"avg_fees" : {
"value" : 2850.0
}
}
}
Cardinality Aggregation
Tổng hợp này cung cấp số lượng các giá trị riêng biệt của một trường cụ thể.
POST /schools/_search?size=0
{
"aggs":{
"distinct_name_count":{"cardinality":{"field":"fees"}}
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"distinct_name_count" : {
"value" : 2
}
}
}
Lưu ý – Giá trị của cardinality là 2 vì có hai giá trị khác nhau trong phí.
Tổng hợp số liệu thống kê mở rộng
Việc tổng hợp này tạo ra tất cả các thống kê về một trường số cụ thể trong các tài liệu được tổng hợp.
POST /schools/_search?size=0
{
"aggs" : {
"fees_stats" : { "extended_stats" : { "field" : "fees" } }
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"fees_stats" : {
"count" : 2,
"min" : 2200.0,
"max" : 3500.0,
"avg" : 2850.0,
"sum" : 5700.0,
"sum_of_squares" : 1.709E7,
"variance" : 422500.0,
"std_deviation" : 650.0,
"std_deviation_bounds" : {
"upper" : 4150.0,
"lower" : 1550.0
}
}
}
}
Tổng hợp tối đa
Tổng hợp này tìm giá trị tối đa của một trường số cụ thể trong các tài liệu được tổng hợp.
POST /schools/_search?size=0
{
"aggs" : {
"max_fees" : { "max" : { "field" : "fees" } }
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 16,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"max_fees" : {
"value" : 3500.0
}
}
}
Tổng hợp của tôi
Tổng hợp này tìm giá trị tối thiểu của một trường số cụ thể trong các tài liệu được tổng hợp
POST /schools/_search?size=0
{
"aggs" : {
"min_fees" : { "min" : { "field" : "fees" } }
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"min_fees" : {
"value" : 2200.0
}
}
}
Tổng hợp
Tập hợp này tính tổng của một trường số cụ thể trong các tài liệu được tổng hợp.
POST /schools/_search?size=0
{
"aggs" : {
"total_fees" : { "sum" : { "field" : "fees" } }
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 8,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"total_fees" : {
"value" : 5700.0
}
}
}
Có một số tổng hợp số liệu khác được sử dụng trong các trường hợp đặc biệt như tổng hợp giới hạn địa lý và tổng hợp trung tâm địa lý cho mục đích xác định vị trí địa lý.
Tổng hợp số liệu thống kê
Tổng hợp chỉ số nhiều giá trị tính toán thống kê trên các giá trị số được trích xuất từ các tài liệu tổng hợp.
POST /schools/_search?size=0
{
"aggs" : {
"grades_stats" : { "stats" : { "field" : "fees" } }
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"grades_stats" : {
"count" : 2,
"min" : 2200.0,
"max" : 3500.0,
"avg" : 2850.0,
"sum" : 5700.0
}
}
}
Siêu dữ liệu tổng hợp
Bạn có thể thêm một số dữ liệu về tập hợp tại thời điểm được yêu cầu bằng cách sử dụng thẻ meta và có thể lấy dữ liệu đó để phản hồi.
POST /schools/_search?size=0
{
"aggs" : {
"min_fees" : { "avg" : { "field" : "fees" } ,
"meta" :{
"dsc" :"Lowest Fees This Year"
}
}
}
}
Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
},
"aggregations" : {
"min_fees" : {
"meta" : {
"dsc" : "Lowest Fees This Year"
},
"value" : 2850.0
}
}
}