Comments (2)
How about:
Introduce a new StaticConfig
struct within go-elasticsearch. This new struct doesn't include any functions and interfaces.
Then, use functional options in elasticsearch.New
to allow building a new client with static config (from YAML), but also add other options such as RetryOnError
.
type StaticConfig struct {
Addresses []string `json:"addresses"`
}
myConfig := StaticConfig{}
client := elasticsearch.New(
WithStaticConfig(myConfig),
)
With this, the user sets static config from the specified format.
I am specifying the JSON key in this struct here, as it's the easiest way to avoid folks from having to set their own config. But more complicated solutions using reflect may be possible if we want to be fancy.
If they want to specify function configs, which can't be specified from anything static, they can use other functional options:
client := elasticsearch.New(
WithRetryOnError(func(*http.Request, error) bool {
return false
}),
)
Within the New
method, a Config
struct would be built, and every functional option would be passed to it. Each option decides what to do with the config (set one or multiple attributes).
If a specific functional option isn't passed, a default value has to be set.
from go-elasticsearch.
What I'm missing from the suggested StaticConfig
approach is a proper solution for RetryOnError
and RetryBackoff
. In particular these two interfaces provide currently configuration options, that are essential for customers.
If they are implemented with the functional approach, like WithRetryOnError(..)
I can see how this works from a developer perspective. But I think, every service - like apm-server, fleet-server & others - will come up with their own way to configure it and so I think, the purpose to unify go-elasticsearch.Config
accross the Elastic ecosystem is missed.
from go-elasticsearch.
Related Issues (20)
- Trying Sort by Script. Kibana worked but GoLang failed on JSON parsing, "_script" HOT 3
- Trying Sort by Script. Kibana worked but GoLang failed on JSON parsing, "_script" HOT 1
- mdsc certificate is not truested HOT 3
- Unstructured multisearch response HOT 1
- pull message from broker error HOT 1
- Elasticsearch new template version support HOT 2
- How to let then client reuse http connection? HOT 1
- Connect to Elasticsearch from AWS HOT 3
- Scrolling with typedclient API HOT 2
- Is it safe to use multiple BulkIndexers concurrently? HOT 2
- BulkIndexer WaitGroup delta is added after workers are launched
- Aggregation alias (`aggs`) is not handled in generated Go code HOT 4
- [Request feedback] Looking for feedback about the UX experience
- TypedClient: Search parameters "size" and "from" seem to be ignored HOT 1
- Reset方法不存在 HOT 1
- typedapi.core.search.Request does not have filter_path HOT 3
- Request parsing of terms query not working as expected HOT 3
- All my request get EOF error.
- The ctx timeout is not set in the DiscoverNodes request. Users should be able to customize the timeout.
- [knn] queries cannot be provided directly, use the [_knn_search] endpoint instead
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-elasticsearch.