【发布时间】: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