Как сохранить координаты для индексации в Elasticsearch и использовать их в Kibana - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть этот DataFrame:

    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')

Но тогда в Кибане я не знаю, как получить доступ к координатам учреждений, чтобы построить карту учреждений

1 Ответ

0 голосов
/ 24 февраля 2019

Из образца фрейма данных, который вы вставили, похоже, что «Учреждения» - это массив, который содержит как название учреждения, так и его координаты.это сделает невозможным построение этих координат на карте, так как динамическое отображениеasticsearch будет рассматривать «Учреждения» как строку / ключевое слово, а не как гео-точку / число.

Первый шаг, который вам нужен, - это извлечькоординаты к специальному полю - например, Institutions.geo.Вы можете использовать ingest pipelines , чтобы извлечь его и изменить документы.

Во-вторых, вам нужно указать в шаблоне Elasticsearch для тех индексов, что Institutions.geo (например) является geo_point , и создать новый индекс для этих данных.

В-третьих, после того, как данные очищены, в отдельном выделенном поле и имеют правильное отображение, вам нужно обновить список полей в кибане, чтобы кибана могла распознать новое поле Institution.geo.

ЧетвертыйПосле обновления отображений в кибане вы можете продолжить создание новой визуализации карты на основе этих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...