热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IngestAttachmentProcessorPlugin基本用法

2019独角兽企业重金招聘Python工程师标准前言elasticsearch5.x新增一个比较重要的特性IngestNode。之前如果需要对数据进行加工,都是

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

前言

elasticsearch5.x 新增一个比较重要的特性 IngestNode。
之前如果需要对数据进行加工,都是在索引之前进行处理,比如logstash可以对日志进行结构化和转换,现在直接在es就可以处理了。
目前es提供了一些常用的诸如convert、grok之类的处理器,在使用的时候,先定义一个pipeline管道,里面设置文档的加工逻辑,在建索引的时候指定pipeline名称,那么这个索引就会按照预先定义好的pipeline来处理了。

Ingest Attachment Processor Plugin

处理文档附件,替换之前的 mapper attachment plugin。
默认存储附件内容必须base64编码的数据,不想base64转换,可以使用CBOR(没有试验)
官网说明:

The source field must be a base64 encoded binary.
If you do not want to incur the overhead of converting back and forth between base64,
you can use the CBOR format instead of JSON and specify the field as a bytes array instead of a string representation.
The processor will skip the base64 decoding then.
安装

./bin/elasticsearch-plugin install ingest-attachment
卸载

./bin/elasticsearch-plugin remove ingest-attachment
用管道处理单个附件示例(Using the Attachment Processor in a Pipeline)

1.创建管道single_attachment

PUT _ingest/pipeline/single_attachment
{"description" : "Extract single attachment information","processors" : [{"attachment" : {"field": "data","indexed_chars" : -1,"ignore_missing" : true}}]
}

2.创建index

PUT /index1
{"mappings" : {"type1" : {"properties" : {"id": {"type": "keyword"},"filename": {"type": "text","analyzer": "english"},"data":{"type": "text","analyzer": "english"}}}}
}

3.索引数据

PUT index1/type1/1?pipeline=single_attachment&refresh=true&pretty=1
{"id": "1","filename": "1.txt","data" : "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="
}

PUT index1/type1/2?pipeline=single_attachment&refresh=true&pretty=1
{"id": "2","subject": "2.txt","data": "dGVzdGluZyBteSBmaXJzdCBlbmNvZGVkIHRleHQ="
}

4.查看结果

GET index1/type1/1
GET index1/type1/2

POST index1/type1/_search?pretty=true
{"query": {"match": {"attachment.content_type": "text plain"}}
}

POST index1/type1/_search?pretty=true
{"query": {"match": {"attachment.content": "testing"}},"highlight": {"fields": {"attachment.content": {}}}
}返回结果"hits": [{"_index": "index1","_type": "type1","_id": "2","_score": 0.2824934,"_source": {"data": "dGVzdGluZyBteSBmaXJzdCBlbmNvZGVkIHRleHQ=","attachment": {"content_type": "text/plain; charset=ISO-8859-1","language": "et","content": "testing my first encoded text","content_length": 30},"subject": "2.txt","id": "2"},"highlight": {"attachment.content": ["testing my first encoded text"]}}
]
用管道处理多个附件示例(Using the Attachment Processor with arrays)、

1.创建管道multi_attachment

PUT _ingest/pipeline/multi_attachment
{"description" : "Extract attachment information from arrays","processors" : [{"foreach": {"field": "attachments","processor": {"attachment": {"target_field": "_ingest._value.attachment","field": "_ingest._value.data","indexed_chars" : -1,"ignore_missing" : true}}}}]
}

2.创建index

PUT /index2
{"mappings" : {"type2" : {"properties" : {"id": { "type": "keyword"},"subject": { "type": "text","analyzer": "ik_max_word"},"attachments": {"properties":{"filename" : {"type": "text","analyzer": "english"},"data":{"type": "text","analyzer": "english"}}}}}}
}

3.索引数据

PUT index2/type2/1?pipeline=attachment&refresh=true&pretty=1
{"id": "1","subject": "Elasticsearch: The Definitive Guide007","attachments" : [{"filename" : "a.txt","data" : "e1xydGYxXGFuc2kNCkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0DQpccGFyIH0="},{"filename" : "b.txt","data" : "dGVzdGluZyBteSBmaXJzdCBlbmNvZGVkIHRleHQ="}]
}

PUT index2/type2/2?pipeline=attachment&refresh=true&pretty=1
{"id": "2","subject": "Using the Attachment Processor with arrays","attachments" : [{"filename" : "test1.txt","data" : "dGhpcyBpcwpqdXN0IHNvbWUgdGV4dAo="},{"filename" : "test2.txt","data" : "VGhpcyBpcyBhIHRlc3QK"}]
}

4.查看结果

POST index2/type2/_search?pretty=true
{"query": {"match": {"attachments.attachment.content": "test"}},"highlight": {"fields": {"attachments.attachment.content": {}}}
}
返回结果
"hits": [{"_index": "index2","_type": "type2","_id": "2","_score": 0.27233246,"_source": {"attachments": [{"filename": "test1.txt","data": "dGhpcyBpcwpqdXN0IHNvbWUgdGV4dAo=","attachment": {"content_type": "text/plain; charset=ISO-8859-1","language": "en","content": "this is just some text","content_length": 24}},{"filename": "test2.txt","data": "VGhpcyBpcyBhIHRlc3QK","attachment": {"content_type": "text/plain; charset=ISO-8859-1","language": "en","content": "This is a test","content_length": 16}}],"id": "2","subject": "Using the Attachment Processor with arrays"},"highlight": {"attachments.attachment.content": ["This is a test"]}}
]


转:https://my.oschina.net/xhx6616/blog/1528456



推荐阅读
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • Python使用Pillow包生成验证码图片的方法
    本文介绍了使用Python中的Pillow包生成验证码图片的方法。通过随机生成数字和符号,并添加干扰象素,生成一幅验证码图片。需要配置好Python环境,并安装Pillow库。代码实现包括导入Pillow包和随机模块,定义随机生成字母、数字和字体颜色的函数。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 本文介绍了在Windows系统下安装Python、setuptools、pip和virtualenv的步骤,以及安装过程中需要注意的事项。详细介绍了Python2.7.4和Python3.3.2的安装路径,以及如何使用easy_install安装setuptools。同时提醒用户在安装完setuptools后,需要继续安装pip,并注意不要将Python的目录添加到系统的环境变量中。最后,还介绍了通过下载ez_setup.py来安装setuptools的方法。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 本文介绍了协程的概念和意义,以及使用greenlet、yield、asyncio、async/await等技术实现协程编程的方法。同时还介绍了事件循环的作用和使用方法,以及如何使用await关键字和Task对象来实现异步编程。最后还提供了一些快速上手的示例代码。 ... [详细]
author-avatar
jinyan胡_435
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有