This commit performs the following modifications:
- The library is properly documented in Godoc format.
- The CustomQuery function is made to be a bit more versatile by
allowing it to also be used standalone (i.e. instead of passing a
`CustomQuery` as a parameter to the `Query` function, they now have
their own `Run` method).
- Queries and aggregations can now also be executed using the
`RunSearch` method. This method is the same as the `Run` method,
except that instead of an `*elasticSearch.Client` value, it accepts an
`esapi.Search` value. This is provided for consuming code that needs
to implement mock clients of ElasticSearch (e.g. for test purposes).
The ElasticSearch client does not provide an interface type describing
its API, so its Search function (which is actually a field of a
function type) can be used instead.
- Bugfix: the CustomAgg function was unusable as it did not accept a
name parameter and thus did not implement the Aggregation interface.
- Bugfix: the enumeration types are rewritten according to Go standards,
and the `RangeRelation` type's default value is now empty.
- The golint and godox linters are added.
This commit changes the internal `search()` function into an exposed
`Search()` function that can be used to execute queries against an
instance of an ElasticSearch client. The per-query-type methods of
`Run()` are removed for now to prevent having to create them for every
type. `Search()` is agnostic.
A README.md file is added with some information, and a few lingering
lint errors are fixed.
This commit is the initial commit for a Go library providing an
idiomatic, easy-to-use query builder for ElasticSearch. The library can
build queries and execute them using the structures from the official Go
SDK provided by the ES project (https://github.com/elastic/go-elasticsearch).
The library currently provides the capabilities to create and execute
simple ElasticSearch queries, specifically Match queries (match,
match_bool_prefix, match_phrase and match_phrase_prefix), Match All
queries (match_all, match_none), and all of the Term-level queries (e.g.
range, regexp, etc.).
Unit tests are included for each support query, and the code is linted
using golangci-lint (see enabled linters in .golangci-lint). The unit
tests currently only verify the builder creates valid JSON queries and
does not attempt to actually run queries against a (mock) ES instance.