Skip to content

Make configuring client nodes stricter with less inference #1690

@sethmlarson

Description

@sethmlarson

Currently all of the following methods for configuring clients work in 7.x:

Elasticsearch() # [{}] Elasticsearch([{}]) # [{}] Elasticsearch("localhost") # [{'host': 'localhost'}] Elasticsearch("localhost:9443") # [{'host': 'localhost', 'port': 9443}] Elasticsearch("http://localhost") # [{'host': 'localhost'}] Elasticsearch("http://localhost:9443") # [{'host': 'localhost', 'port': 9443}] Elasticsearch("http://user:pass@localhost") # [{'host': 'localhost', 'http_auth': 'user:pass'}] Elasticsearch("http://user:pass@localhost:9443") # [{'host': 'localhost', 'port': 9443, 'http_auth': 'user:pass'}] Elasticsearch("http://localhost/a") # [{'host': 'localhost', 'url_prefix': '/a'}] Elasticsearch("http://localhost:9443/a") # [{'host': 'localhost', 'port': 9443, 'url_prefix': '/a'}] Elasticsearch("https://localhost") # [{'host': 'localhost', 'port': 443, 'use_ssl': True}] Elasticsearch("https://localhost:9443") # [{'host': 'localhost', 'port': 9443, 'use_ssl': True}]

Any configuration that doesn't mention host, port, or use_ssl uses the default values of localhost, 9200, and False which can be super confusing in some situations! Proposed change is to make it impossible to configure a client with inference unless using the default client Elasticsearch().

So the following configurations would be disallowed:

Elasticsearch("localhost") # [{'host': 'localhost'}] Elasticsearch("localhost:9443") # [{'host': 'localhost', 'port': 9443}] Elasticsearch("http://localhost") # [{'host': 'localhost'}] Elasticsearch("http://localhost:9443") # [{'host': 'localhost', 'port': 9443}] Elasticsearch("http://user:pass@localhost") # [{'host': 'localhost', 'http_auth': 'user:pass'}] Elasticsearch("http://localhost/a") # [{'host': 'localhost', 'url_prefix': '/a'}] Elasticsearch("https://localhost") # [{'host': 'localhost', 'port': 443, 'use_ssl': True}]

and the following will be allowed:

Elasticsearch() # [{}] Elasticsearch([{}]) # [{}] Elasticsearch("http://localhost:9443") # [{'host': 'localhost', 'port': 9443}] Elasticsearch("http://user:pass@localhost:9443") # [{'host': 'localhost', 'port': 9443, 'http_auth': 'user:pass'}] Elasticsearch("http://localhost:9443/a") # [{'host': 'localhost', 'port': 9443, 'url_prefix': '/a'}] Elasticsearch("https://localhost:9443") # [{'host': 'localhost', 'port': 9443, 'use_ssl': True}]

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions