一个针对Python的自以为是的Elasticsearch批量索引器。

pyesbulk的Python项目详细描述


批量生产

Pythonelasticsearch客户机put_template()streaming_bulk()和{}帮助器api的简单包装器,具有强大的错误处理能力。在

此库旨在跨各种版本的 elasticsearch Python模块和elasticsearch服务器的 动态标识用于创建Elasticsearch对象的模块。在

这些名称可用于导入:

  • put_template

    使用指定的将文档模板推送到服务器 Elasticsearch对象。此模块将确定 已存在同名和版本的模板文档 存在,如果不存在,则放入新模板。在

    参数:

    • es:一个Elasticsearch类的实例。在
    • name:模板的名称。在
    • mapping_name:模板中使用的映射的名称。在
    • body:模板的有效负载主体。在

    返回:一个元组(开始时间、结束时间、重试计数、错误键)

  • streaming_bulk

    将多个源文档推送到Elasticsearch索引, 使用正确的错误处理和重试逻辑。在

    参数:

    • “es”:一个Elasticsearch类的实例。在
    • actions:Elasticsearch动作记录的iterable(直接传递给Elasticsearch)。在
    • errorsfp:记录http400错误的文件指针。在
    • logger:可以记录消息的Logger对象。在

    返回:一个元组(开始时间、结束时间、成功索引、复制、失败、重试计数)。在

  • parallel_bulk

    将多个源文档推送到Elasticsearch索引 在多个线程之间并行,使用适当的错误 处理并重试逻辑。在

    参数:

    • es:一个Elasticsearch类的实例。在
    • actions:Elasticsearch动作记录的iterable (直接传递给Elasticsearch)
    • errorsfp:记录http400错误的文件指针。在
    • logger:可以记录消息的Logger对象。在
    • chunk_size=10000000:一个块中发送到Elasticsearch的文档数。在
    • max_chunk_bytes=104857600:请求的最大大小。在
    • thread_count=8:要使用的线程池的大小。在
    • queue_size=4:控制器和处理线程之间的任务队列的大小。在

    返回:一个元组(开始时间、结束时间、成功索引、复制、失败、重试计数)

  • TemplateException

    当 模板文档不包含所需的版本 元数据({"_meta": {"version": <integer>}});或者,当 一个调用中包含多个模板文档 如果这些文档的版本是 不完全相同。在

单元测试支持

pyesbulk包尝试动态确定 Python模块用于生成传入Elasticsearch方法的Elasticsearch对象。为了正确解析错误处理和重试逻辑的异常类,这是必需的。在

然而,单元测试通常使用模拟对象 不会有“真正的”Python包结构,而且 模块识别算法可能失败。当这种情况发生时, pyesbulk将尝试导入elasticsearch。如果不正确(例如,如果使用elasticsearch1 或者elasticsearch5),您可以覆盖自动搜索 通过在上包含force_elastic_search_module属性 模拟的Elasticsearch对象。在

例如

class MockElasticsearch:
    def __init__(self):
        self.force_elastic_search_module = "elasticsearch5"

或者

^{pr2}$

另请参见https://pypi.org/project/pyesbulk/。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?