Elasticsearch 简明教程
Elasticsearch - IngestNode
index.blocks.read_only |
1 true/false |
设置为真以使索引和索引元数据只读,设置为假以允许写入和元数据更改。 |
有时,我们需要在索引文档之前对其进行转换。例如,我们希望从文档中删除一个字段或重命名一个字段,然后进行索引。这由摄取节点处理。
群集中每个节点都有摄取功能,但也可以将其自定义为仅由特定节点处理。
Steps Involved
摄取节点的工作涉及两个步骤 −
-
Creating a pipeline
-
Creating a doc
Create a Pipeline
首先创建包含处理器的管道,然后执行管道,如下所示 −
PUT _ingest/pipeline/int-converter
{
"description": "converts the content of the seq field to an integer",
"processors" : [
{
"convert" : {
"field" : "seq",
"type": "integer"
}
}
]
}
运行以上代码时,我们得到以下结果:-
{
"acknowledged" : true
}
Create a Doc
接下来,使用管道转换器创建文档。
PUT /logs/_doc/1?pipeline=int-converter
{
"seq":"21",
"name":"Tutorialspoint",
"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 已经变成一个整数。
Without Pipeline
现在,我们不用管道创建文档。
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 是一个字符串,没有使用管道。