Elasticsearch Chọn các trường cụ thể

Elasticsearch Chon Cac Truong Cu The



Elasticsearch mặc định sẽ trả về tất cả các trường trong tài liệu khi thực hiện truy vấn tìm kiếm. Điều này được xác định bởi tham số _source, chứa tất cả dữ liệu được lưu trữ trong bản ghi trong quá trình lập chỉ mục.

curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: báo cáo'

Đầu ra:







Tuy nhiên, bạn có thể không muốn truy xuất tất cả các trường từ một tài liệu nhất định. Trong hướng dẫn này, bạn sẽ tìm hiểu cách chọn các trường cụ thể từ một tài liệu.



Tùy chọn trường Elasticsearch

Tham số các trường cho phép chúng tôi truy xuất các trường cụ thể trong một yêu cầu tìm kiếm. Ngoài ra, tham số trường sẽ cho phép chúng tôi tìm nạp một hoặc nhiều trường. Bạn cũng có thể định dạng ngày tháng và kiểu dữ liệu không gian bằng cách sử dụng tham số trường.



Ví dụ: giả sử chúng tôi muốn truy xuất chỉ mục, id, tiêu đề, release_year, được liệt kê trong, thời lượng và xếp hạng từ chỉ mục Netflix, chúng tôi có thể chạy một truy vấn như được hiển thị bên dưới:





curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: báo cáo' -H 'Content-Type: application / json' -d '
{
'truy vấn': {
'cuộc thi đấu': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'lĩnh vực': [
'mục lục',
'Tôi',
'Tiêu đề',
'năm phát hành',
'được liệt kê trong',
'khoảng thời gian',
'Xếp hạng'
],
'_source': false

} '

Trong yêu cầu ở trên, chúng tôi sử dụng API tìm kiếm để tìm kiếm tài liệu có id được chỉ định trong tham số đối sánh.

Sau đó, chúng tôi sử dụng tham số các trường để tìm nạp các trường cụ thể từ tài liệu đích.



Lưu ý rằng Elasticsearch mặc định sẽ bao gồm tham số _source, bao gồm tất cả các trường tài liệu. Để đảm bảo chúng tôi chỉ tìm nạp các trường được chỉ định, chúng tôi tắt tham số _source:

Yêu cầu ở trên sẽ trả về một phản hồi như được hiển thị:

{
'lấy': 1,
'timed_out': false,
'_shards': {
'tổng số': 1,
'thành công': 1,
'bỏ qua': 0,
'không thành công': 0
},
'lượt truy cập': {
'toàn bộ': {
'giá trị': 1,
'quan hệ': 'eq'
},
'max_score': 1,
'lượt truy cập': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'lĩnh vực': {
'được liệt kê trong': [
'Phim tài liệu'
],
'khoảng thời gian': [
'90 phút'
],
'năm phát hành': [
Năm 2020
],
'Xếp hạng': [
'PG-13'
],
'Tiêu đề': [
'Dick Johnson đã chết'
]
}
}
]
}
}

Bạn cũng có thể sử dụng tham số _source để xác định trường nào sẽ trả về từ truy vấn tìm kiếm. Một ví dụ đã được biểu diễn ở dưới:

curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: report' -H 'Content-Type: application / json' -d '
{
'_source': ['title', 'release_year', 'rating', 'time'],
'truy vấn': {
'kỳ hạn': {
'_Tôi': {
'giá trị': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}

} '

Trong trường hợp này, chúng tôi chỉ định các trường mà chúng tôi muốn truy xuất dưới dạng một mảng trong tham số nguồn. Yêu cầu ở trên sẽ trả về phản hồi như được hiển thị:

{
'lấy': 0,
'timed_out': false,
'_shards': {
'tổng số': 1,
'thành công': 1,
'bỏ qua': 0,
'không thành công': 0
},
'lượt truy cập': {
'toàn bộ': {
'giá trị': 1,
'quan hệ': 'eq'
},
'max_score': 1,
'lượt truy cập': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_nguồn': {
'thời lượng': '90 phút',
'release_year': 2020,
'xếp hạng': 'PG-13',
'title': 'Dick Johnson đã chết'
}
}
]
}

}

Sự kết luận

Trong bài viết này, bạn đã học cách tìm nạp các trường cụ thể từ một yêu cầu tìm kiếm bằng cách sử dụng các trường và tham số _source.

Để tìm hiểu thêm về Elasticsearch và các khả năng của nó, hãy xem hướng dẫn của chúng tôi về chủ đề này. Bạn được đảm bảo sẽ tìm thấy một cái gì đó hữu ích.

Cảm ơn đã đọc & Hẹn gặp bạn trong phần tiếp theo !!