From 312a56cb2140781523285b45521c9b3b47ea113f Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 17 Jul 2019 15:53:25 +1000 Subject: [PATCH 1/2] Ignore Empty Filters tests Elasticsearch 7.2.0 introduced a change to empty filters handling in https://github.com/elastic/elasticsearch/pull/41459 --- .../Bucket/Filters/FiltersAggregationUsageTests.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs b/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs index b540986f73e..63a18a391de 100644 --- a/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs +++ b/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Elastic.Xunit.XunitPlumbing; using FluentAssertions; using Nest; using Tests.Core.Extensions; @@ -185,6 +186,7 @@ protected override void ExpectResponse(ISearchResponse response) /**[float] * === Empty Filters */ + [SkipVersion(">=7.2.0", "Fixed in 7.2.0 server, FiltersAggregation NPE when filters is empty #41459 (issue: #41408)")] public class EmptyFiltersAggregationUsageTests : AggregationUsageTestBase { public EmptyFiltersAggregationUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, usage) { } @@ -220,6 +222,7 @@ protected override void ExpectResponse(ISearchResponse response) /**[float] * === Conditionless Filters */ + [SkipVersion(">=7.2.0", "Fixed in 7.2.0 server, FiltersAggregation NPE when filters is empty #41459 (issue: #41408)")] public class ConditionlessFiltersAggregationUsageTests : AggregationUsageTestBase { public ConditionlessFiltersAggregationUsageTests(ReadOnlyCluster i, EndpointUsage usage) : base(i, usage) { } From 06064c7146297ce16c0a297143df94c37ebb26d4 Mon Sep 17 00:00:00 2001 From: Russ Cam Date: Thu, 18 Jul 2019 12:35:36 +1000 Subject: [PATCH 2/2] Remove empty filters from docs --- docs/aggregations.asciidoc | 4 + .../filters-aggregation-usage.asciidoc | 91 ------------------- .../geo-tile-grid-aggregation-usage.asciidoc | 69 ++++++++++++++ .../connection/configuration-options.asciidoc | 8 ++ docs/mapping/scalar/scalar-usage.asciidoc | 42 +++++++++ .../api-key/security-api-key-usage.asciidoc | 57 ++++++++++++ .../Filters/FiltersAggregationUsageTests.cs | 7 +- 7 files changed, 182 insertions(+), 96 deletions(-) create mode 100644 docs/aggregations/bucket/geo-hash-tile/geo-tile-grid-aggregation-usage.asciidoc create mode 100644 docs/x-pack/security/api-key/security-api-key-usage.asciidoc diff --git a/docs/aggregations.asciidoc b/docs/aggregations.asciidoc index 75a31e169e9..839732d9142 100644 --- a/docs/aggregations.asciidoc +++ b/docs/aggregations.asciidoc @@ -132,6 +132,8 @@ In addition to the buckets themselves, the bucket aggregations also compute and * <> +* <> + * <> * <> @@ -189,6 +191,8 @@ include::aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciido include::aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc[] +include::aggregations/bucket/geo-hash-tile/geo-tile-grid-aggregation-usage.asciidoc[] + include::aggregations/bucket/global/global-aggregation-usage.asciidoc[] include::aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc[] diff --git a/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc b/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc index 4baf099a11d..25043844804 100644 --- a/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc +++ b/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc @@ -237,94 +237,3 @@ results.Last().DocCount.Should().Be(0); <1> ---- <1> The last bucket is the _other bucket_ -[float] -=== Empty Filters - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filters("empty_filters", agg => agg - .AnonymousFilters() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FiltersAggregation("empty_filters") -{ - Filters = new List() -} ----- - -[source,javascript] -.Example json output ----- -{ - "empty_filters": { - "filters": { - "filters": [] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -response.Aggregations.Filters("empty_filters").Buckets.Should().BeEmpty(); ----- - -[float] -=== Conditionless Filters - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filters("conditionless_filters", agg => agg - .AnonymousFilters( - q => new QueryContainer() - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FiltersAggregation("conditionless_filters") -{ - Filters = new List - { - new QueryContainer() - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "conditionless_filters": { - "filters": { - "filters": [] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -response.Aggregations.Filters("conditionless_filters").Buckets.Should().BeEmpty(); ----- - diff --git a/docs/aggregations/bucket/geo-hash-tile/geo-tile-grid-aggregation-usage.asciidoc b/docs/aggregations/bucket/geo-hash-tile/geo-tile-grid-aggregation-usage.asciidoc new file mode 100644 index 00000000000..c66a0349e91 --- /dev/null +++ b/docs/aggregations/bucket/geo-hash-tile/geo-tile-grid-aggregation-usage.asciidoc @@ -0,0 +1,69 @@ +:ref_current: https://www.elastic.co/guide/en/elasticsearch/reference/7.0 + +:github: https://github.com/elastic/elasticsearch-net + +:nuget: https://www.nuget.org/packages + +//// +IMPORTANT NOTE +============== +This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/Aggregations/Bucket/GeoHashTile/GeoTileGridAggregationUsageTests.cs. +If you wish to submit a PR for any spelling mistakes, typos or grammatical errors for this file, +please modify the original csharp file found at the link and submit the PR with that change. Thanks! +//// + +[[geo-tile-grid-aggregation-usage]] +=== Geo Tile Grid Aggregation Usage + +==== Fluent DSL example + +[source,csharp] +---- +a => a +.GeoTile("my_geotile", g => g + .Field(p => p.LocationPoint) + .Precision(GeoTilePrecision.Precision3) + .Size(1000) + .ShardSize(100) +) +---- + +==== Object Initializer syntax example + +[source,csharp] +---- +new GeoTileGridAggregation("my_geotile") +{ + Field = Field(p => p.LocationPoint), + Precision = GeoTilePrecision.Precision3, + Size = 1000, + ShardSize = 100 +} +---- + +[source,javascript] +.Example json output +---- +{ + "my_geotile": { + "geotile_grid": { + "field": "locationPoint", + "precision": 3, + "size": 1000, + "shard_size": 100 + } + } +} +---- + +==== Handling Responses + +[source,csharp] +---- +response.ShouldBeValid(); +var myGeoTileTile = response.Aggregations.GeoTile("my_geotile"); +myGeoTileTile.Should().NotBeNull(); +myGeoTileTile.Buckets.FirstOrDefault(r => r.Key == "3/0/4").Should().NotBeNull(); +myGeoTileTile.Buckets.FirstOrDefault(r => r.Key == "3/5/5").Should().NotBeNull(); +---- + diff --git a/docs/client-concepts/connection/configuration-options.asciidoc b/docs/client-concepts/connection/configuration-options.asciidoc index 8080df46ba3..ef3d4ce2e13 100644 --- a/docs/client-concepts/connection/configuration-options.asciidoc +++ b/docs/client-concepts/connection/configuration-options.asciidoc @@ -26,6 +26,14 @@ The following is a list of available connection configuration options on `Connec `ConnectionSettings` derives from `ConnectionConfiguration`, these options are available for both the low level and high level client: +`ApiKeyAuthentication`:: + +Api Key to send with all requests to Elasticsearch + +`ApiKeyAuthentication`:: + +Api Key to send with all requests to Elasticsearch + `BasicAuthentication`:: Basic Authentication credentials to send with all requests to Elasticsearch diff --git a/docs/mapping/scalar/scalar-usage.asciidoc b/docs/mapping/scalar/scalar-usage.asciidoc index 1ac2f844f29..5ae77c79c50 100644 --- a/docs/mapping/scalar/scalar-usage.asciidoc +++ b/docs/mapping/scalar/scalar-usage.asciidoc @@ -73,6 +73,14 @@ f => f .Scalar(p => p.DateTimeOffsets, m => m) .Scalar(p => p.DateTimeOffsetNullable, m => m) .Scalar(p => p.DateTimeOffsetNullables, m => m) + .ScalarNanos(p => p.DateTimeNanos, m => m) + .ScalarNanos(p => p.DateTimeNanoss, m => m) + .ScalarNanos(p => p.DateTimeNanosNullable, m => m) + .ScalarNanos(p => p.DateTimeNanosNullables, m => m) + .ScalarNanos(p => p.DateTimeNanosOffset, m => m) + .ScalarNanos(p => p.DateTimeNanosOffsets, m => m) + .ScalarNanos(p => p.DateTimeNanosOffsetNullable, m => m) + .ScalarNanos(p => p.DateTimeNanosOffsetNullables, m => m) .Scalar(p => p.Bool, m => m) .Scalar(p => p.Bools, m => m) .Scalar(p => p.BoolNullable, m => m) @@ -168,6 +176,30 @@ null "dateTimeOffsetNullables": { "type": "date" }, + "dateTimeNanos": { + "type": "date_nanos" + }, + "dateTimeNanoss": { + "type": "date_nanos" + }, + "dateTimeNanosNullable": { + "type": "date_nanos" + }, + "dateTimeNanosNullables": { + "type": "date_nanos" + }, + "dateTimeNanosOffset": { + "type": "date_nanos" + }, + "dateTimeNanosOffsets": { + "type": "date_nanos" + }, + "dateTimeNanosOffsetNullable": { + "type": "date_nanos" + }, + "dateTimeNanosOffsetNullables": { + "type": "date_nanos" + }, "decimal": { "type": "double" }, @@ -359,6 +391,16 @@ public class ScalarPoco public IEnumerable DateTimeOffsets { get; set; } public IEnumerable DateTimes { get; set; } + public DateTime DateTimeNanos { get; set; } + public DateTime? DateTimeNanosNullable { get; set; } + public IEnumerable DateTimeNanosNullables { get; set; } + + public DateTimeOffset DateTimeNanosOffset { get; set; } + public DateTimeOffset? DateTimeNanosOffsetNullable { get; set; } + public IEnumerable DateTimeNanosOffsetNullables { get; set; } + public IEnumerable DateTimeNanosOffsets { get; set; } + public IEnumerable DateTimeNanoss { get; set; } + public decimal Decimal { get; set; } public decimal? DecimalNullable { get; set; } public IEnumerable DecimalNullables { get; set; } diff --git a/docs/x-pack/security/api-key/security-api-key-usage.asciidoc b/docs/x-pack/security/api-key/security-api-key-usage.asciidoc new file mode 100644 index 00000000000..58597c4b89d --- /dev/null +++ b/docs/x-pack/security/api-key/security-api-key-usage.asciidoc @@ -0,0 +1,57 @@ +:ref_current: https://www.elastic.co/guide/en/elasticsearch/reference/7.0 + +:github: https://github.com/elastic/elasticsearch-net + +:nuget: https://www.nuget.org/packages + +//// +IMPORTANT NOTE +============== +This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/XPack/Security/ApiKey/SecurityApiKeyUsageTests.cs. +If you wish to submit a PR for any spelling mistakes, typos or grammatical errors for this file, +please modify the original csharp file found at the link and submit the PR with that change. Thanks! +//// + +[[security-api-key-usage]] +=== Security Api Key Usage + +==== Fluent DSL example + +[source,csharp] +---- +TryGetExtendedValue("response", out var response); + + // Unit tests for HitsTheCorrectUrl will have a null response object. +if (response == null) + return d => d; + +return d => d.RequestConfiguration(r => r.ApiKeyAuthentication(response.Id, response.ApiKey)); +---- + +==== Object Initializer syntax example + +[source,csharp] +---- +TryGetExtendedValue("response", out var response); + + // Unit tests for HitsTheCorrectUrl will have a null response object. +if (response == null) + return new NodesInfoRequest(); + +return new NodesInfoRequest + { + RequestConfiguration = new RequestConfiguration + { + ApiKeyAuthenticationCredentials = new ApiKeyAuthenticationCredentials(response.Id, response.ApiKey) + } + }; +---- + +==== Handling Responses + +[source,csharp] +---- +response.IsValid.Should().BeTrue(); +response.Nodes.Should().NotBeEmpty(); +---- + diff --git a/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs b/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs index 63a18a391de..f784c03f934 100644 --- a/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs +++ b/src/Tests/Tests/Aggregations/Bucket/Filters/FiltersAggregationUsageTests.cs @@ -183,9 +183,7 @@ protected override void ExpectResponse(ISearchResponse response) } } - /**[float] - * === Empty Filters - */ + // hide [SkipVersion(">=7.2.0", "Fixed in 7.2.0 server, FiltersAggregation NPE when filters is empty #41459 (issue: #41408)")] public class EmptyFiltersAggregationUsageTests : AggregationUsageTestBase { @@ -220,8 +218,7 @@ protected override void ExpectResponse(ISearchResponse response) } } - /**[float] - * === Conditionless Filters */ + // hide [SkipVersion(">=7.2.0", "Fixed in 7.2.0 server, FiltersAggregation NPE when filters is empty #41459 (issue: #41408)")] public class ConditionlessFiltersAggregationUsageTests : AggregationUsageTestBase {