教程 > elastic search > 阅读:34

elasticsearch ingest 节点——迹忆客-ag捕鱼王app官网

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

集群中的每个节点都有摄取的能力,但也可以定制为仅由特定节点处理。


涉及的步骤

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":"jiyik",
   "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" : "tutorialspoint",
      "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 是一个没有使用管道的字符串。

查看笔记

扫码一下
查看教程更方便
网站地图