Python, ElasticSearch / Kibana Индекс метаданных визуализации 'kibanaSavedObjectMeta' заменяет - PullRequest
0 голосов
/ 08 марта 2019

хорошего дня, я надеюсь, что любой сможет помочь мне найти решение с этим, я был бы очень признателен, я ищу способ заменить или обновить индекс метаданных эластичной визуализации, что я пытаюсь сделать, это Для автоматизации с помощью Python и обновления каждого индекса метаданных визуализации каждый из индексов в отдельности имеет определенное количество индексов, и для каждой визуализации мне нужно изменить это число конкретных индексов, например, существуют визуализации, с которыми я могу столкнуться, которые имеют 4 или 6 индексов, мне нужно заменить или обновить новые индексы автоматически с помощью скрипта, вот мой скрипт

from elasticsearch_dsl import Search
from elasticsearch import Elasticsearch
from common import handle_elasticsearch, finish_line, get_accounts, get_time
import creds
from elasticsearch_dsl import Q
import requests
from elasticsearch import helpers
import os, sys, json, unicodedata
import json



elastic_url = creds.elastic_url
elastic_auth = creds.elastic_http_auth
# def meta(loreal_instagram_contenido_bar):
es = handle_elasticsearch(elastic_url, elastic_auth)


def updater(es, visualization_name):

    query = {
     "query": {
       "bool": {
         "filter": [
           {
             "term": {
               "visualization.title": visualization_name
             }
           }
         ]
       }
     }
    }
    raw_recolectados = es.search(index=".kibana", body=query, size=1)
    data = json.dumps(raw_recolectados)
    data = json.loads(data)


 data = data.replace('indexname','newindexname')
    return data

recolectados = updater(es, "visualization_bar_chart")
print (recolectados)

Я сделал функцию поиска для визуализации, передавая имя визуализации в качестве параметра, если вы видите JSON, есть два «ключа» Индекса. Как я уже говорил выше, я могу встретить более двух индексов, и мне нужно замените все это, следующий ответ - только часть всего ответа JSON На моей консоли

'kibanaSavedObjectMeta':{  
                     'searchSourceJSON':'{\n  "index": "index_name_to_replace",\n  "query": {\n    "query": {\n      "match_all": {}\n    },\n    "language": "lucene"\n  },\n  "filter": [\n    {\n      "meta": {\n        "index": "index_name_to_replace",\n        "negate": false,\n        "disabled": false,\n        "alias": null,\n        "type": "phrase",\n        "key": "social_network.keyword",\n        "value": "ig",\n        "params": {\n          "query": "ig",\n          "type": "phrase"\n        }\n      },\n      "query": {\n        "match": {\n          "social_network.keyword": {\n
        "query": "ig",\n            "type": "phrase"\n          }\n        }\n      },\n      "$state": {\n        "store": "appState"\n
  }\n    }\n  ]\n}'
                  }
               }
            }
         }
      ]
   }
}

но когда я пытался реализовать метод замены, я получил:

file "updater.py", line 37, in updater
    data = data.replace('indexname', 'indexname')
AttributeError: 'dict' object has no attribute 'replace'

Если у кого-то есть Сокращенное решение для этого Типа проблемы / решения, я БУДУ очень очень признателен.

1 Ответ

0 голосов
/ 13 марта 2019

Привет всем, кто сталкивался с этой проблемой. Я только что нашел простое решение для изменения метаданных, но вам нужно вернуться обратно в Kibana (ES)

 text = data['hits']['hits'][0]['_source']['visualization']['kibanaSavedObjectMeta']['searchSourceJSON'].replace('index_of_visualization', 'new_index_name')
data['hits']['hits'][0]['_source']['visualization']['kibanaSavedObjectMeta']['searchSourceJSON'] = text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...