Поиск значения в ответе json отasticsearch с python - PullRequest
0 голосов
/ 25 октября 2019

Мне нужно получить значение ключа в ответе json от ElasticSearch, но ниже кода ничего не найдено:

for hit in res['hits']['hits']:
    pattern = '"taskDefinitionId": "(.+?)"'
    result = re.findall(pattern, str(hit["_source"]))
    if result:
        print(result)

Это ключ: значение, которое я ищу: "taskDefinitionId ":" PEOPLE_ARE_PLAYING ",

Мне нужно получить" PEOPLE_ARE_PLAYING "внутри результата

Ниже представлен весь json:

{
  "id": "tenant1#2019-06-03T19:03:50.024Z#68wer1-1rer79a-4fr5d-be9-db42cbe",
  "assignedToUser": "user",
  "attachments": [],
  "comments": [],
  "currentStatus": "COMPLETED",
  "slaExpiresAt": "2020-06-02T19:03:50.024Z",
  "history": [
    {
      "newStatus": "CLAIMED",
      "startedAt": "2019-06-03T19:03:50.024Z",
      "event": "TASK_CLAIMED"
    },
    {
      "currentStatus": "READY_TO_COMPLETE",
      "startedAt": "2019-06-03T19:09:51.072Z",
      "diff": [
        {
          "op": "add",
          "path": "/path",
          "value": {
            "address": "av dfasdfsadfhaskd",
            "name": "asd",
            "id": "1"
          }
        }
      ],
      "assignedByUser": "user",
      "event": "TASK_READY_TO_COMPLETE"
    },
    {
      "currentStatus": "COMPLETED",
      "startedAt": "2019-06-03T19:09:51.272Z",
      "assignedByUser": "asfdasdfsd",
      "event": "TASK_COMPLETED"
    }
  ],
  "assignedToGroup": "asdfsdf",
  "circuitId": "6sdf24d1-1s9sa-4f5s-b969-db4sadfc12",
  "taskDefinitionId": "PEOPLE_ARE_PLAYING",
  "finishedAt": "2019-06-03T19:09:51.272Z",
  "createdAt": "2019-06-03T19:03:50.024Z",
  "taskType": "Automatic",
  "taskDefinitionName": "Definition",
  "payload": {
    "datos": {
      "address": "sdfasdfasdfsadfsd",
      "name": "asd",
      "id": "1"
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Наконец-то понял, что я получаю дикт, так что ...

mydict = hit["_source"]
print(mydict["taskDefinitionId"])
0 голосов
/ 25 октября 2019

Если taskDefinitionId - это то, что вы хотите only, тогда вы можете использовать filter_path :

GET <your_index>/_search?filter_path=**.taskDefinitionId

Если вам нужно несколько полей, вы можете сделать

GET <your_index>/_search?filter_path=**.taskDefinitionId,**.currentStatus
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...