Клиентом может считаться любое приложение, взаимодействующее с Elasticsearch для индексирования, обновления или поиска данных, а также для мониторинга и обслуживания Elasticsearch с помощью различных API.
Очень важно правильно настроить клиентов, чтобы обеспечить оптимальное использование ресурсов Elasticsearch.
Примеры
Существует множество клиентских приложений с открытым исходным кодом для мониторинга, оповещения и визуализации, таких как ElasticHQ, Elastalerts, Grafana и др. Кроме того, существуют такие клиентские приложения Elastic, как filebeat, metricbeat, logstash и kibana, которые были разработаны для интеграции с Elasticsearch.
Однако часто возникает необходимость создания собственного клиентского приложения для взаимодействия с Elasticsearch. Ниже приведен простой пример python-клиента (взято из документации по клиенту):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | from datetime import datetime from elasticsearch import Elasticsearch es = Elasticsearch() doc = { 'author': 'Testing', 'text': 'Elasticsearch: cool. bonsai cool.', 'timestamp': datetime.now(), } res = es.index(index="test-index", doc_type='tweet', id=1, body=doc) print(res['result']) res = es.get(index="test-index", doc_type='tweet', id=1) print(res['_source']) es.indices.refresh(index="test-index") res = es.search(index="test-index", body={"query": {"match_all": {}}}) print("Got %d Hits:" % res['hits']['total']['value']) for hit in res['hits']['hits']: print("%(timestamp)s %(author)s: %(text)s" % hit["_source"]) |
Все официальные клиенты Elasticsearch имеют схожую структуру, работая как легкие обертки вокруг остального API Elasticsearch, поэтому, если вы знакомы со структурой запросов Elasticsearch, они обычно достаточно просты в реализации.
Примечания и полезные советы
Используйте официальные библиотеки Elasticsearch.
Хотя соединение с Elasticsearch можно установить с помощью любого метода HTTP, например, запроса curl, официальные библиотеки Elasticsearch разработаны для правильной реализации пула соединений и keep-alives.
Официальные клиенты Elasticsearch доступны для java, javascript, Perl, PHP, python, ruby и .NET. Многие другие языки программирования поддерживаются общественными версиями.
Поддерживайте синхронизацию версии Elasticsearch и версии клиента.
Чтобы избежать неожиданностей, всегда поддерживайте версию клиента в соответствии с используемой версией Elasticsearch. Всегда тестируйте клиентов с Elasticsearch, поскольку даже незначительное обновление версии может вызвать проблемы из-за зависимостей или необходимости внесения изменений в код.
Балансировка нагрузки на соответствующих узлах.
Убедитесь, что клиент правильно балансирует нагрузку на всех соответствующих узлах кластера. В небольших кластерах это обычно означает балансировку только на узлах данных (никогда не на основных узлах), а в больших кластерах - на всех выделенных координационных узлах (если таковые имеются).
Убедитесь, что приложение Elasticsearch правильно обрабатывает исключения.
В случае если Elasticsearch не справляется с объемом запросов, лучше разработать клиентское приложение, которое будет справляться с этим изящно (например, с помощью какого-либо механизма очередей), чем просто заваливать испытывающий трудности кластер повторяющимися запросами.