错误而使用python es.update在ElasticSearch更新文件()(Error wh

2019-11-03 20:27发布

我试图更新使用Elasticsearch默认的Python接口,使用下面的命令elasticsearch文档。

res = es.update(index='its', doc_type='vents', id=txid, body={"doc":{"f_vent" :{"b_vent":rx_buffer}}})

更新后的文档如下所示。

{
  "_index": "its",
  "_type": "vents",
  "_id": "4752956038",
  "_score": null,
  "_source": {
    "ResponseTime": 0,
    "Session": "None",
    "Severity": "warn",
    "StatusCode": 0,
    "Subject": "Reporting Page Load Time",
    "Time": "Fri Jun 05 2015 12:23:46 GMT+1200 (NZST)",
    "Timestamp": "1433463826535",
    "TransactionId": "4752956038",
    "msgType": "0",
    "tid": "1",
    "f_vent": {
      "b_vent": "{\"ActiveTransactions\": 6, \"AppName\": \"undefined\", \"TransactionId\": \"4752956038\",  \"UserInfo\": \"Unknown\"}"
    }
  },
  "fields": {
    "_timestamp": 1433818222372
  },
  "sort": [
    1433818222372
  ]
}

我复制这从Kibana4通过扩大document.The“事务ID”发现里面标签b_vent具有作为接入f_vent.b_vent.TransactionId 。 我怀疑这是把一些restricions对我绘制的事务ID图。 我试着使用

res = es.update(index='its', doc_type='vents', id=txid, body={"doc":{"b_vent":rx_buffer}})

所以,我可以用b_vent.TransactionId但调用es.update当我收到以下错误()。

 raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
RequestError: TransportError(400, u'MapperParsingException[object mapping for [events] tried to parse field [be_event] as object, but got EOF, has a concrete value been provided to it?]')

我究竟做错了什么? 我怎样才能解决这个问题呢?

这是b_vent的几乎满strucuture。

"{
    \"ActiveTr\": 6,
    \"ErrorM\": \"None\",
    \"HError\": \"false\",
    \"HMPct\": 62,
    \"NHMPct\": 57,
    \"Parameter\": \"1433195852706\",
    \"ParameterD\": \"false\",
    \"ProcessCPU\": 1,
    \"Proxies\": \"None\",
    \"RStatusCode\": \"34500\",
    \"Severity\": \"info\",
    \"ThrWtTi\": -1,
    \"ThrWai\": 16,
    \"Timestamp\": \"TueJun0209: 58: 16NZST2015\",
    \"TxId\": \"316029416\",
    \"UserInfo\": \"Unknown\"
}"

它似乎有一些奇怪的转义序列。 我不知道为什么他们在那里。 但json.loads()似乎来解析文件。 我不知道如何解决这个问题?

文章来源: Error while updating a document in ElasticSearch using python es.update()