Elasticsearch - IngestNode

index.blocks.read_only 1 đúng / sai Đặt thành true để chỉ đọc chỉ mục và siêu dữ liệu, false để cho phép ghi và thay đổi siêu dữ liệu.

Đôi khi chúng ta cần chuyển đổi một tài liệu trước khi lập chỉ mục cho nó. Ví dụ: chúng tôi muốn xóa một trường khỏi tài liệu hoặc đổi tên một trường và sau đó lập chỉ mục nó. Điều này được xử lý bởi nút Ingest.

Mọi nút trong cụm đều có khả năng nhập nhưng nó cũng có thể được tùy chỉnh để chỉ được xử lý bởi các nút cụ thể.

Các bước liên quan

Có hai bước liên quan đến hoạt động của nút nhập:

  • Tạo đường dẫn
  • Tạo tài liệu

Tạo một đường ống

Đầu tiên, tạo một đường dẫn chứa các bộ xử lý và sau đó thực hiện đường dẫn, như được hiển thị bên dưới:

PUT _ingest/pipeline/int-converter
{
   "description": "converts the content of the seq field to an integer",
   "processors" : [
      {
         "convert" : {
            "field" : "seq",
            "type": "integer"
         }
      }
   ]
}

Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:

{
   "acknowledged" : true
}

Tạo tài liệu

Tiếp theo, chúng tôi tạo một tài liệu bằng cách sử dụng bộ chuyển đổi đường ống.

PUT /logs/_doc/1?pipeline=int-converter
{
   "seq":"21",
   "name":"Tutorialspoint",
   "Addrs":"Hyderabad"
}

Khi chạy đoạn mã trên, chúng tôi nhận được phản hồi như hình dưới đây:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 0,
   "_primary_term" : 1
}

Tiếp theo, chúng tôi tìm kiếm tài liệu đã tạo ở trên bằng cách sử dụng lệnh GET như hình dưới đây:

GET /logs/_doc/1

Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "_seq_no" : 0,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "Addrs" : "Hyderabad",
      "name" : "Tutorialspoint",
      "seq" : 21
   }
}

Bạn có thể thấy ở trên rằng 21 đã trở thành một số nguyên.

Không có đường ống

Bây giờ chúng ta tạo một tài liệu mà không cần sử dụng đường dẫn.

PUT /logs/_doc/2
{
   "seq":"11",
   "name":"Tutorix",
   "Addrs":"Secunderabad"
}
GET /logs/_doc/2

Khi chạy đoạn mã trên, chúng tôi nhận được kết quả sau:

{
   "_index" : "logs",
   "_type" : "_doc",
   "_id" : "2",
   "_version" : 1,
   "_seq_no" : 1,
   "_primary_term" : 1,
   "found" : true,
   "_source" : {
      "seq" : "11",
      "name" : "Tutorix",
      "Addrs" : "Secunderabad"
   }
}

Bạn có thể thấy ở trên rằng 11 là một chuỗi không có đường ống được sử dụng.