Elasticsearch 中管道
文章目录
1、管道( Ingest Pipeline)
请求请求PUT /_ingest/pipeline/attachment
是在Elasticsearch中创建一个Ingest Pipeline,用于处理文档中的附件(如PDF、Word、TXT等),提取出其中的文本内容和元数据,并删除原始的附件数据。具体解释如下:
1.管道描述
"description": "提取附件信息"
表明该Pipeline的目的是从上传的文件数据中提取内容和元数据。
2.处理器(Processors)
这个Pipeline包含两个处理器,分别是attachment
CPU和remove
CPU。
(1)attachment
处理器
{
"attachment": {
"field": "content",
"ignore_missing": true
}
}
- 处理器:
attachment
基于Elasticsearch的Ingest Attachment Processor插件,它的作用是从指定字段中提取文件内容作用和元数据。这里指定的字段是content
,该字段通常是包含附件文件的Base64编码数据,比如PDF、Word或者TXT文件的内容。 - 内容提取:该处理器会解析
content
字段中存储的附件,并提取:- 文本内容(
attachment.content
) - 文件类型(
attachment.content_type
) - 语言(
attachment.language
) - 作者(
attachment.author
,如果文件中有的话) - 文件大小(
attachment.content_length
)等元数据
- 文本内容(
ignore_missing: true
:如果content
字段不存在或者为空,处理器不会报错,但是会忽略这个字段并继续执行。这很实用,因为文档某些可能没有附件,你不希望整个处理过程缺少因为字段而失败。
(2)remove
处理器
{
"remove": {
"field": "content"
}
}
- 作用:该处理器会在
attachment
处理器提取完数据后,删除原始的content
字段,对Base64编码的文件数据。这样可以减少存储空间的占用,因为在提取完文本内容和元数据之后,通常不再需要保存原始的Base64数据。
3.整体流程
这个Pipeline的执行流程是:
- 提取文件内容和元数据:首先,
attachment
处理器从content
字段中提取附件的内容和相关元数据,存储在新的attachment
字段中。 - 删除原始的Base64数据文件:接着,
remove
处理器会删除原始的content
字段,确保只保留提取出的文本和元数据,减少存储空间。
4.应用场景
可能的Pipeline主要用于处理包含文件附件的文档,比如你有一个PDF文件或Word文档,想要提取其中的文本并进行全面的搜索或分析。典型的使用场景包括:
- 全文搜索:您可以对提取出的文件内容进行全文搜索,而不需要保留原始的文件数据。
- 文件元数据存储:您可以存储并查询文件的元数据(如作者、文件类型、文件大小等),用于过滤或分析。
示例:如何使用该管道
-
创建管道(如本例中已经完成)
PUT /_ingest/pipeline/attachment { "description": "提取附件信息", "processors": [ { "attachment": { "field": "content", "ignore_missing": true } }, { "remove": { "field": "content" } } ] }
-
上传文件并进行处理 上传一个文件的Base64编码内容并通过该Pipeline进行处理:
POST /my_index/_doc?pipeline=attachment { "content": "BASE64_ENCODED_FILE_CONTENT" }
-
存储的文档内容:执行成功后,Elasticsearch会存储提取出的
attachment
字段(文件内容和元数据),而不会保存原始的content
字段。文档的索引可能看起来像这样:
{ "_index": "my_index", "_id": "1", "_source": { "attachment": { "content": "This is the extracted text from the file...", "content_type": "application/pdf", "language": "en", "author": "Author Name", "content_length": 12345 } } }
总结
这个Pipeline的作用是从文档中的附件(如PDF、Word、TXT文件等)提取内容和元数据,进而删除原始的Base64编码数据,以优化存储并为全文搜索等操作做好准备。
2、如何设置attachment
处理器取出指定
字段
在Elasticsearch的attachment
处理器中,如果您不想提取文档属性中的标题(title
),可以通过properties
参数来控制要提取哪些字段。**properties
**参数允许您指定只提取某些元数据字段,避免提取不需要的字段(如title
) 。
如何设置attachment
处理器不取出title
字段
您可以在attachment
处理器的配置中使用properties
参数,明确指定需要提取的字段,并排除不需要的title
字段。
示例:不导出title
PUT /_ingest/pipeline/attachment
{
"description": "提取附件信息,不包括标题",
"processors": [
{
"attachment": {
"field": "content",
"properties": ["content", "content_type", "language", "author", "content_length"],
"ignore_missing": true
}
},
{
"remove": {
"field": "content"
}
}
]
}
解释:
-
properties
:该参数定义了要提取的具体字段。在示例中,properties
被设置为:
content
: 文件实际文本内容content_type
: 文件的 MIME 类型(如application/pdf
)language
: 文件语言author
: 文件的作者content_length
: 文件内容长度(字节数)
通过明确指定这些字段,attachment
处理器只会提取你需要的字段,不会提取title
字段。
其他可能提取的字段:
如果您想进一步控制其他可能的元数据字段,以下是attachment
处理器支持的常见字段列表:
content
: 文件实际文本内容content_type
: 文件类型(如application/pdf
、application/msword
等)language
: 文件的语言(如en
、fr
)。author
: 文档的作者(如果存在)。title
: 文档的标题(如果存在)。date
: 文章创建日期keywords
: 文档中可能存在的关键词。content_length
: 文件内容的字节数
总结:
通过在attachment
处理器中使用properties
参数,您可以精确控制哪些字段会被提取。如果您不需要提取文件的title
,只需要在properties
中修复即可,就像上面的例子那样明确指定所需的其他字段。
3、properties
参数类型
在Elasticsearch的Ingest Attachment Processor中,当你不指定properties
参数时,它默认会提取文件的所有可用元数据属性,如title
(标题)、author
(作者)、content_type
(文件类型)等。这些元数据会存储在生成的attachment
字段中。
来说,取出的元数据存储在不同的字段中,每个字段对应不同的元数据类型,存储的数据类型根据属性的内容取不同。以下是主要元数据属性对应其类型:
1. content(文件内容)
-
類型:
string
-
说明: 提取出文件的实际内容。
-
示例 :
"content": "This is the text extracted from the file..."
2.标题
-
类型:
string
或null
-
说明:提取出的文档标题(如果存在)。在很多
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » Elasticsearch 中管道介绍
发表评论 取消回复