Elasticsearch Ingest节点

index.blocks.read_only1 true/false

设置为true将使索引和索引元数据为只读,设置为false将允许写入和元数据更改。

有时我们需要在转换文档之前对其进行索引。例如,我们要从文档中删除一个字段或重命名一个字段,然后对其进行索引。这由Ingest节点处理。

群集中的每个节点都具有提取功能,但也可以对其进行自定义以仅由特定节点进行处理。

步骤

摄取节点的工作涉及两个步骤-

  • 创建管道

  • 建立文件

创建管道

首先创建一个包含处理器的管道,然后执行该管道,如下所示-

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

在运行上面的代码时,我们得到以下结果-

{
   "acknowledged" : true
}

建立文件

接下来,我们使用管道转换器创建一个文档。

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

运行上面的代码后,我们得到如下所示的响应:

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

接下来,我们使用GET命令搜索上面创建的文档,如下所示-

GET /logs/_doc/1

在运行上面的代码时,我们得到以下结果-

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

您可以在上方看到21变为整数。

无管道

现在,我们无需使用管道即可创建文档。

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

在运行上面的代码时,我们得到以下结果-

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

您可以在上面看到11是一个不使用管道的字符串。