48 lines
1.3 KiB
Go
48 lines
1.3 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
|
||
|
|
||
|
// PointInTime is a lightweight view into the state of the data that existed
|
||
|
// when initiated. It can be created with OpenPointInTime API and be used
|
||
|
// when searching, e.g. in Search API or with SearchSource.
|
||
|
type PointInTime struct {
|
||
|
// Id that uniquely identifies the point in time, as created with the
|
||
|
// OpenPointInTime API.
|
||
|
Id string `json:"id,omitempty"`
|
||
|
// KeepAlive is the time for which this specific PointInTime will be
|
||
|
// kept alive by Elasticsearch.
|
||
|
KeepAlive string `json:"keep_alive,omitempty"`
|
||
|
}
|
||
|
|
||
|
// NewPointInTime creates a new PointInTime.
|
||
|
func NewPointInTime(id string) *PointInTime {
|
||
|
return &PointInTime{
|
||
|
Id: id,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// NewPointInTimeWithKeepAlive creates a new PointInTime with the given
|
||
|
// time to keep alive.
|
||
|
func NewPointInTimeWithKeepAlive(id, keepAlive string) *PointInTime {
|
||
|
return &PointInTime{
|
||
|
Id: id,
|
||
|
KeepAlive: keepAlive,
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Source generates the JSON serializable fragment for the PointInTime.
|
||
|
func (pit *PointInTime) Source() (interface{}, error) {
|
||
|
if pit == nil {
|
||
|
return nil, nil
|
||
|
}
|
||
|
m := map[string]interface{}{
|
||
|
"id": pit.Id,
|
||
|
}
|
||
|
if pit.KeepAlive != "" {
|
||
|
m["keep_alive"] = pit.KeepAlive
|
||
|
}
|
||
|
return m, nil
|
||
|
}
|