diff --git a/go.mod b/go.mod
index 1e03b41508b7fc6cec6cb6db9415d04004849525..8675e781f28539cf5939fae8562e49d08633e5f3 100644
--- a/go.mod
+++ b/go.mod
@@ -2,4 +2,4 @@ module git.autistici.org/ai3/tools/msgflow
 
 go 1.15
 
-require github.com/olivere/elastic/v7 v7.0.31
+require github.com/olivere/elastic/v7 v7.0.32
diff --git a/go.sum b/go.sum
index 8487eebf62204908c31ce6a9f42bf2d94e535144..7f60ee0e7181952b74be61cd0b5d6182c11e9717 100644
--- a/go.sum
+++ b/go.sum
@@ -1,6 +1,7 @@
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/aws/aws-sdk-go v1.42.23/go.mod h1:gyRszuZ/icHmHAVE4gc/r+cfCmhA1AD+vqfWbgI+eHs=
+github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
@@ -11,6 +12,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw=
 github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
@@ -32,6 +35,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
 github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
 github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
@@ -41,6 +45,8 @@ github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/olivere/elastic/v7 v7.0.31 h1:VJu9/zIsbeiulwlRCfGQf6Tzsr++uo+FeUgj5oj+xKk=
 github.com/olivere/elastic/v7 v7.0.31/go.mod h1:idEQxe7Es+Wr4XAuNnJdKeMZufkA9vQprOIFck061vg=
+github.com/olivere/elastic/v7 v7.0.32 h1:R7CXvbu8Eq+WlsLgxmKVKPox0oOwAE/2T9Si5BnvK6E=
+github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k=
 github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -52,7 +58,10 @@ github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+z
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.opentelemetry.io/otel v1.5.0/go.mod h1:Jm/m+rNp/z0eqJc74H7LPwQ3G87qkU/AnnAydAjSAHk=
+go.opentelemetry.io/otel/trace v1.5.0/go.mod h1:sq55kfhjXYr1zVSyexg0w1mpa03AYXR5eyTkB9NPPdE=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -66,6 +75,7 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -76,10 +86,14 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
diff --git a/vendor/github.com/olivere/elastic/v7/client.go b/vendor/github.com/olivere/elastic/v7/client.go
index 48d25a976076da0578664eb85b7c50371c5d9f09..3ebb5e8650d706726c98e9b3c78bc97a0f0847e7 100644
--- a/vendor/github.com/olivere/elastic/v7/client.go
+++ b/vendor/github.com/olivere/elastic/v7/client.go
@@ -26,7 +26,7 @@ import (
 
 const (
 	// Version is the current version of Elastic.
-	Version = "7.0.31"
+	Version = "7.0.32"
 
 	// DefaultURL is the default endpoint of Elasticsearch on the local machine.
 	// It is used e.g. when initializing a new Client without a specific URL.
@@ -1694,11 +1694,17 @@ func (c *Client) CloseIndex(name string) *IndicesCloseService {
 }
 
 // FreezeIndex freezes an index.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 func (c *Client) FreezeIndex(name string) *IndicesFreezeService {
 	return NewIndicesFreezeService(c).Index(name)
 }
 
 // UnfreezeIndex unfreezes an index.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 func (c *Client) UnfreezeIndex(name string) *IndicesUnfreezeService {
 	return NewIndicesUnfreezeService(c).Index(name)
 }
