【问题标题】:Python, ElasticSearch/Kibana 'kibanaSavedObjectMeta' Visualization Metadata Index replacePython、ElasticSearch/Kibana 'kibanaSavedObjectMeta' 可视化元数据索引替换
【发布时间】:2019-07-30 16:47:21
【问题描述】:

祝你有美好的一天,我希望有人能帮助我找到解决方案,我将不胜感激,我正在寻找一种方法来替换或更新弹性可视化元数据索引,我想要完成的是使用 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'

如果有人有此类问题/解决方案的捷径解决方案,我将不胜感激。

【问题讨论】:

    标签: python elasticsearch automation scripting kibana


    【解决方案1】:

    遇到这个问题的大家好,我刚刚找到了一个简单的修改元数据的解决方案,但是你需要摄取回 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-07
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多