Elasticsearch does not work when try to use with python
Question:
I am following the tutorial, completely new to any data bases, including Elasticsearch.
My code
client = Elasticsearch()
indexName = "art"
client.indices.create(index=indexName)
shows the following error (according to the book, it shouldn’t)
ValueError Traceback (most recent call
last)
/var/folders/s5/dhdrwvbj5bs4m9nld9bp43400000gn/T/ipykernel_49947/868473428.py
in
—-> 1 client = Elasticsearch()
2 indexName = "art"
3 client.indices.create(index=indexName)
~/opt/anaconda3/lib/python3.9/site-packages/elasticsearch/_sync/client/init.py
in init(self, hosts, cloud_id, api_key, basic_auth, bearer_auth,
opaque_id, headers, connections_per_node, http_compress, verify_certs,
ca_certs, client_cert, client_key, ssl_assert_hostname,
ssl_assert_fingerprint, ssl_version, ssl_context, ssl_show_warn,
transport_class, request_timeout, node_class, node_pool_class,
randomize_nodes_in_pool, node_selector_class,
dead_node_backoff_factor, max_dead_node_backoff, serializer,
serializers, default_mimetype, max_retries, retry_on_status,
retry_on_timeout, sniff_on_start, sniff_before_requests,
sniff_on_node_failure, sniff_timeout, min_delay_between_sniffing,
sniffed_node_callback, meta_header, timeout, randomize_hosts,
host_info_callback, sniffer_timeout, sniff_on_connection_fail,
http_auth, maxsize, _transport)
189 ) -> None:
190 if hosts is None and cloud_id is None and _transport is None:
–> 191 raise ValueError("Either ‘hosts’ or ‘cloud_id’ must be specified")
192
193 if timeout is not DEFAULT:
ValueError: Either ‘hosts’ or ‘cloud_id’ must be specified
When I start Elasticsearch through Terminal, I can open localhost:9200. I also have changed #network.host: 0.0.0.0 in elasticsearch.yml.
Could you please help me? And could you please explain, what exactly this code does?
Thank you!
Answers:
take a look at the docs, basically you need to use the below if you want to connect to Elasticsearch locally;
client = Elasticsearch("http://localhost:9200")
indexName = "art"
client.indices.create(index=indexName)
client
tells where this instance needs to connect to to talk to Elasticsearch
indexName
is the name of the index you want to use
- the last line is the action, what you want to do, ie create the index you defined
I am following the tutorial, completely new to any data bases, including Elasticsearch.
My code
client = Elasticsearch()
indexName = "art"
client.indices.create(index=indexName)
shows the following error (according to the book, it shouldn’t)
ValueError Traceback (most recent call
last)
/var/folders/s5/dhdrwvbj5bs4m9nld9bp43400000gn/T/ipykernel_49947/868473428.py
in
—-> 1 client = Elasticsearch()
2 indexName = "art"
3 client.indices.create(index=indexName)~/opt/anaconda3/lib/python3.9/site-packages/elasticsearch/_sync/client/init.py
in init(self, hosts, cloud_id, api_key, basic_auth, bearer_auth,
opaque_id, headers, connections_per_node, http_compress, verify_certs,
ca_certs, client_cert, client_key, ssl_assert_hostname,
ssl_assert_fingerprint, ssl_version, ssl_context, ssl_show_warn,
transport_class, request_timeout, node_class, node_pool_class,
randomize_nodes_in_pool, node_selector_class,
dead_node_backoff_factor, max_dead_node_backoff, serializer,
serializers, default_mimetype, max_retries, retry_on_status,
retry_on_timeout, sniff_on_start, sniff_before_requests,
sniff_on_node_failure, sniff_timeout, min_delay_between_sniffing,
sniffed_node_callback, meta_header, timeout, randomize_hosts,
host_info_callback, sniffer_timeout, sniff_on_connection_fail,
http_auth, maxsize, _transport)
189 ) -> None:
190 if hosts is None and cloud_id is None and _transport is None:
–> 191 raise ValueError("Either ‘hosts’ or ‘cloud_id’ must be specified")
192
193 if timeout is not DEFAULT:ValueError: Either ‘hosts’ or ‘cloud_id’ must be specified
When I start Elasticsearch through Terminal, I can open localhost:9200. I also have changed #network.host: 0.0.0.0 in elasticsearch.yml.
Could you please help me? And could you please explain, what exactly this code does?
Thank you!
take a look at the docs, basically you need to use the below if you want to connect to Elasticsearch locally;
client = Elasticsearch("http://localhost:9200")
indexName = "art"
client.indices.create(index=indexName)
client
tells where this instance needs to connect to to talk to ElasticsearchindexName
is the name of the index you want to use- the last line is the action, what you want to do, ie create the index you defined