簡體   English   中英

如何在python的Elasticsearch中求和我的json文件的特定值?

[英]How to sum specific values of my json file in elasticsearch in python?

這是我的JSON文件,我想對數字鍵的所有值求和。 如何使用Python做到這一點?

{
    "took": 0,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": 7,
        "max_score": 1.0,
        "hits": [{
            "_index": "test",
            "_type": "json",
            "_id": "5878",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "1548",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "2751",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "8363",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "551",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "2195",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }, {
            "_index": "test",
            "_type": "json",
            "_id": "2990",
            "_score": 1.0,
            "_source": {
                "data_type": "click",
                "number": 1,
                "date": "1397/05/14",
                "host_id": "1231"
            }
        }]
    }
}
import json

data = '{"took": 0, "timed_out": false, "_shards": {"total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": {"total": 7, "max_score": 1.0, "hits": [{"_index": "test", "_type": "json", "_id": "5878", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "1548", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "2751", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "8363", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "551", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "2195", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }, {"_index": "test", "_type": "json", "_id": "2990", "_score": 1.0, "_source": {"data_type": "click", "number": 1, "date": "1397/05/14", "host_id": "1231"} }] } } '
myk = json.loads(data)

count = 0
target = myk['hits']['hits']
for l in target:
    for k in l:
        if k == "_source":
            count += l[k]['number']
print(count)

輸出:

7
>>> 

從json文件加載數據

import json


with open('data.json') as f:
    data = json.load(f)

count = 0
target = data['hits']['hits']
for l in target:
    for k in l:
        if k == "_source":
            count += l[k]['number']
print(count)


7
>>> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM