This is a development branch that is actively being worked on. DO NOT USE IN PRODUCTION! If you want to use stable versions of Elastic, please use Go modules for the 7.x release (or later) or a dependency manager like dep for earlier releases.
Elastic is an Elasticsearch client for the
Go programming language.
See the wiki for additional information about Elastic.
Releases
The release branches (e.g. release-branch.v7)
are actively being worked on and can break at any time.
If you want to use stable versions of Elastic, please use Go modules.
You have installed Elasticsearch 7.0.0 and want to use Elastic.
As listed above, you should use Elastic 7.0 (code is in release-branch.v7).
To use the required version of Elastic in your application, you
should use Go modules
to manage dependencies. Make sure to use a version such as 7.0.0 or later.
As always with major version, there are a lot of breaking changes.
We will use this as an opportunity to clean up and refactor Elastic,
as we already did in earlier (major) releases.
Elastic 2.0 will only get critical bug fixes. You should update to a recent version.
Elastic 1.0
Elastic 1.0 is deprecated. You should really update Elasticsearch and Elastic
to a recent version.
However, if you cannot update for some reason, don't worry. Version 1.0 is
still available. All you need to do is go-get it and change your import path
as described above.
Status
We use Elastic in production since 2012. Elastic is stable but the API changes
now and then. We strive for API compatibility.
However, Elasticsearch sometimes introduces breaking changes
and we sometimes have to adapt.
Having said that, there have been no big API changes that required you
to rewrite your application big time. More often than not it's renaming APIs
and adding/removing features so that Elastic is in sync with Elasticsearch.
Elastic has been used in production starting with Elasticsearch 0.90 up to recent 7.x
versions.
We recently switched to GitHub Actions for testing.
Before that, we used Travis CI successfully for years).
Elasticsearch has quite a few features. Most of them are implemented
by Elastic. I add features and APIs as required. It's straightforward
to implement missing pieces. I'm accepting pull requests :-)
Having said that, I hope you find the project useful.
Getting Started
The first thing you do is to create a Client.
The client connects to Elasticsearch on http://127.0.0.1:9200 by default.
You typically create one client for your app. Here's a complete example of
creating a client, creating an index, adding a document, executing a search etc.
If you are unsure how to implement something, read the tests (all _test.go files).
They not only serve as a guard against changes, but also as a reference.
The recipes
contains small examples on how to implement something, e.g. bulk indexing, scrolling etc.
API Status
Document APIs
Index API
Get API
Delete API
Delete By Query API
Update API
Update By Query API
Multi Get API
Bulk API
Reindex API
Term Vectors
Multi termvectors API
Search APIs
Search
Search Template
Multi Search Template
Search Shards API
Suggesters
Term Suggester
Phrase Suggester
Completion Suggester
Context Suggester
Multi Search API
Count API
Validate API
Explain API
Profile API
Field Capabilities API
Aggregations
Metrics Aggregations
Avg
Boxplot (X-pack)
Cardinality
Extended Stats
Geo Bounds
Geo Centroid
Matrix stats
Max
Median absolute deviation
Min
Percentile Ranks
Percentiles
Rate (X-pack)
Scripted Metric
Stats
String stats (X-pack)
Sum
T-test (X-pack)
Top Hits
Top metrics (X-pack)
Value Count
Weighted avg
Bucket Aggregations
Adjacency Matrix
Auto-interval Date Histogram
Children
Composite
Date Histogram
Date Range
Diversified Sampler
Filter
Filters
Geo Distance
Geohash Grid
Geotile grid
Global
Histogram
IP Range
Missing
Nested
Parent
Range
Rare terms
Reverse Nested
Sampler
Significant Terms
Significant Text
Terms
Variable width histogram
Pipeline Aggregations
Avg Bucket
Bucket Script
Bucket Selector
Bucket Sort
Cumulative cardinality (X-pack)
Cumulative Sum
Derivative
Extended Stats Bucket
Inference bucket (X-pack)
Max Bucket
Min Bucket
Moving Average
Moving function
Moving percentiles (X-pack)
Normalize (X-pack)
Percentiles Bucket
Serial Differencing
Stats Bucket
Sum Bucket
Aggregation Metadata
Indices APIs
Create Index
Delete Index
Get Index
Indices Exists
Open / Close Index
Shrink Index
Rollover Index
Put Mapping
Get Mapping
Get Field Mapping
Types Exists
Index Aliases
Update Indices Settings
Get Settings
Analyze
Explain Analyze
Index Templates
Indices Stats
Indices Segments
Indices Recovery
Indices Shard Stores
Clear Cache
Flush
Synced Flush
Refresh
Force Merge
Index Lifecycle Management APIs
Create Policy
Get Policy
Delete Policy
Move to Step
Remove Policy
Retry Policy
Get Ilm Status
Explain Lifecycle
Start Ilm
Stop Ilm
cat APIs
cat aliases
cat allocation
cat count
cat fielddata
cat health
cat indices
cat master
cat nodeattrs
cat nodes
cat pending tasks
cat plugins
cat recovery
cat repositories
cat thread pool
cat shards
cat segments
cat snapshots
cat templates
Cluster APIs
Cluster Health
Cluster State
Cluster Stats
Pending Cluster Tasks
Cluster Reroute
Cluster Update Settings
Nodes Stats
Nodes Info
Nodes Feature Usage
Remote Cluster Info
Task Management API
Nodes hot_threads
Cluster Allocation Explain API
Rollup APIs (XPack)
Create Job
Delete Job
Get Job
Start Job
Stop Job
Query DSL
Match All Query
Inner hits
Full text queries
Match Query
Match Boolean Prefix Query
Match Phrase Query
Match Phrase Prefix Query
Multi Match Query
Common Terms Query
Query String Query
Simple Query String Query
Combined Fields Query
Intervals Query
Term level queries
Term Query
Terms Query
Terms Set Query
Range Query
Exists Query
Prefix Query
Wildcard Query
Regexp Query
Fuzzy Query
Type Query
Ids Query
Compound queries
Constant Score Query
Bool Query
Dis Max Query
Function Score Query
Boosting Query
Joining queries
Nested Query
Has Child Query
Has Parent Query
Parent Id Query
Geo queries
GeoShape Query
Geo Bounding Box Query
Geo Distance Query
Geo Polygon Query
Specialized queries
Distance Feature Query
More Like This Query
Script Query
Script Score Query
Percolate Query
Span queries
Span Term Query
Span Multi Term Query
Span First Query
Span Near Query
Span Or Query
Span Not Query
Span Containing Query
Span Within Query
Span Field Masking Query
Minimum Should Match
Multi Term Query Rewrite
Modules
Snapshot and Restore
Repositories
Snapshot get
Snapshot create
Snapshot delete
Restore
Snapshot status
Monitoring snapshot/restore status
Stopping currently running snapshot and restore
Scripting
GetScript
PutScript
DeleteScript
Sorting
Sort by score
Sort by field
Sort by geo distance
Sort by script
Sort by doc
Scrolling
Scrolling is supported via a ScrollService. It supports an iterator-like interface.
The ClearScroll API is implemented as well.