elasticsearch,kibana,Python,elasticsearch,Kibana" /> elasticsearch,kibana,Python,elasticsearch,Kibana" />

Python 如何在Elasticsearch中将坐标保存到索引并在Kibana中使用

Python 如何在Elasticsearch中将坐标保存到索引并在Kibana中使用,python,elasticsearch,kibana,Python,elasticsearch,Kibana,我有这个数据框: Title Authors Institutions 0 a ['name_1', 'name_2'] [['Osaka Univ.', '34.82,135.52']] 1 b ['name_1'] [['Tohoku Univ.', '38.25,140.87'], ['Kobe Univ.', '34.72,135.23']] 2 c

我有这个数据框:

    Title   Authors               Institutions          
0   a      ['name_1', 'name_2']   [['Osaka Univ.', '34.82,135.52']] 
1   b      ['name_1']             [['Tohoku Univ.', '38.25,140.87'], ['Kobe Univ.', '34.72,135.23']]
2   c         …         
3   d         …             
4   e         …
我将其转换为JSON文件:

df_output.to_json('output.json', orient='records', lines=True)
获取:

{"Title": "a","Authors":["name_1", "name_2"],"Institutions":[["Osaka 
                                              University", "34.82,135.52"]]}
{"Title": "b","Authors":["name_1"],"Institutions":[['Tohoku Univ.', "38.25, 
                                   140.87"], ['Kobe Univ.', "34.72, 135.23"]]}              
...
因此,将这个JSON索引到Elasticsearch中,然后按标题进行搜索

import requests
import json
from elasticsearch import Elasticsearch

url= 'https://"""my_session_in_amazon""".amazonaws.com'
es = Elasticsearch([url])

filename = 'C:/xx/xxx/output.json'
data = [json.loads(line) for line in open(filename, 'r')]
helpers.bulk(es, data, index='title', doc_type='HEP_books')

但是在Kibana,我不知道如何访问机构坐标来绘制机构地图。从您粘贴的示例数据框中,看起来“institutions”是一个数组,它包含机构名称和机构坐标。这将使得不可能在地图上绘制这些坐标,因为弹性搜索动态映射会考虑“机构”为字符串/关键字,而不是GeoZioPo/数。 您需要的第一步是将坐标提取到一个专用字段,例如Institutions.geo。您可以使用以提取它并修改文档

其次,您需要在Elasticsearch模板中指定Institutions.geo(例如)为的索引,并为此数据创建新索引

第三,数据清理干净后,在一个单独的专用字段中,并具有正确的映射,您需要刷新kibana中的字段列表,以便kibana识别新的Institution.geo字段


第四,在kibana中刷新映射后,您可以继续并基于此数据创建一个新的映射可视化。

您可以将id留空,ES将为您创建一个id。主体是否正常?我可以只使用一个json文件而不是每本书一个吗?您的示例json输出的键是Tile,而不是Title。非常感谢。但我有一个问题:在数据框中,每个标题行可以有多个机构。如何重新组织数据框以将这些坐标分开?如果您计划每个标题有多个机构,那么每个条目都有一个位置数组。尽管Elasticsearch支持这一点,但Kibana不能很好地处理列表/数组。考虑把数据分解成更小的文档,每个文档都有一个地理位置——只需“平移”数据。