This change adds `access` format support for notifications to a Elasticsearch server, and it refactors `namespace` format support. In the case of `access` format, for each event in Minio, a JSON document is inserted into Elasticsearch with its timestamp set to the event's timestamp, and with the ID generated automatically by elasticsearch. No events are modified or deleted in this mode. In the case of `namespace` format, for each event in Minio, a JSON document is keyed together by the bucket and object name is updated in Elasticsearch. In the case of an object being created or over-written in Minio, a new document or an existing document is inserted into the Elasticsearch index. If an object is deleted in Minio, the corresponding document is deleted from the Elasticsearch index. Additionally, this change upgrades Elasticsearch support to the 5.x series. This is a breaking change, and users of previous elasticsearch versions should upgrade. Also updates documentation on Elasticsearch notification target usage and has a link to an elasticsearch upgrade guide. This is the last patch that finally resolves #3928.
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
// Copyright 2012-present Oliver Eilhard. All rights reserved.
|
|
// Use of this source code is governed by a MIT-license.
|
|
// See http://olivere.mit-license.org/license.txt for details.
|
|
|
|
/*
|
|
Package elastic provides an interface to the Elasticsearch server
|
|
(https://www.elastic.co/products/elasticsearch).
|
|
|
|
The first thing you do is to create a Client. If you have Elasticsearch
|
|
installed and running with its default settings
|
|
(i.e. available at http://127.0.0.1:9200), all you need to do is:
|
|
|
|
client, err := elastic.NewClient()
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
|
|
If your Elasticsearch server is running on a different IP and/or port,
|
|
just provide a URL to NewClient:
|
|
|
|
// Create a client and connect to http://192.168.2.10:9201
|
|
client, err := elastic.NewClient(elastic.SetURL("http://192.168.2.10:9201"))
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
|
|
You can pass many more configuration parameters to NewClient. Review the
|
|
documentation of NewClient for more information.
|
|
|
|
If no Elasticsearch server is available, services will fail when creating
|
|
a new request and will return ErrNoClient.
|
|
|
|
A Client provides services. The services usually come with a variety of
|
|
methods to prepare the query and a Do function to execute it against the
|
|
Elasticsearch REST interface and return a response. Here is an example
|
|
of the IndexExists service that checks if a given index already exists.
|
|
|
|
exists, err := client.IndexExists("twitter").Do(context.Background())
|
|
if err != nil {
|
|
// Handle error
|
|
}
|
|
if !exists {
|
|
// Index does not exist yet.
|
|
}
|
|
|
|
Look up the documentation for Client to get an idea of the services provided
|
|
and what kinds of responses you get when executing the Do function of a service.
|
|
Also see the wiki on Github for more details.
|
|
|
|
*/
|
|
package elastic
|