用Python解析Elasticsearch的json输出。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python解析Elasticsearch的json输出。相关的知识,希望对你有一定的参考价值。

我正在解析来自Elasticsearch索引的数据,并收到了如下的json格式的数据。

{
    "_shards": {
        "failed": 0,
        "skipped": 0,
        "successful": 5,
        "total": 5
    },
    "hits": {
        "hits": [
            {
                "_id": "wAv4u2cB9qH5eo0Slo9O",
                "_index": "homesecmum",
                "_score": 1.0870113,
                "_source": {
                    "image": "0000000028037c08_1544283640.314629.jpg"
                },
                "_type": "dataRecord"
            },
            {
                "_id": "wwv4u2cB9qH5eo0SmY8e",
                "_index": "homesecmum",
                "_score": 1.0870113,
                "_source": {
                    "image": "0000000028037c08_1544283642.963721.jpg"
                },
                "_type": "dataRecord"
            },
            {
                "_id": "wgv4u2cB9qH5eo0SmI8Z",
                "_index": "homesecmum",
                "_score": 1.074108,
                "_source": {
                    "image": "0000000028037c08_1544283640.629583.jpg"
                },
                "_type": "dataRecord"
            }
        ],
        "max_score": 1.0870113,
        "total": 5
    },
    "timed_out": false,
    "took": 11
}

我试图从json数据中只提取图片参数,并将其存储为一个数组。 我尝试了以下方法。

for result in res['hits']['hits']:
    post = result['_source']['image']
    print(post)

和这个

respars = json.loads(res['hits']['hits'][0]['_source'])['image']
print(json.dumps(respars, indent=4, sort_keys = True))

这两个方法都出现了错误。

TypeError: byte indices must be integers or slices, not str

我相信前面也有类似的问题,但我无法通过这个错误。我怎么才能解决这个问题呢?

答案

与其经历手动处理响应的痛苦,你可以使用 Elasticsearch-DSL 来自PyPi的包。

另一答案

要获得所有的 形象_source 条目为列表,您可以使用 名单理解:

image_list = [source['_source']['image'] for source in res['hits']['hits']]

产出:

['0000000028037c08_1544283640.314629.jpg',
 '0000000028037c08_1544283642.963721.jpg',
 '0000000028037c08_1544283640.629583.jpg']

以上是关于用Python解析Elasticsearch的json输出。的主要内容,如果未能解决你的问题,请参考以下文章

第三百七十一节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)用Django实现我的搜索以及热门搜索

python解析ES数据到表

python 用啥模块处理网页的javascript

怎么用python解析html

Java操作elasticSearch复杂查询以及解析数据

干货基于 Mahout 和 Elasticsearch 推荐引擎组件解析