@@ -1779,6 +1785,8 @@ func (c *Client) Aliases() *AliasesService {
 // in https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html.
 //
 // See e.g. IndexPutIndexTemplate and IndexPutComponentTemplate for the new version(s).
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (c *Client) IndexGetTemplate(names ...string) *IndicesGetTemplateService {
 	return NewIndicesGetTemplateService(c).Name(names...)
 }
@@ -1789,6 +1797,8 @@ func (c *Client) IndexGetTemplate(names ...string) *IndicesGetTemplateService {
 // in https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html.
 //
 // See e.g. IndexPutIndexTemplate and IndexPutComponentTemplate for the new version(s).
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (c *Client) IndexTemplateExists(name string) *IndicesExistsTemplateService {
 	return NewIndicesExistsTemplateService(c).Name(name)
 }
@@ -1799,6 +1809,8 @@ func (c *Client) IndexTemplateExists(name string) *IndicesExistsTemplateService
 // in https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html.
 //
 // See e.g. IndexPutIndexTemplate and IndexPutComponentTemplate for the new version(s).
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (c *Client) IndexPutTemplate(name string) *IndicesPutTemplateService {
 	return NewIndicesPutTemplateService(c).Name(name)
 }
@@ -1809,6 +1821,8 @@ func (c *Client) IndexPutTemplate(name string) *IndicesPutTemplateService {
 // in https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html.
 //
 // See e.g. IndexPutIndexTemplate and IndexPutComponentTemplate for the new version(s).
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (c *Client) IndexDeleteTemplate(name string) *IndicesDeleteTemplateService {
 	return NewIndicesDeleteTemplateService(c).Name(name)
 }
diff --git a/vendor/github.com/olivere/elastic/v7/cluster_state.go b/vendor/github.com/olivere/elastic/v7/cluster_state.go
index aecd623d03b1db512bc560e57b1462cd0ebbbcd5..33ebf35ede5b18a46b80f3a844f7ccf8e00713a4 100644
--- a/vendor/github.com/olivere/elastic/v7/cluster_state.go
+++ b/vendor/github.com/olivere/elastic/v7/cluster_state.go
@@ -235,17 +235,19 @@ func (s *ClusterStateService) Do(ctx context.Context) (*ClusterStateResponse, er
 
 // ClusterStateResponse is the response of ClusterStateService.Do.
 type ClusterStateResponse struct {
-	ClusterName  string                    `json:"cluster_name"`
-	ClusterUUID  string                    `json:"cluster_uuid"`
-	Version      int64                     `json:"version"`
-	StateUUID    string                    `json:"state_uuid"`
-	MasterNode   string                    `json:"master_node"`
-	Blocks       map[string]*clusterBlocks `json:"blocks"`
-	Nodes        map[string]*discoveryNode `json:"nodes"`
-	Metadata     *clusterStateMetadata     `json:"metadata"`
-	RoutingTable *clusterStateRoutingTable `json:"routing_table"`
-	RoutingNodes *clusterStateRoutingNode  `json:"routing_nodes"`
-	Customs      map[string]interface{}    `json:"customs"`
+	ClusterName       string                    `json:"cluster_name"`
+	ClusterUUID       string                    `json:"cluster_uuid"`
+	Version           int64                     `json:"version"`
+	StateUUID         string                    `json:"state_uuid"`
+	MasterNode        string                    `json:"master_node"`
+	Blocks            map[string]*clusterBlocks `json:"blocks"`
+	Nodes             map[string]*discoveryNode `json:"nodes"`
+	Metadata          *clusterStateMetadata     `json:"metadata"`
+	RoutingTable      *clusterStateRoutingTable `json:"routing_table"`
+	RoutingNodes      *clusterStateRoutingNode  `json:"routing_nodes"`
+	Snapshots         map[string]interface{}    `json:"snapshots"`
+	SnapshotDeletions map[string]interface{}    `json:"snapshot_deletions"`
+	Customs           map[string]interface{}    `json:"customs"`
 }
 
 type clusterBlocks struct {
@@ -273,10 +275,16 @@ type clusterStateMetadata struct {
 		Unassigned []*shardRouting `json:"unassigned"`
 		Nodes      []*shardRouting `json:"nodes"`
 	} `json:"routing_nodes"`
-	Customs        map[string]interface{} `json:"customs"`
-	Ingest         map[string]interface{} `json:"ingest"`
-	StoredScripts  map[string]interface{} `json:"stored_scripts"`
-	IndexGraveyard map[string]interface{} `json:"index-graveyard"`
+	DataStream        map[string]interface{} `json:"data_stream,omitempty"`
+	Customs           map[string]interface{} `json:"customs"`
+	Ingest            map[string]interface{} `json:"ingest"`
+	StoredScripts     map[string]interface{} `json:"stored_scripts"`
+	IndexGraveyard    map[string]interface{} `json:"index-graveyard"`
+	IndexLifecycle    map[string]interface{} `json:"index_lifecycle"`
+	Repositories      map[string]interface{} `json:"repositories"`
+	IndexTemplate     map[string]interface{} `json:"index_template"`
+	PersistentTasks   map[string]interface{} `json:"persistent_tasks"`
+	ComponentTemplate map[string]interface{} `json:"component_template"`
 }
 
 type clusterCoordinationMetaData struct {
@@ -291,6 +299,7 @@ type discoveryNode struct {
 	EphemeralID      string                 `json:"ephemeral_id"`      // e.g. "paHSLpn6QyuVy_n-GM1JAQ"
 	TransportAddress string                 `json:"transport_address"` // e.g. inet[/1.2.3.4:9300]
 	Attributes       map[string]interface{} `json:"attributes"`        // e.g. { "data": true, "master": true }
+	Roles            []string               `json:"roles,omitempty"`   // e.g. ["data","data_cold","master",...]
 }
 
 type clusterStateRoutingTable struct {
@@ -306,8 +315,10 @@ type clusterStateRoutingNode struct {
 type indexTemplateMetaData struct {
 	IndexPatterns []string               `json:"index_patterns"` // e.g. ["store-*"]
 	Order         int                    `json:"order"`
+	Version       int                    `json:"version"`
 	Settings      map[string]interface{} `json:"settings"` // index settings
 	Mappings      map[string]interface{} `json:"mappings"` // type name -> mapping
+	Aliases       map[string]interface{} `json:"aliases"`
 }
 
 type indexMetaData struct {
@@ -317,6 +328,15 @@ type indexMetaData struct {
 	Aliases           []string               `json:"aliases"` // e.g. [ "alias1", "alias2" ]
 	PrimaryTerms      map[string]interface{} `json:"primary_terms"`
 	InSyncAllocations map[string]interface{} `json:"in_sync_allocations"`
+	Version           int                    `json:"version"`
+	MappingVersion    int                    `json:"mapping_version"`
+	SettingsVersion   int                    `json:"settings_version"`
+	AliasesVersion    int                    `json:"aliases_version"`
+	RoutingNumShards  int                    `json:"routing_num_shards"`
+	RolloverInfo      interface{}            `json:"rollover_info,omitempty"`
+	System            interface{}            `json:"system,omitempty"`
+	TimestampRange    interface{}            `json:"timestamp_range,omitempty"`
+	ILM               map[string]interface{} `json:"ilm,omitempty"`
 }
 
 type indexRoutingTable struct {
diff --git a/vendor/github.com/olivere/elastic/v7/cluster_stats.go b/vendor/github.com/olivere/elastic/v7/cluster_stats.go
index 7bb39cf651b4c50d8f252cfc6709faaa58d54593..0c06e7ef019463f517cf020b86f8d30d1375e125 100644
--- a/vendor/github.com/olivere/elastic/v7/cluster_stats.go
+++ b/vendor/github.com/olivere/elastic/v7/cluster_stats.go
@@ -193,6 +193,72 @@ type ClusterStatsIndices struct {
 	QueryCache *ClusterStatsIndicesQueryCache `json:"query_cache"`
 	Completion *ClusterStatsIndicesCompletion `json:"completion"`
 	Segments   *IndexStatsSegments            `json:"segments"`
+	Analysis   *ClusterStatsAnalysisStats     `json:"analysis"`
+	Mappings   *ClusterStatsMappingStats      `json:"mappings"`
+	Versions   []*ClusterStatsVersionStats    `json:"versions"`
+}
+
+type ClusterStatsAnalysisStats struct {
+	CharFilterTypes    []IndexFeatureStats `json:"char_filter_types,omitempty"`
+	TokenizerTypes     []IndexFeatureStats `json:"tokenizer_types,omitempty"`
+	FilterTypes        []IndexFeatureStats `json:"filter_types,omitempty"`
+	AnalyzerTypes      []IndexFeatureStats `json:"analyzer_types,omitempty"`
+	BuiltInCharFilters []IndexFeatureStats `json:"built_in_char_filters,omitempty"`
+	BuiltInTokenizers  []IndexFeatureStats `json:"built_in_tokenizers,omitempty"`
+	BuiltInFilters     []IndexFeatureStats `json:"built_in_filters,omitempty"`
+	BuiltInAnalyzers   []IndexFeatureStats `json:"built_in_analyzers,omitempty"`
+}
+
+type ClusterStatsMappingStats struct {
+	FieldTypes        []IndexFeatureStats `json:"field_types"`
+	RuntimeFieldTypes []RuntimeFieldStats `json:"runtime_field_types"`
+}
+
+type IndexFeatureStats struct {
+	Name       string `json:"name"`
+	Count      int    `json:"count"`
+	IndexCount int    `json:"index_count"`
+
+	ScriptCount int `json:"script_count"`
+}
+
+type RuntimeFieldStats struct {
+	Name            string   `json:"name"`
+	Count           int      `json:"count"`
+	IndexCount      int      `json:"index_count"`
+	ScriptlessCount int      `json:"scriptless_count"`
+	ShadowedCount   int      `json:"shadowed_count"`
+	Lang            []string `json:"lang"`
+
+	// FieldScriptStats
+
+	LinesMax    int64 `json:"lines_max"`
+	LinesTotal  int64 `json:"lines_total"`
+	CharsMax    int64 `json:"chars_max"`
+	CharsTotal  int64 `json:"chars_total"`
+	SourceMax   int64 `json:"source_max"`
+	SourceTotal int64 `json:"source_total"`
+	DocMax      int64 `json:"doc_max"`
+	DocTotal    int64 `json:"doc_total"`
+}
+
+type FieldScriptStats struct {
+	LinesMax    int64 `json:"lines_max"`
+	LinesTotal  int64 `json:"lines_total"`
+	CharsMax    int64 `json:"chars_max"`
+	CharsTotal  int64 `json:"chars_total"`
+	SourceMax   int64 `json:"source_max"`
+	SourceTotal int64 `json:"source_total"`
+	DocMax      int64 `json:"doc_max"`
+	DocTotal    int64 `json:"doc_total"`
+}
+
+type ClusterStatsVersionStats struct {
+	Version           string `json:"version"`
+	IndexCount        int    `json:"index_count"`
+	PrimaryShardCount int    `json:"primary_shard_count"`
+	TotalPrimarySize  string `json:"total_primary_size,omitempty"`
+	TotalPrimaryBytes int64  `json:"total_primary_bytes,omitempty"`
 }
 
 type ClusterStatsIndicesShards struct {
@@ -226,8 +292,12 @@ type ClusterStatsIndicesDocs struct {
 }
 
 type ClusterStatsIndicesStore struct {
-	Size        string `json:"size"` // e.g. "5.3gb"
-	SizeInBytes int64  `json:"size_in_bytes"`
+	Size                    string `json:"size"` // e.g. "5.3gb"
+	SizeInBytes             int64  `json:"size_in_bytes"`
+	TotalDataSetSize        string `json:"total_data_set_size,omitempty"`
+	TotalDataSetSizeInBytes int64  `json:"total_data_set_size_in_bytes,omitempty"`
+	Reserved                string `json:"reserved,omitempty"`
+	ReservedInBytes         int64  `json:"reserved_in_bytes,omitempty"`
 }
 
 type ClusterStatsIndicesFieldData struct {
@@ -280,14 +350,25 @@ type ClusterStatsNodes struct {
 	NetworkTypes   *ClusterStatsNodesNetworkTypes   `json:"network_types"`
 	DiscoveryTypes *ClusterStatsNodesDiscoveryTypes `json:"discovery_types"`
 	PackagingTypes *ClusterStatsNodesPackagingTypes `json:"packaging_types"`
+
+	Ingest *ClusterStatsNodesIngest `json:"ingest"`
 }
 
 type ClusterStatsNodesCount struct {
-	Total            int `json:"total"`
-	Data             int `json:"data"`
-	CoordinatingOnly int `json:"coordinating_only"`
-	Master           int `json:"master"`
-	Ingest           int `json:"ingest"`
+	Total               int `json:"total"`
+	Data                int `json:"data"`
+	DataCold            int `json:"data_cold"`
+	DataContent         int `json:"data_content"`
+	DataFrozen          int `json:"data_frozen"`
+	DataHot             int `json:"data_hot"`
+	DataWarm            int `json:"data_warm"`
+	CoordinatingOnly    int `json:"coordinating_only"`
+	Master              int `json:"master"`
+	Ingest              int `json:"ingest"`
+	ML                  int `json:"ml"`
+	RemoteClusterClient int `json:"remote_cluster_client"`
+	Transform           int `json:"transform"`
+	VotingOnly          int `json:"voting_only"`
 }
 
 type ClusterStatsNodesOsStats struct {
@@ -301,7 +382,11 @@ type ClusterStatsNodesOsStats struct {
 		PrettyName string `json:"pretty_name"`
 		Value      int    `json:"count"`
 	} `json:"pretty_names"`
-	Mem *ClusterStatsNodesOsStatsMem `json:"mem"`
+	Mem           *ClusterStatsNodesOsStatsMem `json:"mem"`
+	Architectures []struct {
+		Arch  string `json:"arch"`
+		Count int    `json:"count"`
+	} `json:"architectures"`
 	// CPU []*ClusterStatsNodesOsStatsCPU `json:"cpu"`
 }
 
@@ -414,3 +499,8 @@ type ClusterStatsNodesPackagingType struct {
 	Type   string `json:"type"`   // e.g. "docker"
 	Count  int    `json:"count"`  // e.g. 1
 }
+
+type ClusterStatsNodesIngest struct {
+	NumberOfPipelines int                    `json:"number_of_pipelines"`
+	ProcessorStats    map[string]interface{} `json:"processor_stats"`
+}
diff --git a/vendor/github.com/olivere/elastic/v7/delete_by_query.go b/vendor/github.com/olivere/elastic/v7/delete_by_query.go
index ac668e2cec6a3132ad680223c4170de1458c6457..d1f690eab4ebae6f54e49349bdd49b7521cb3103 100644
--- a/vendor/github.com/olivere/elastic/v7/delete_by_query.go
+++ b/vendor/github.com/olivere/elastic/v7/delete_by_query.go
@@ -192,7 +192,7 @@ func (s *DeleteByQueryService) AbortOnVersionConflict() *DeleteByQueryService {
 	return s
 }
 
-// ProceedOnVersionConflict aborts the request on version conflicts.
+// ProceedOnVersionConflict proceeds the request on version conflicts.
 // It is an alias to setting Conflicts("proceed").
 func (s *DeleteByQueryService) ProceedOnVersionConflict() *DeleteByQueryService {
 	s.conflicts = "proceed"
diff --git a/vendor/github.com/olivere/elastic/v7/docker-compose.yml b/vendor/github.com/olivere/elastic/v7/docker-compose.yml
index 1bfc68f689648206020c63dadc199018ecafd3d4..d4f9bd843146ba6a1fe9504b46ab88397c04dfa5 100644
--- a/vendor/github.com/olivere/elastic/v7/docker-compose.yml
+++ b/vendor/github.com/olivere/elastic/v7/docker-compose.yml
@@ -1,6 +1,6 @@
 services:
   elasticsearch:
-    image: docker.elastic.co/elasticsearch/elasticsearch:${VERSION:-7.16.2}
+    image: docker.elastic.co/elasticsearch/elasticsearch:${VERSION:-7.17.1}
     hostname: elasticsearch
     environment:
       - cluster.name=elasticsearch
@@ -28,7 +28,7 @@ services:
     ports:
       - 9200:9200
   platinum:
-    image: docker.elastic.co/elasticsearch/elasticsearch:${VERSION:-7.16.2}
+    image: docker.elastic.co/elasticsearch/elasticsearch:${VERSION:-7.17.1}
     hostname: elasticsearch-platinum
     environment:
       - cluster.name=platinum
diff --git a/vendor/github.com/olivere/elastic/v7/errors.go b/vendor/github.com/olivere/elastic/v7/errors.go
index f3bae9d09eeaafee9b22708f6f5fd4354c84f3d2..8a4ed524e039ed9fbf81de2d1284b64d3982544a 100644
--- a/vendor/github.com/olivere/elastic/v7/errors.go
+++ b/vendor/github.com/olivere/elastic/v7/errors.go
@@ -225,6 +225,14 @@ type ShardOperationFailedException struct {
 	Primary bool `json:"primary,omitempty"`
 }
 
+type BroadcastResponse struct {
+	Shards     *ShardsInfo                      `json:"_shards,omitempty"`
+	Total      int                              `json:"total"`
+	Successful int                              `json:"successful"`
+	Failed     int                              `json:"failed"`
+	Failures   []*ShardOperationFailedException `json:"failures,omitempty"`
+}
+
 // FailedNodeException returns an error on the node level.
 type FailedNodeException struct {
 	*ErrorDetails
diff --git a/vendor/github.com/olivere/elastic/v7/go.mod b/vendor/github.com/olivere/elastic/v7/go.mod
index 3e788c6257a2d262fe5aad784f49a16119bb0e0c..1725213ba924ab3f1f4ed76788fa6be7af140199 100644
--- a/vendor/github.com/olivere/elastic/v7/go.mod
+++ b/vendor/github.com/olivere/elastic/v7/go.mod
@@ -1,17 +1,26 @@
 module github.com/olivere/elastic/v7
 
-go 1.16
+go 1.17
 
 require (
-	github.com/aws/aws-sdk-go v1.42.23
+	github.com/aws/aws-sdk-go v1.43.21
 	github.com/fortytw2/leaktest v1.3.0
-	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
-	github.com/google/go-cmp v0.5.6
+	github.com/google/go-cmp v0.5.7
 	github.com/mailru/easyjson v0.7.7
 	github.com/opentracing/opentracing-go v1.2.0
 	github.com/pkg/errors v0.9.1
-	github.com/smartystreets/assertions v1.1.1 // indirect
 	github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9
-	github.com/smartystreets/gunit v1.4.2 // indirect
 	go.opencensus.io v0.23.0
+	go.opentelemetry.io/otel v1.5.0
+)
+
+require (
+	github.com/go-logr/logr v1.2.2 // indirect
+	github.com/go-logr/stdr v1.2.2 // indirect
+	github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
+	github.com/jmespath/go-jmespath v0.4.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/smartystreets/assertions v1.1.1 // indirect
+	github.com/smartystreets/gunit v1.4.2 // indirect
+	go.opentelemetry.io/otel/trace v1.5.0 // indirect
 )
diff --git a/vendor/github.com/olivere/elastic/v7/highlight.go b/vendor/github.com/olivere/elastic/v7/highlight.go
index 49e1b4d329061bf21ca21e18b97d98eacf867162..ce2f155ae569e7b8009b57e2ff0f5b86ee5fda77 100644
--- a/vendor/github.com/olivere/elastic/v7/highlight.go
+++ b/vendor/github.com/olivere/elastic/v7/highlight.go
@@ -18,6 +18,7 @@ type Highlight struct {
 	order                 *string
 	encoder               *string
 	requireFieldMatch     *bool
+	maxAnalyzedOffset     *int
 	boundaryMaxScan       *int
 	boundaryChars         *string
 	boundaryScannerType   *string
@@ -95,6 +96,11 @@ func (hl *Highlight) RequireFieldMatch(requireFieldMatch bool) *Highlight {
 	return hl
 }
 
+func (hl *Highlight) MaxAnalyzedOffset(maxAnalyzedOffset int) *Highlight {
+	hl.maxAnalyzedOffset = &maxAnalyzedOffset
+	return hl
+}
+
 func (hl *Highlight) BoundaryMaxScan(boundaryMaxScan int) *Highlight {
 	hl.boundaryMaxScan = &boundaryMaxScan
 	return hl
@@ -184,6 +190,9 @@ func (hl *Highlight) Source() (interface{}, error) {
 	if hl.requireFieldMatch != nil {
 		source["require_field_match"] = *hl.requireFieldMatch
 	}
+	if hl.maxAnalyzedOffset != nil {
+		source["max_analyzed_offset"] = *hl.maxAnalyzedOffset
+	}
 	if hl.boundaryMaxScan != nil {
 		source["boundary_max_scan"] = *hl.boundaryMaxScan
 	}
diff --git a/vendor/github.com/olivere/elastic/v7/indices_delete_template.go b/vendor/github.com/olivere/elastic/v7/indices_delete_template.go
index 7dd5506046f36b1a9d0c89b15c1346b475c46374..aab1250c459c7a6ff04cd9945c9a660b49f3baa8 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_delete_template.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_delete_template.go
@@ -22,6 +22,8 @@ import (
 //
 // See https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-delete-template-v1.html
 // for more details.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 type IndicesDeleteTemplateService struct {
 	client *Client
 
@@ -147,6 +149,8 @@ func (s *IndicesDeleteTemplateService) Validate() error {
 }
 
 // Do executes the operation.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (s *IndicesDeleteTemplateService) Do(ctx context.Context) (*IndicesDeleteTemplateResponse, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_exists_template.go b/vendor/github.com/olivere/elastic/v7/indices_exists_template.go
index 53f29fea6971e84fb665f38b006f62d475ae7c7e..f12d753177f585594c4ea321b6d3350dfc1174a0 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_exists_template.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_exists_template.go
@@ -17,6 +17,8 @@ import (
 // IndicesExistsTemplateService checks if a given template exists.
 // See http://www.elastic.co/guide/en/elasticsearch/reference/7.0/indices-templates.html#indices-templates-exists
 // for documentation.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 type IndicesExistsTemplateService struct {
 	client *Client
 
@@ -143,6 +145,8 @@ func (s *IndicesExistsTemplateService) Validate() error {
 }
 
 // Do executes the operation.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (s *IndicesExistsTemplateService) Do(ctx context.Context) (bool, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_freeze.go b/vendor/github.com/olivere/elastic/v7/indices_freeze.go
index 04c2a3e1588e789d22c531a4decb058bad097ad1..086e8244142bfebcb2ea5bcc40e5868fda68523d 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_freeze.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_freeze.go
@@ -19,6 +19,9 @@ import (
 // See https://www.elastic.co/guide/en/elasticsearch/reference/7.0/freeze-index-api.html
 // and https://www.elastic.co/blog/creating-frozen-indices-with-the-elasticsearch-freeze-index-api
 // for details.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 type IndicesFreezeService struct {
 	client *Client
 
@@ -192,6 +195,9 @@ func (s *IndicesFreezeService) Validate() error {
 }
 
 // Do executes the service.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 func (s *IndicesFreezeService) Do(ctx context.Context) (*IndicesFreezeResponse, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_get_index_template.go b/vendor/github.com/olivere/elastic/v7/indices_get_index_template.go
index edad32a1f07f35131430909bec3577f6e298f3fc..92b4445e31d7273c02c80a9897b0be4292406784 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_get_index_template.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_get_index_template.go
@@ -231,16 +231,20 @@ type IndicesGetIndexTemplateData struct {
 }
 
 type IndicesDataStream struct {
-	Name               string                 `json:"name,omitempty"`
-	TimestampField     string                 `json:"timestamp_field,omitempty"`
-	Indices            []string               `json:"indices,omitempty"`
-	Generation         int64                  `json:"generation,omitempty"`
-	Status             string                 `json:"status,omitempty"`
-	IndexTemplate      string                 `json:"template,omitempty"`
-	IlmPolicy          string                 `json:"ilm_policy,omitempty"`
-	Meta               map[string]interface{} `json:"_meta,omitempty"`
-	Hidden             bool                   `json:"hidden,omitempty"`
-	System             bool                   `json:"system,omitempty"`
-	AllowCustomRouting bool                   `json:"allow_custom_routing,omitempty"`
-	Replicated         bool                   `json:"replicated,omitempty"`
+	Name               string                           `json:"name,omitempty"`
+	TimestampField     *IndicesDataStreamTimestampField `json:"timestamp_field,omitempty"`
+	Indices            []string                         `json:"indices,omitempty"`
+	Generation         int64                            `json:"generation,omitempty"`
+	Status             string                           `json:"status,omitempty"`
+	IndexTemplate      string                           `json:"template,omitempty"`
+	IlmPolicy          string                           `json:"ilm_policy,omitempty"`
+	Meta               map[string]interface{}           `json:"_meta,omitempty"`
+	Hidden             bool                             `json:"hidden,omitempty"`
+	System             bool                             `json:"system,omitempty"`
+	AllowCustomRouting bool                             `json:"allow_custom_routing,omitempty"`
+	Replicated         bool                             `json:"replicated,omitempty"`
+}
+
+type IndicesDataStreamTimestampField struct {
+	Name string `json:"name,omitempty"`
 }
diff --git a/vendor/github.com/olivere/elastic/v7/indices_get_template.go b/vendor/github.com/olivere/elastic/v7/indices_get_template.go
index 28bb4a0e5c8f5ee9452e7cf63c153fc69d894e87..756a3ed783b171c329ba8b138aea09ddcfce7de4 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_get_template.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_get_template.go
@@ -22,6 +22,8 @@ import (
 //
 // See https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-get-template-v1.html
 // for more details.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 type IndicesGetTemplateService struct {
 	client *Client
 
@@ -148,6 +150,8 @@ func (s *IndicesGetTemplateService) Validate() error {
 }
 
 // Do executes the operation.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (s *IndicesGetTemplateService) Do(ctx context.Context) (map[string]*IndicesGetTemplateResponse, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_put_template.go b/vendor/github.com/olivere/elastic/v7/indices_put_template.go
index fefa1b24ed214176025c0971857af4d3b94b8cb6..9a42c734afdd05f3f4e1f27bd326b678d6647c38 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_put_template.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_put_template.go
@@ -22,6 +22,8 @@ import (
 //
 // See https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html
 // for more details.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 type IndicesPutTemplateService struct {
 	client *Client
 
@@ -227,6 +229,8 @@ func (s *IndicesPutTemplateService) Validate() error {
 }
 
 // Do executes the operation.
+//
+// Deprecated: Legacy index templates are deprecated in favor of composable templates.
 func (s *IndicesPutTemplateService) Do(ctx context.Context) (*IndicesPutTemplateResponse, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_refresh.go b/vendor/github.com/olivere/elastic/v7/indices_refresh.go
index 4dfdbe40fed22d89453d6db7d6eebc40c919415a..8593d55781379ecbb467af22429b924e8cd9058e 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_refresh.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_refresh.go
@@ -145,5 +145,5 @@ func (s *RefreshService) Do(ctx context.Context) (*RefreshResult, error) {
 
 // RefreshResult is the outcome of RefreshService.Do.
 type RefreshResult struct {
-	Shards *ShardsInfo `json:"_shards,omitempty"`
+	BroadcastResponse
 }
diff --git a/vendor/github.com/olivere/elastic/v7/indices_stats.go b/vendor/github.com/olivere/elastic/v7/indices_stats.go
index 397d63861106095a4cb20a9557225b9aecb22c86..8296c8213e9f83e1a5dddda796bf0e27d1fce966 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_stats.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_stats.go
@@ -285,6 +285,7 @@ type IndexStatsDetails struct {
 	SeqNo           *IndexStatsSeqNo           `json:"seq_no,omitempty"`
 	RetentionLeases *IndexStatsRetentionLeases `json:"retention_leases,omitempty"`
 	ShardPath       *IndexStatsShardPath       `json:"shard_path,omitempty"`
+	ShardStats      *IndexStatsShardStats      `json:"shard_stats,omitempty"`
 }
 
 type IndexStatsRouting struct {
@@ -300,14 +301,22 @@ type IndexStatsShardPath struct {
 	IsCustomDataPath bool   `json:"is_custom_data_path"`
 }
 
+type IndexStatsShardStats struct {
+	TotalCount int64 `json:"total_count,omitempty"`
+}
+
 type IndexStatsDocs struct {
 	Count   int64 `json:"count,omitempty"`
 	Deleted int64 `json:"deleted,omitempty"`
 }
 
 type IndexStatsStore struct {
-	Size        string `json:"size,omitempty"` // human size, e.g. 119.3mb
-	SizeInBytes int64  `json:"size_in_bytes,omitempty"`
+	Size                    string `json:"size,omitempty"` // human size, e.g. 119.3mb
+	SizeInBytes             int64  `json:"size_in_bytes,omitempty"`
+	TotalDataSetSize        string `json:"total_data_set_size,omitempty"`
+	TotalDataSetSizeInBytes int64  `json:"total_data_set_size_in_bytes,omitempty"`
+	Reserved                string `json:"reserved,omitempty"`
+	ReservedInBytes         int64  `json:"reserved_in_bytes,omitempty"`
 }
 
 type IndexStatsIndexing struct {
diff --git a/vendor/github.com/olivere/elastic/v7/indices_unfreeze.go b/vendor/github.com/olivere/elastic/v7/indices_unfreeze.go
index 3da75d4fd7ab6214b46d4613664c3531cba7005e..5945eb15287e958922c47d3f69e982fb87ec72f7 100644
--- a/vendor/github.com/olivere/elastic/v7/indices_unfreeze.go
+++ b/vendor/github.com/olivere/elastic/v7/indices_unfreeze.go
@@ -19,6 +19,9 @@ import (
 // See https://www.elastic.co/guide/en/elasticsearch/reference/7.0/unfreeze-index-api.html
 // and https://www.elastic.co/blog/creating-frozen-indices-with-the-elasticsearch-freeze-index-api
 // for details.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 type IndicesUnfreezeService struct {
 	client *Client
 
@@ -192,6 +195,9 @@ func (s *IndicesUnfreezeService) Validate() error {
 }
 
 // Do executes the service.
+//
+// Deprecated: Frozen indices are deprecated because they provide no benefit
+// given improvements in heap memory utilization.
 func (s *IndicesUnfreezeService) Do(ctx context.Context) (*IndicesUnfreezeResponse, error) {
 	// Check pre-conditions
 	if err := s.Validate(); err != nil {
diff --git a/vendor/github.com/olivere/elastic/v7/search.go b/vendor/github.com/olivere/elastic/v7/search.go
index 2be5517f8a7bc0aa315ee4047b29c52113634fa5..4745c1b8d9044cf561f0e8436b9df0c370a54cda 100644
--- a/vendor/github.com/olivere/elastic/v7/search.go
+++ b/vendor/github.com/olivere/elastic/v7/search.go
@@ -458,9 +458,16 @@ func (s *SearchService) TypedKeys(enabled bool) *SearchService {
 	return s
 }
 
-// SeqNoPrimaryTerm specifies whether to return sequence number and
-// primary term of the last modification of each hit.
+// SeqNoPrimaryTerm is an alias for SeqNoAndPrimaryTerm.
+//
+// Deprecated: Use SeqNoAndPrimaryTerm.
 func (s *SearchService) SeqNoPrimaryTerm(enabled bool) *SearchService {
+	return s.SeqNoAndPrimaryTerm(enabled)
+}
+
+// SeqNoAndPrimaryTerm specifies whether to return sequence number and
+// primary term of the last modification of each hit.
+func (s *SearchService) SeqNoAndPrimaryTerm(enabled bool) *SearchService {
 	s.seqNoPrimaryTerm = &enabled
 	return s
 }
@@ -876,6 +883,7 @@ type SearchProfileShardResult struct {
 	ID           string                    `json:"id"`
 	Searches     []QueryProfileShardResult `json:"searches"`
 	Aggregations []ProfileResult           `json:"aggregations"`
+	Fetch        *ProfileResult            `json:"fetch"`
 }
 
 // QueryProfileShardResult is a container class to hold the profile results
@@ -901,12 +909,13 @@ type CollectorResult struct {
 // ProfileResult is the internal representation of a profiled query,
 // corresponding to a single node in the query tree.
 type ProfileResult struct {
-	Type          string           `json:"type"`
-	Description   string           `json:"description,omitempty"`
-	NodeTime      string           `json:"time,omitempty"`
-	NodeTimeNanos int64            `json:"time_in_nanos,omitempty"`
-	Breakdown     map[string]int64 `json:"breakdown,omitempty"`
-	Children      []ProfileResult  `json:"children,omitempty"`
+	Type          string                 `json:"type"`
+	Description   string                 `json:"description,omitempty"`
+	NodeTime      string                 `json:"time,omitempty"`
+	NodeTimeNanos int64                  `json:"time_in_nanos,omitempty"`
+	Breakdown     map[string]int64       `json:"breakdown,omitempty"`
+	Children      []ProfileResult        `json:"children,omitempty"`
+	Debug         map[string]interface{} `json:"debug,omitempty"`
 }
 
 // Aggregations (see search_aggs.go)
diff --git a/vendor/github.com/olivere/elastic/v7/tasks_list.go b/vendor/github.com/olivere/elastic/v7/tasks_list.go
index 09aa6b61399458eebb6cd789cfadea12a6773e73..837c098bcd9d0d3c045784d16e6f9a48a60ca74b 100644
--- a/vendor/github.com/olivere/elastic/v7/tasks_list.go
+++ b/vendor/github.com/olivere/elastic/v7/tasks_list.go
@@ -263,6 +263,7 @@ type TaskInfo struct {
 	RunningTime        string            `json:"running_time"`
 	RunningTimeInNanos int64             `json:"running_time_in_nanos"`
 	Cancellable        bool              `json:"cancellable"`
+	Cancelled          bool              `json:"cancelled"`
 	ParentTaskId       string            `json:"parent_task_id"` // like "YxJnVYjwSBm_AUbzddTajQ:12356"
 	Headers            map[string]string `json:"headers"`
 }
diff --git a/vendor/github.com/olivere/elastic/v7/xpack_async_search_submit.go b/vendor/github.com/olivere/elastic/v7/xpack_async_search_submit.go
index f2c13b69d09a263d53f4ab57ad2aad774721fc44..11ece6857820adb88efb7e7304bafcc045542c49 100644
--- a/vendor/github.com/olivere/elastic/v7/xpack_async_search_submit.go
+++ b/vendor/github.com/olivere/elastic/v7/xpack_async_search_submit.go
@@ -453,9 +453,16 @@ func (s *XPackAsyncSearchSubmit) TypedKeys(enabled bool) *XPackAsyncSearchSubmit
 	return s
 }
 
-// SeqNoPrimaryTerm specifies whether to return sequence number and
-// primary term of the last modification of each hit.
+// SeqNoPrimaryTerm is an alias for SeqNoAndPrimaryTerm.
+//
+// Deprecated: Use SeqNoAndPrimaryTerm instead.
 func (s *XPackAsyncSearchSubmit) SeqNoPrimaryTerm(enabled bool) *XPackAsyncSearchSubmit {
+	return s.SeqNoAndPrimaryTerm(enabled)
+}
+
+// SeqNoAndPrimaryTerm specifies whether to return sequence number and
+// primary term of the last modification of each hit.
+func (s *XPackAsyncSearchSubmit) SeqNoAndPrimaryTerm(enabled bool) *XPackAsyncSearchSubmit {
 	s.seqNoPrimaryTerm = &enabled
 	return s
 }
diff --git a/vendor/github.com/olivere/elastic/v7/xpack_ilm_get_lifecycle.go b/vendor/github.com/olivere/elastic/v7/xpack_ilm_get_lifecycle.go
index 3a52c36d5db18874db78d2444872b42ca841d597..ae2a3fa11de7cb2e6febdcf30776853895e31426 100644
--- a/vendor/github.com/olivere/elastic/v7/xpack_ilm_get_lifecycle.go
+++ b/vendor/github.com/olivere/elastic/v7/xpack_ilm_get_lifecycle.go
@@ -187,7 +187,17 @@ func (s *XPackIlmGetLifecycleService) Do(ctx context.Context) (map[string]*XPack
 
 // XPackIlmGetLifecycleResponse is the response of XPackIlmGetLifecycleService.Do.
 type XPackIlmGetLifecycleResponse struct {
-	Version      int                    `json:"version,omitempty"`
-	ModifiedDate string                 `json:"modified_date,omitempty"` // e.g. "2019-10-03T17:43:42.720Z"
-	Policy       map[string]interface{} `json:"policy,omitempty"`
+	Version      int                       `json:"version,omitempty"`
+	ModifiedDate string                    `json:"modified_date,omitempty"` // e.g. "2019-10-03T17:43:42.720Z"
+	Policy       map[string]interface{}    `json:"policy,omitempty"`
+	InUseBy      *ClusterMetadataItemUsage `json:"in_use_by,omitempty"`
+}
+
+// ClusterMetadataItemUsage encapsulates the usage of a particular "thing"
+// by something else. In Elasticsearch, this is in the
+// org.elasticsearch.cluster.metadata package.
+type ClusterMetadataItemUsage struct {
+	Indices             []string `json:"indices,omitempty"`
+	DataStreams         []string `json:"data_streams,omitempty"`
+	ComposableTemplates []string `json:"composable_templates,omitempty"`
 }
diff --git a/vendor/modules.txt b/vendor/modules.txt
index d37b095b99d0739cbab21ec2b576058f6a167c2b..d0ed7081a382f0fca3d8407f2382f7492074999f 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -5,7 +5,7 @@ github.com/mailru/easyjson
 github.com/mailru/easyjson/buffer
 github.com/mailru/easyjson/jlexer
 github.com/mailru/easyjson/jwriter
-# github.com/olivere/elastic/v7 v7.0.31
+# github.com/olivere/elastic/v7 v7.0.32
 ## explicit
 github.com/olivere/elastic/v7
 github.com/olivere/elastic/v7/config