首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >elasticsearch python散装api (elasticsearch-py)

elasticsearch python散装api (elasticsearch-py)
EN

Stack Overflow用户
提问于 2014-10-02 03:35:50
回答 2查看 11.6K关注 0票数 6

我对py-elasticsearch散包@Diolor解决方案工作https://stackoverflow.com/questions/20288770/how-to-use-bulk-api-to-store-the-keywords-in-es-by-using-python感到困惑,但我想使用普通的es.bulk()

我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from elasticsearch import Elasticsearch
es = Elasticsearch()
doc = '''\n {"host":"logsqa","path":"/logs","message":"test test","@timestamp":"2014-10-02T10:11:25.980256","tags":["multiline","mydate_0.005"]} \n'''
result = es.bulk(index="logstash-test", doc_type="test", body=doc)

错误是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 No handlers could be found for logger "elasticsearch"
Traceback (most recent call last):
  File "./log-parser-perf.py", line 55, in <module>
    insertToES()
  File "./log-parser-perf.py", line 46, in insertToES
    res = es.bulk(index="logstash-test", doc_type="test", body=doc)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/client/utils.py", line 70, in _wrapped
    return func(*args, params=params, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/client/__init__.py", line 570, in bulk
    params=params, body=self._bulk_body(body))
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/transport.py", line 274, in perform_request
    status, headers, data = connection.perform_request(method, url, params, body, ignore=ignore)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/connection/http_urllib3.py", line 57, in perform_request
    self._raise_error(response.status, raw_data)
  File "/usr/local/lib/python2.7/dist-packages/elasticsearch-1.0.0-py2.7.egg/elasticsearch/connection/base.py", line 83, in _raise_error
    raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.TransportError: TransportError(500, u'ActionRequestValidationException[Validation Failed: 1: no requests added;]')

生成的用于POST调用的url是

/logstash-测试/测试/散装

邮政机构是:

{“主机”:“logsqa”,“路径”:“/logs”,“消息”:“测试”,“@时间戳”:“2014-10-02T10:11:25.980256”,“标记”:“multiline”,"mydate_0.005"}

所以我用手做了卷发:这个卷发不起作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> curl -XPUT http://localhost:9200/logstash-test/test2/_bulk -d
> '{"host":"logsqa","path":"/logs","message":"test
> test","@timestamp":"2014-10-02T10:11:25.980256","tags":["multiline","mydate_0.005"]}
> '
>
> {"error":"ActionRequestValidationException[Validation Failed: 1: no requests added;]","status":500}

因此,错误在一定程度上是可以的,但我确实预期elasticsearch.bulk()将正确地管理输入的args。

pythonf函数是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bulk(*args, **kwargs)
    :arg body: The operation definition and data (action-data pairs), as
        either a newline separated string, or a sequence of dicts to
        serialize (one per row).
    :arg index: Default index for items which don't provide one
    :arg doc_type: Default document type for items which don't provide one
        :arg consistency: Explicit write consistency setting for the operation
    :arg refresh: Refresh the index after performing the operation
    :arg routing: Specific routing value
    :arg replication: Explicitly set the replication type (default: sync)
    :arg timeout: Explicit operation timeout
EN

回答 2

Stack Overflow用户

发布于 2016-05-05 12:26:08

如果目前有人试图使用大容量api并想知道格式应该是什么,下面是对我有用的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
doc = [
    {
        'index':{
            '_index': index_name,
            '_id' : <some_id>,
            '_type':<doc_type>
        }
    },
    {
        'field_1': <value>,
        'field_2': <value>
    }
]

docs_as_string = json.dumps(doc[0]) + '\n' + json.dumps(doc[1]) + '\n'
client.bulk(body=docs_as_string)
票数 7
EN

Stack Overflow用户

发布于 2014-10-02 21:41:37

@HonzaKral on github

https://github.com/elasticsearch/elasticsearch-py/issues/135

嗨,先生,

大容量api (和所有其他api一样)非常接近elasticsearch本身的大容量api格式,因此主体必须是:

doc =‘’{“索引”:{}\n{“主机”:“logsqa”、“路径”:“/logs”、“消息”:“测试测试”、“@时间戳”:“2014-10-02T10:11:25.980256”、“标记”:“multiline”、“mydate_0.005”}}‘使其工作。或者,它可以是这两条数据的列表。

