Запросить 2 индекса в Elasticsearch? - PullRequest
0 голосов
/ 25 февраля 2019

Мне интересно, можно ли запросить 2 индикатора в Elasticsearch и отобразить результаты, смешанные вместе в 1 таблице.Например:

Индексы:

food-american-burger
food-italian-pizza
food-japanese-ramen
food-mexican-burritos

#query here for burger and pizza, and display the results in a csv file
#i.e. if there was a timestamp field, display results starting from the most recent

Я знаю, что вы можете сделать запрос для food- *, но он даст 2 индекса, которые мне не нужны.

Я искал многозадачный модуль для Elasticsearch DSL, но документация показывает только экземпляр 1 запроса индекса:

ms = MultiSearch(index='blogs')

ms = ms.add(Search().filter('term', tags='python'))
ms = ms.add(Search().filter('term', tags='elasticsearch'))

Часть 1:

Возможно ли использовать это для нескольких индексов?В конечном счете, я хотел бы запросить x количество признаков и отобразить все данные в одном удобном для восприятия формате (csv, json и т. Д.), Но я не уверен, как выполнить один запрос только для индексов, которые яхочу.

В настоящее время у меня есть возможность выполнять запросы и записывать данные, но каждый файл данных будет состоять только из того индекса, к которому я запросил.Я хотел бы отобразить все данные в одном файле.

Часть 2:

Данные хранятся в словаре, а затем я записываю их в CSV.В настоящее время он заказывается по метке времени.Код:

sorted_rows = sorted(rows,key=lambda x: x['@timestamp'], reverse=True)
for row in sorted_rows:
          writer.writerow(row.values())

При записи в CSV поле отметки времени не является первым столбцом.Я храню поля в словаре и обновляю этот словарь для каждого нажатия Elasticsearch, а затем записываю его в CSV.Есть ли способ переместить поле отметки времени в первый столбец?

Спасибо!

1 Ответ

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

В соответствии с Elasticsearch Docs вы можете запросить один индекс (например, food-american-burger), несколько разделенных запятыми указателей (например, food-american-burger,food-italian-pizza) или все указатели, используя ключевое слово _all.

Я лично не использовал клиент Python, но это соглашение API и должно применяться к любому из официальных клиентов Elasticsearch.


Для части 2 вам, вероятно, следует отправитьотдельный вопрос, чтобы держать вещи в одной теме для каждого вопроса, поскольку эти две темы не связаны напрямую.

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