我试图通过 pyton 在 ELasticsearch 中进行查询。我想从现在开始获得过去一小时内的所有值。为此,我写了这个脚本:
import time
from elasticsearch import Elasticsearch
from datetime import datetime, timedelta
es = Elasticsearch()
index= "standalone"
filename = "2017-12-22V2.csv"
Timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
one_hour_from_now = datetime.now() - timedelta(hours=1)
one_hour_from_now = one_hour_from_now.strftime('%Y-%m-%d %H:%M:%S')
query = {"query":{"bool":{"must":{"range":{"Time":{"gt":one_hour_from_now,"lt":Timestamp}}},"must_not":[],"should":[]}},"from":0,"size":10,"sort":[],"aggs":{}}
ret = es.search(index, body=query)
print("ret", ret)
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我收到此错误:
es.search exception: TransportError(400, 'search_phase_execution_exception', 'failed to parse date field [2018-02-12 15:50:26] with format [strict_date_optional_time||epoch_millis]')
Run Code Online (Sandbox Code Playgroud)
有人能帮助我吗
谢谢
我在python中使用此代码来更新elasticsearch中的文档.它运行正常,但很难将它用于数百万个文档,因为我必须id每次初始化值以更新每个文档.
from elasticsearch import Elasticsearch, exceptions
elasticsearch = Elasticsearch()
elasticsearch.update(index='testindex', doc_type='AAA', id='AVpwMmhnpIpyZkmdMQkT',
body={
'doc':{'Device': 'updated'}
}
)
Run Code Online (Sandbox Code Playgroud)
我在Elasticsearch文档中读到它尚未包含但是:https: //www.elastic.co/guide/en/elasticsearch/reference/current/_updating_documents.html
请注意,在撰写本文时,一次只能对单个文档执行更新.将来,Elasticsearch可以提供在给定查询条件(如SQL UPDATE-WHERE语句)的情况下更新多个文档的功能.
我想将数据值存储在我的 dict{} 字典中,但出现错误。
mydict= {}
for entity in entities:
if entity.entity_id.startswith('sensor'):
list = remote.get_state(api, entity.entity_id)
data = {list.attributes['friendly_name'] : list.state}
for key, val in data.items():
mydict+= {key:val}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误。
mydict+= {key:val}
TypeError: unsupported operand type(s) for +=: 'dict' and 'dict'
Run Code Online (Sandbox Code Playgroud)