这是一种复杂而笨拙的格式,因此我试图在elasticsearch.helpers.bulk (0)中创建一种更方便的方法来处理bulk。它只接受文档迭代器,将从其中提取任何可选元数据(如_id、_type等),并为您构造(并执行)批量请求。有关已接受格式的更多信息,请参见上面的docsforstreaming_bulk,它是以迭代方式处理流的助手(从用户的角度开始,在后台分批处理)。

希望这能有所帮助。

0- http://elasticsearch-py.readthedocs.org/en/master/helpers.html#elasticsearch.helpers.bulk

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26159949

复制
相关文章
Elasticsearch-py 2.3版本的API翻译文档(一)
|hosts|我们应该连接的节点列表。节点应该是一个字典({“host”:“localhost”,“port”:9200}),整个字典将作为kwargs传递给Connection类,或者是一个主机:port格式的字符串, 被自动翻译成字典。如果没有给出值,将使用Urllib3HttpConnection类的默认值。|
wangchonglie
2019/05/07
5.8K0
Elasticsearch-py 2.3版本的API翻译文档(一)
Python Elasticsearch api
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。下面介绍了利用Python API接口进行数据查询,方便其他系统的调用。
py3study
2020/02/21
4.5K0
Python Elasticsearch api
Python Elasticsearch API操作ES集群
关键是DSL语法的编写涉及查询与聚合可以通过kibana的visualize或者devtool先测试出正确语法,然后结合python对列表、字典、除法、字符串等操作即可。下面汇总下各个算法:
三杯水Plus
2018/11/14
1.7K0
Elasticsearch API汇总
描述:health是一个简洁的,一行表示了来自/_cluster/health的相同的信息。
HLee
2020/12/28
1.2K0
Elasticsearch API汇总
Elasticsearch:REST API
在 Elasticsearch 中,所以的数据都是以 JSON 的格式来进行表述的。这个和其它的有些数据库,比如 Solr,它支持更多格式的数据,比如 xml, csv 等。
HLee
2021/01/26
1.3K0
Elasticsearch:REST API
Elasticsearch rollover API
rollover API 使你可以根据索引大小,文档数或使用期限自动过渡到新索引。 当 rollover 触发后,将创建新索引,写别名(write alias) 将更新为指向新索引,所有后续更新都将写入新索引。
腾讯云大数据
2020/09/29
2.4K0
Elasticsearch rollover API
SAP 散装物料讲解
散装物料(Bulk Material),也叫做间接物料(Indirect Material),是一般企业在库存管理时常见的一种物料形式。散装物料专指那些价值小、消耗量大、消耗率高的物料件。这些物料组件同样服务于企业的生产活动,并且在企业的工作中心中被生产活动直接消耗(如螺丝钉、润滑油、包装封条等等)。
用户5495712
2019/11/18
2.5K0
换协议、改代码,Elastic要逼开发者二选一?
整理 | 褚杏娟、核子可乐 没有企业希望他们从自己创造的产品中获得的收益比依赖该产品的其他企业要少几个数量级。 为应对云服务提供商,Elastic 近日对其 Elasticsearch 数据库的官方 Python 客户端(Elasticsearch-py)做出了修改,使其无法与各分叉版本相兼容,之后又粗暴地关闭了 GitHub 上的话题评论。这一行为引起了广大开发者激烈讨论。 剑指云厂商 Elasticsearch 是一款数据库管理器与分析引擎,在行业内被广泛使用。官方客户端在 Java、.NET(C#)、
深度学习与Python
2023/04/01
6250
换协议、改代码,Elastic要逼开发者二选一?
elasticsearch-py 无法解析复杂的自定义类的解决方案
今天在测试插入操作的时候,定义了一个拥有嵌套类的自定义类型 class A: pass class B: pass b = B() b.a = A() 大致如以上代码,当然是有字段的 直接调用 es.index(index=index, doc_type=doc_type, body=b) 会报出 elasticsearch.exceptions.SerializationError Unable to serialize B 的错误 看到以上错误后,猜测 elasticsearch-p
Venyo
2018/03/15
1.7K0
战争升级!Elasticsearch 从客户端向 AWS 开了一炮!
Elastic 开发者上个月向 elasticsearch-py 提交了一个 PR(已被合并),旨在修改 Elasticsearch Python 客户端连接到 Elasticsearch 的验证逻辑。根据 PR 的描述,修改后的客户端将无法连接到由 AWS 维护的 Elasticsearch 分支 OpenSearch,以及一些版本较低的 Elasticsearch 开源发行版,或是托管到 AWS Elasticsearch Service 的 Elasticsearch。 AWS 对此表示:“Ela
程序猿DD
2023/04/04
1.3K1
战争升级!Elasticsearch 从客户端向 AWS 开了一炮!
elasticsearch文档Get API
前面两篇文章和读者讨论了Elasticsearch中文档的索引API,本文来看Get API。
江南一点雨
2018/12/21
1.3K0
elasticsearch文档Get API
Elasticsearch API简单使用
笔者喜欢做一些小工具,给PM或者组内同学使用,不仅仅可以提高工作效率,而且也可以学一些前端方面的知识。之前使用Elasticsearch API做过管理后台的小工具,一直没有总结,最近给PM哥们又做了一个小工具,而且也使用到了Elasticsearch API,正好做个简单分享。
LiosWong
2018/12/10
7910
Elasticsearch API简单使用
Elasticsearch使用:Alias API
你可能想知道别名究竟是什么,以及 Elasticsearch 在创建别名时涉及何种开销。 别名将其生命置于集群状态内,由主节点(master node) 管理; 这意味着如果你有一个名为 idaho 的别名指向一个名为 potato 的索引,那么开销就是集群状态映射中的一个额外键,它将名称 idaho 映射到具体的索引字符串。 这意味着与其他指数相比,别名的重量要轻得多; 可以维护数千个而不会对集群产生负面影响。
HLee
2021/01/14
9630
Elasticsearch使用:Alias API
Elasticsearch使用:Vector API
官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-score-query.html#vector-functions
HLee
2021/01/15
1.8K0
Elasticsearch使用:Vector API
Elasticsearch使用:Aggregation API
聚合框架有助于基于搜索查询提供聚合数据。它基于称为聚合的简单构建块,可以组合以构建复杂的数据摘要。
HLee
2021/01/25
1.7K0
Elasticsearch使用:Aggregation API
Elasticsearch简单API调用
#集群健康状态: [root@localhost elasticsearch-5.4.1]# curl -XGET '128.0.0.101:9200/_cat/health?v&pretty' ep
零月
2018/04/25
1.3K0
Elasticsearch简单API调用
Elasticsearch使用:Routing API
Elasticsearch分布式设计的基本思想是Elasticsearch集群由多个服务器节点组成,集群中的一个索引分为多个分片,每个分片可以分配在不同的节点上。其中每个分片都是一个单独的功能完成的Lucene实例,可以独立地进行写入和查询服务,ES中存储的数据分布在集群分片的一个或多个上,其结构简单描述为下图。
HLee
2021/01/29
1.4K0
Elasticsearch使用:Routing API
Elasticsearch(二)——Rest API
RESTful 接口 URL 的格式是: http://cluster的地址: 9200/<index>I<type>I [<id>] 其中,index, type 是必须提供的( index 可以理解为数据库;type 理解为数据表); id 是可选的(相当于数据库表中记 录的主键是唯一的。如果不提供, Elasticsearch 会向动生成。增 、删、改,查分别对应 HTTP 请求的 PUT 、DELETE、POST、GET方法。
羊羽shine
2019/05/29
1.1K0
Elasticsearch探索: Reindex API
5.X版本后新增Reindex。Reindex可以直接在Elasticsearch集群里面对数据进行重建,如果你的mapping因为修改而需要重建,又或者索引设置修改需要重建的时候,借助Reindex可以很方便的异步进行重建,并且支持跨集群间的数据迁移。
HLee
2021/01/14
2.3K0
Elasticsearch探索: Reindex API
【Elasticsearch】Rest风格API
Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
陶然同学
2023/02/24
1K0
【Elasticsearch】Rest风格API

相似问题

Elasticsearch-py使用脚本更新API

27

Elasticsearch 5.1散装动作

12

嘲弄elasticsearch-py调用

10

elasticsearch-py连接池

15

Python脚本中Elasticsearch-py lib的不同版本

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文