From 927004cf4c69ad708827f6c5f7cc760f34e39a94 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Mar 2023 13:05:41 +0000 Subject: [PATCH] Support custom JsonSerializerOptions. (#7272) (#7290) * Add Visual Studio spell checker configuration * Generate converters as partial classes * Rename SourceSerialization helper * Prefer throw helper for missing settings * Support custom JsonSerializerOptions * Cleanup docs and add initial custom serialization docs * Tweak formatting of code for docs * Adding "Configuring custom `JsonSerializerOptions`" section * Adding "Registering custom `System.Text.Json` converters" * Add XML doc comments for public methods on serializer types * Add Creating a custom Serializer section * Finalise documentation for serialization Co-authored-by: Steve Gordon --- .editorconfig | 3 + ...lasticsearch-net-breaking-changes.asciidoc | 498 - .../elasticsearch-net-breaking-changes.md | 478 - .../nest-breaking-changes.asciidoc | 3218 --- .../nest-breaking-changes.md | 3185 --- ...lasticsearch-net-breaking-changes.asciidoc | 1665 -- .../elasticsearch-net-breaking-changes.md | 1220 -- .../nest-breaking-changes.asciidoc | 4361 ----- .../nest-breaking-changes.md | 3409 ---- ...lasticsearch-net-breaking-changes.asciidoc | 248 - .../nest-breaking-changes.asciidoc | 1816 -- ...lasticsearch-net-breaking-changes.asciidoc | 5264 ----- .../nest-breaking-changes.asciidoc | 16224 ---------------- docs/aggregations.asciidoc | 371 - .../aggregation-meta-usage.asciidoc | 77 - .../adjacency-matrix-usage.asciidoc | 96 - ...-date-histogram-aggregation-usage.asciidoc | 128 - .../children-aggregation-usage.asciidoc | 78 - .../composite-aggregation-usage.asciidoc | 336 - .../date-histogram-aggregation-usage.asciidoc | 144 - .../date-range-aggregation-usage.asciidoc | 118 - ...rsified-sampler-aggregation-usage.asciidoc | 74 - .../filter/filter-aggregation-usage.asciidoc | 138 - .../filters-aggregation-usage.asciidoc | 239 - .../geo-distance-aggregation-usage.asciidoc | 90 - .../geo-hash-grid-aggregation-usage.asciidoc | 127 - .../geo-tile-grid-aggregation-usage.asciidoc | 70 - .../global/global-aggregation-usage.asciidoc | 72 - .../histogram-aggregation-usage.asciidoc | 76 - .../ip-range-aggregation-usage.asciidoc | 84 - .../missing-aggregation-usage.asciidoc | 58 - .../multi-terms-aggregation-usage.asciidoc | 131 - .../nested/nested-aggregation-usage.asciidoc | 81 - .../parent/parent-aggregation-usage.asciidoc | 97 - .../range/range-aggregation-usage.asciidoc | 85 - .../rare-terms-aggregation-usage.asciidoc | 92 - .../reverse-nested-aggregation-usage.asciidoc | 118 - .../sampler-aggregation-usage.asciidoc | 80 - ...gnificant-terms-aggregation-usage.asciidoc | 277 - ...ignificant-text-aggregation-usage.asciidoc | 91 - .../terms/terms-aggregation-usage.asciidoc | 570 - .../matrix-stats-aggregation-usage.asciidoc | 95 - .../average-aggregation-usage.asciidoc | 78 - .../boxplot-aggregation-usage.asciidoc | 90 - .../cardinality-aggregation-usage.asciidoc | 61 - .../extended-stats-aggregation-usage.asciidoc | 70 - .../geo-bounds-aggregation-usage.asciidoc | 75 - .../geo-centroid-aggregation-usage.asciidoc | 175 - .../geo-line-aggregation-usage.asciidoc | 77 - .../metric/max/max-aggregation-usage.asciidoc | 56 - ...olute-deviation-aggregation-usage.asciidoc | 76 - .../metric/min/min-aggregation-usage.asciidoc | 59 - ...ercentile-ranks-aggregation-usage.asciidoc | 86 - .../percentiles-aggregation-usage.asciidoc | 87 - .../rate/rate-aggregation-usage.asciidoc | 94 - ...scripted-metric-aggregation-usage.asciidoc | 190 - .../stats/stats-aggregation-usage.asciidoc | 60 - .../string-stats-aggregation-usage.asciidoc | 60 - .../metric/sum/sum-aggregation-usage.asciidoc | 56 - .../t-test/t-test-aggregation-usage.asciidoc | 118 - .../top-hits-aggregation-usage.asciidoc | 217 - .../top-metrics-aggregation-usage.asciidoc | 93 - .../value-count-aggregation-usage.asciidoc | 56 - ...eighted-average-aggregation-usage.asciidoc | 85 - .../average-bucket-aggregation-usage.asciidoc | 95 - .../bucket-script-aggregation-usage.asciidoc | 149 - ...bucket-selector-aggregation-usage.asciidoc | 108 - .../bucket-sort-aggregation-usage.asciidoc | 125 - ...ive-cardinality-aggregation-usage.asciidoc | 94 - .../cumulative-sum-aggregation-usage.asciidoc | 94 - .../derivative-aggregation-usage.asciidoc | 98 - ...ed-stats-bucket-aggregation-usage.asciidoc | 104 - .../max-bucket-aggregation-usage.asciidoc | 94 - .../min-bucket-aggregation-usage.asciidoc | 94 - ...ng-average-ewma-aggregation-usage.asciidoc | 113 - ...age-holt-linear-aggregation-usage.asciidoc | 114 - ...ge-holt-winters-aggregation-usage.asciidoc | 145 - ...-average-linear-aggregation-usage.asciidoc | 109 - ...-average-simple-aggregation-usage.asciidoc | 115 - ...moving-function-aggregation-usage.asciidoc | 119 - ...ing-percentiles-aggregation-usage.asciidoc | 110 - .../normalize-aggregation-usage.asciidoc | 106 - ...centiles-bucket-aggregation-usage.asciidoc | 101 - ...al-differencing-aggregation-usage.asciidoc | 117 - .../stats-bucket-aggregation-usage.asciidoc | 94 - .../sum-bucket-aggregation-usage.asciidoc | 90 - .../reserved-aggregation-names.asciidoc | 36 - .../writing-aggregations.asciidoc | 279 - docs/analysis-chain.png | Bin 143338 -> 0 bytes docs/analysis/analysis-usage.asciidoc | 24 - .../token-filters/token-filter-usage.asciidoc | 327 - docs/breaking-changes.asciidoc | 24 - docs/capture-requests-localhost.png | Bin 160000 -> 0 bytes docs/capture-requests-remotehost.png | Bin 76047 -> 0 bytes docs/class.png | Bin 66942 -> 0 bytes .../working-with-certificates.asciidoc | 122 - docs/client-concepts/client-concepts.asciidoc | 26 + .../connection-pooling.asciidoc | 252 - .../date-time-providers.asciidoc | 70 - .../keeping-track-of-nodes.asciidoc | 127 - .../request-pipelines.asciidoc | 294 - .../building-blocks/timeoutplot.png | Bin 10018 -> 0 bytes .../building-blocks/transports.asciidoc | 61 - .../exceptions/unexpected-exceptions.asciidoc | 148 - .../unrecoverable-exceptions.asciidoc | 173 - .../failover/falling-over.asciidoc | 129 - .../max-retries/respects-max-retry.asciidoc | 186 - .../pinging/first-usage.asciidoc | 128 - .../pinging/revival.asciidoc | 70 - .../disable-sniff-ping-per-request.asciidoc | 118 - .../request-timeouts-overrides.asciidoc | 105 - .../respects-allowed-status-code.asciidoc | 36 - .../respects-force-node.asciidoc | 37 - .../respects-max-retry-overrides.asciidoc | 85 - .../round-robin/round-robin.asciidoc | 101 - .../round-robin/skip-dead-nodes.asciidoc | 195 - .../sniffing/address-parsing.asciidoc | 69 - .../sniffing/on-connection-failure.asciidoc | 209 - .../sniffing/on-stale-cluster-state.asciidoc | 106 - .../sniffing/on-startup.asciidoc | 190 - .../sniffing/role-detection.asciidoc | 305 - .../sticky/skip-dead-nodes.asciidoc | 176 - .../sticky-sniffing-connection-pool.asciidoc | 156 - .../connection-pooling/sticky/sticky.asciidoc | 45 - .../connection/configuration-options.asciidoc | 262 - ...unction-as-a-service-environments.asciidoc | 192 - .../modifying-default-connection.asciidoc | 124 - .../high-level/analysis/analysis-chain.png | Bin 143338 -> 0 bytes .../analysis/testing-analyzers.asciidoc | 314 - .../analysis/writing-analyzers.asciidoc | 280 - .../covariant-search-results.asciidoc | 34 - .../high-level/getting-started.asciidoc | 291 - .../indexing/indexing-documents.asciidoc | 279 - .../high-level/indexing/ingest-nodes.asciidoc | 61 - .../high-level/indexing/pipelines.asciidoc | 126 - .../indexing/reindexing-documents.asciidoc | 265 - .../inference/document-paths.asciidoc | 114 - .../inference/field-inference.asciidoc | 658 - .../inference/ids-inference.asciidoc | 195 - .../inference/index-name-inference.asciidoc | 168 - .../inference/indices-paths.asciidoc | 169 - .../inference/property-inference.asciidoc | 46 - .../inference/routing-inference.asciidoc | 192 - .../types-and-relations-inference.asciidoc | 69 - .../mapping/attribute-mapping.asciidoc | 139 - .../high-level/mapping/auto-map.asciidoc | 394 - .../mapping/fluent-mapping.asciidoc | 463 - .../mapping/ignoring-properties.asciidoc | 207 - .../high-level/mapping/multi-fields.asciidoc | 189 - .../parent-child-relationships.asciidoc | 312 - .../mapping/visitor-pattern-mapping.asciidoc | 218 - .../custom-serialization.asciidoc | 371 - .../extending-nest-types.asciidoc | 88 - .../modelling-documents-with-types.asciidoc | 498 - .../custom-serialization.asciidoc | 235 + .../modeling-documents-with-types.asciidoc | 37 + .../troubleshooting/audit-trail.asciidoc | 7 - .../debug-information.asciidoc | 8 - .../troubleshooting/debug-mode.asciidoc | 8 - .../deprecation-logging.asciidoc | 8 - .../diagnostic-source.asciidoc | 8 - .../logging-with-fiddler.asciidoc | 8 - ...logging-with-on-request-completed.asciidoc | 8 - docs/code-standards/descriptors.asciidoc | 274 - docs/code-standards/elastic-client.asciidoc | 146 - .../naming-conventions.asciidoc | 271 - docs/code-standards/queries.asciidoc | 62 - docs/code-standards/requests.asciidoc | 50 - docs/code-standards/responses.asciidoc | 114 - .../serialization/formatters.asciidoc | 86 - .../serialization/properties.asciidoc | 36 - .../date-math/date-math-expressions.asciidoc | 252 - .../distance-unit/distance-units.asciidoc | 129 - .../time-unit/time-units.asciidoc | 201 - docs/common-options/union/union.asciidoc | 95 - docs/conventions.asciidoc | 168 - docs/hadouken-indentation.jpg | Bin 43939 -> 0 bytes docs/high-level.asciidoc | 281 - docs/index.asciidoc | 4 + docs/inspect-requests.png | Bin 161819 -> 0 bytes docs/intro.asciidoc | 2 - .../local-metadata-usage.asciidoc | 57 - docs/mapping/scalar/scalar-usage.asciidoc | 426 - docs/pipeline.png | Bin 204561 -> 0 bytes docs/query-dsl.asciidoc | 386 - docs/query-dsl/bool-dsl/bool-dsl.asciidoc | 644 - .../bool-dsl/hadouken-indentation.jpg | Bin 43939 -> 0 bytes .../bool-dsl-complex-query-usage.asciidoc | 189 - .../compound/bool/bool-query-usage.asciidoc | 103 - .../boosting/boosting-query-usage.asciidoc | 67 - .../constant-score-query-usage.asciidoc | 57 - .../dismax/dismax-query-usage.asciidoc | 74 - .../function-score-query-usage.asciidoc | 230 - .../combined-fields-usage.asciidoc | 115 - .../common-terms/common-terms-usage.asciidoc | 72 - .../intervals/intervals-usage.asciidoc | 309 - .../match-bool-prefix-usage.asciidoc | 69 - .../match-phrase-prefix-usage.asciidoc | 66 - .../match-phrase/match-phrase-usage.asciidoc | 63 - .../full-text/match/match-usage.asciidoc | 81 - .../multi-match/multi-match-usage.asciidoc | 174 - .../query-string/query-string-usage.asciidoc | 110 - .../simple-query-string-usage.asciidoc | 89 - .../geo-bounding-box-query-usage.asciidoc | 122 - .../geo-distance-query-usage.asciidoc | 67 - .../geo-shape/geo-shape-query-usage.asciidoc | 1014 - .../polygon/geo-polygon-query-usage.asciidoc | 73 - .../has-child/has-child-query-usage.asciidoc | 71 - .../has-parent-query-usage.asciidoc | 68 - .../nested/nested-query-usage.asciidoc | 86 - .../parent-id/parent-id-query-usage.asciidoc | 57 - .../query-dsl/match-none-query-usage.asciidoc | 50 - .../raw/raw-combine-usage.asciidoc | 58 - .../raw/raw-query-usage.asciidoc | 45 - .../span-containing-query-usage.asciidoc | 72 - .../span-field-masking-usage.asciidoc | 71 - .../first/span-first-query-usage.asciidoc | 67 - .../span-multi-term-query-usage.asciidoc | 61 - .../span/near/span-near-query-usage.asciidoc | 97 - .../span/not/span-not-query-usage.asciidoc | 90 - .../span/or/span-or-query-usage.asciidoc | 84 - .../span/term/span-term-query-usage.asciidoc | 57 - .../within/span-within-query-usage.asciidoc | 72 - .../distance-feature-query-usage.asciidoc | 119 - ...ke-this-full-document-query-usage.asciidoc | 90 - .../more-like-this-query-usage.asciidoc | 118 - .../percolate/percolate-query-usage.asciidoc | 269 - .../pinned/pinned-query-usage.asciidoc | 69 - .../rank-feature-query-usage.asciidoc | 139 - .../script-score-query-usage.asciidoc | 102 - .../script/script-query-usage.asciidoc | 71 - .../shape/shape-query-usage.asciidoc | 1011 - .../exists/exists-query-usage.asciidoc | 53 - .../fuzzy/fuzzy-date-query-usage.asciidoc | 72 - .../fuzzy/fuzzy-numeric-query-usage.asciidoc | 72 - .../fuzzy/fuzzy-query-usage.asciidoc | 72 - .../term-level/ids/ids-query-usage.asciidoc | 58 - .../prefix/prefix-query-usage.asciidoc | 60 - .../range/date-range-query-usage.asciidoc | 72 - .../range/long-range-query-usage.asciidoc | 69 - .../range/numeric-range-query-usage.asciidoc | 69 - .../range/term-range-query-usage.asciidoc | 66 - .../regexp/regexp-query-usage.asciidoc | 66 - .../term-level/term/term-query-usage.asciidoc | 100 - .../terms-set/terms-set-query-usage.asciidoc | 132 - .../terms/terms-list-query-usage.asciidoc | 172 - .../terms/terms-lookup-query-usage.asciidoc | 70 - .../terms/terms-query-usage.asciidoc | 119 - .../wildcard/wildcard-query-usage.asciidoc | 60 - .../verbatim-and-strict-query-usage.asciidoc | 234 - docs/search.asciidoc | 91 - docs/search/request/explain-usage.asciidoc | 46 - docs/search/request/fields-usage.asciidoc | 79 - .../request/from-and-size-usage.asciidoc | 58 - .../request/highlighting-usage.asciidoc | 264 - .../request/indices-boost-usage.asciidoc | 66 - docs/search/request/inner-hits-usage.asciidoc | 179 - docs/search/request/min-score-usage.asciidoc | 60 - .../request/point-in-time-usage.asciidoc | 58 - .../search/request/post-filter-usage.asciidoc | 47 - docs/search/request/profile-usage.asciidoc | 71 - docs/search/request/query-usage.asciidoc | 59 - .../request/script-fields-usage.asciidoc | 106 - .../request/search-after-usage.asciidoc | 128 - .../sliced-scroll-search-usage.asciidoc | 50 - docs/search/request/sort-usage.asciidoc | 303 - .../request/source-filtering-usage.asciidoc | 130 - docs/search/request/suggest-usage.asciidoc | 293 - docs/search/returned-fields.asciidoc | 139 - docs/search/scrolling-documents.asciidoc | 120 - .../collapsing/field-collapse-usage.asciidoc | 192 - .../search/rescoring/rescore-usage.asciidoc | 160 - docs/search/searching-runtime-fields.asciidoc | 149 - docs/search/writing-queries.asciidoc | 401 - docs/timeoutplot.png | Bin 10018 -> 0 bytes docs/troubleshooting.asciidoc | 8 - .../api-key/security-api-key-usage.asciidoc | 57 - .../role-mapping/role-mapping-rules.asciidoc | 157 - exclusion.dic | 6 + .../Api/BulkRequest.cs | 28 +- .../Api/CreateRequest.cs | 2 +- .../Api/IndexRequest.cs | 4 +- .../Client/ElasticsearchClient.cs | 2 + .../ElasticsearchClientSettings.cs | 12 +- .../Core/Exceptions/ThrowHelper.cs | 8 +- .../Core/Fields/FieldValue.cs | 4 +- .../Core/Fields/FieldValues.cs | 18 +- .../Core/Infer/Field/FieldConverter.cs | 24 +- .../Core/Infer/Id/IdConverter.cs | 23 +- .../Core/Infer/Id/Ids.cs | 4 - .../Core/Infer/IndexName/IndexName.cs | 4 +- .../Infer/IndexName/IndexNameConverter.cs | 26 +- .../Core/Infer/Indices/Indices.cs | 18 +- .../Core/Infer/JoinFieldConverter.cs | 20 +- .../JoinFieldRouting/RoutingConverter.cs | 19 +- .../Core/Infer/RelationName/RelationName.cs | 17 +- .../Core/LazyJson.cs | 18 +- .../DefaultRequestResponseSerializer.cs | 40 +- .../Serialization/DefaultSourceSerializer.cs | 96 +- .../Serialization/ExtraSerializationData.cs | 23 - .../Serialization/IStreamSerializable.cs | 2 +- .../JsonSerializerOptionsExtensions.cs | 2 +- .../Serialization/QueryConverter.cs | 15 + .../Serialization/SourceConverter.cs | 4 +- ...erialisation.cs => SourceSerialization.cs} | 11 +- .../Serialization/SystemTextJsonSerializer.cs | 126 +- .../Core/Bulk/BulkOperationsCollection.cs | 14 +- .../Types/Core/Bulk/BulkUpdateBody.cs | 4 +- .../Bulk/BulkUpdateOperationDescriptor.cs | 4 +- .../Types/Core/Bulk/PartialBulkUpdateBody.cs | 2 +- .../Types/Core/Bulk/ScriptedBulkUpdateBody.cs | 2 +- .../Types/Mapping/Properties.cs | 4 +- .../Types/Scripting/InlineScript.cs | 4 +- .../Types/SortOptions.cs | 2 +- .../AsyncSearch/SubmitAsyncSearchRequest.g.cs | 2 +- .../_Generated/Api/CreateRequest.g.cs | 2 +- .../_Generated/Api/IndexRequest.g.cs | 2 +- .../_Generated/Api/SearchRequest.g.cs | 2 +- .../_Generated/Api/UpdateRequest.g.cs | 4 +- .../Types/Aggregations/Aggregation.g.cs | 2 +- .../Types/Aggregations/InferenceConfig.g.cs | 2 +- .../Types/Core/Search/FieldSuggester.g.cs | 2 +- .../Types/Core/Search/SmoothingModel.g.cs | 2 +- .../Types/Core/Search/SourceFilter.g.cs | 2 +- .../Types/Core/Search/Suggester.g.cs | 2 +- .../_Generated/Types/ErrorCause.g.cs | 2 +- .../Types/IndexManagement/IndexSettings.g.cs | 2 +- .../Types/Ml/InferenceConfigCreate.g.cs | 2 +- .../Types/Ml/InferenceConfigUpdate.g.cs | 2 +- .../Types/Ml/TokenizationConfig.g.cs | 2 +- .../Types/QueryDsl/FunctionScore.g.cs | 2 +- .../_Generated/Types/QueryDsl/FuzzyQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/Intervals.g.cs | 2 +- .../Types/QueryDsl/IntervalsFilter.g.cs | 2 +- .../Types/QueryDsl/IntervalsQuery.g.cs | 2 +- .../Types/QueryDsl/MatchBoolPrefixQuery.g.cs | 2 +- .../QueryDsl/MatchPhrasePrefixQuery.g.cs | 2 +- .../Types/QueryDsl/MatchPhraseQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/MatchQuery.g.cs | 2 +- .../Types/QueryDsl/PrefixQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/Query.g.cs | 2 +- .../Types/QueryDsl/RegexpQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/SpanQuery.g.cs | 2 +- .../Types/QueryDsl/SpanTermQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/TermQuery.g.cs | 2 +- .../_Generated/Types/QueryDsl/TermsQuery.g.cs | 4 +- .../Types/QueryDsl/TermsSetQuery.g.cs | 2 +- .../Types/QueryDsl/WildcardQuery.g.cs | 2 +- .../TransformManagement/PivotGroupBy.g.cs | 2 +- tests/Tests.Configuration/tests.default.yaml | 2 +- tests/Tests/Documentation/.editorconfig | 2 + .../Serialization/CustomSerializationTests.cs | 459 + .../ModellingDocumentsWithTypesTests.cs | 50 + .../DefaultSourceSerializerTests.cs | 163 + ...tomizingJsonSerializerOptions.verified.txt | 1 + ...erter_BeforeBuiltInConverters.verified.txt | 1 + ...UsingSystemTextJsonAttributes.verified.txt | 1 + ...emTextJsonConverterAttributes.verified.txt | 1 + ...rializes_TypesUsingAJoinField.verified.txt | 2 + ...tlySerializes_TypesUsingQuery.verified.txt | 1 + ...tlySerializes_TypesUsingQuery.verified.txt | 2 + ...ithTypesTests.IndexMyDocument.verified.txt | 1 + 362 files changed, 1481 insertions(+), 76443 deletions(-) delete mode 100644 docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc delete mode 100644 docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.md delete mode 100644 docs/2.0-breaking-changes/nest-breaking-changes.asciidoc delete mode 100644 docs/2.0-breaking-changes/nest-breaking-changes.md delete mode 100644 docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc delete mode 100644 docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.md delete mode 100644 docs/5.0-breaking-changes/nest-breaking-changes.asciidoc delete mode 100644 docs/5.0-breaking-changes/nest-breaking-changes.md delete mode 100644 docs/6.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc delete mode 100644 docs/6.0-breaking-changes/nest-breaking-changes.asciidoc delete mode 100644 docs/7.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc delete mode 100644 docs/7.0-breaking-changes/nest-breaking-changes.asciidoc delete mode 100644 docs/aggregations.asciidoc delete mode 100644 docs/aggregations/aggregation-meta-usage.asciidoc delete mode 100644 docs/aggregations/bucket/adjacency-matrix/adjacency-matrix-usage.asciidoc delete mode 100644 docs/aggregations/bucket/auto-date-histogram/auto-date-histogram-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/children/children-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/composite/composite-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/date-histogram/date-histogram-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/date-range/date-range-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/diversified-sampler/diversified-sampler-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/filter/filter-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/geo-tile-grid/geo-tile-grid-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/global/global-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/ip-range/ip-range-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/missing/missing-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/multi-terms/multi-terms-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/nested/nested-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/parent/parent-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/range/range-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/rare-terms/rare-terms-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/reverse-nested/reverse-nested-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/sampler/sampler-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/significant-terms/significant-terms-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/significant-text/significant-text-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/bucket/terms/terms-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/matrix/matrix-stats/matrix-stats-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/average/average-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/boxplot/boxplot-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/cardinality/cardinality-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/extended-stats/extended-stats-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/geo-bounds/geo-bounds-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/geo-centroid/geo-centroid-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/geo-line/geo-line-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/max/max-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/median-absolute-deviation/median-absolute-deviation-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/min/min-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/percentile-ranks/percentile-ranks-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/percentiles/percentiles-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/rate/rate-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/scripted-metric/scripted-metric-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/stats/stats-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/string-stats/string-stats-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/sum/sum-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/t-test/t-test-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/top-hits/top-hits-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/top-metrics/top-metrics-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/value-count/value-count-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/metric/weighted-average/weighted-average-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/average-bucket/average-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/bucket-script/bucket-script-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/bucket-selector/bucket-selector-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/bucket-sort/bucket-sort-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/cumulative-cardinality/cumulative-cardinality-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/cumulative-sum/cumulative-sum-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/derivative/derivative-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/extended-stats-bucket/extended-stats-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/max-bucket/max-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/min-bucket/min-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-average/moving-average-ewma-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-average/moving-average-holt-linear-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-average/moving-average-holt-winters-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-average/moving-average-linear-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-average/moving-average-simple-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-function/moving-function-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/moving-percentiles/moving-percentiles-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/normalize/normalize-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/percentiles-bucket/percentiles-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/serial-differencing/serial-differencing-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/stats-bucket/stats-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/pipeline/sum-bucket/sum-bucket-aggregation-usage.asciidoc delete mode 100644 docs/aggregations/reserved-aggregation-names.asciidoc delete mode 100644 docs/aggregations/writing-aggregations.asciidoc delete mode 100644 docs/analysis-chain.png delete mode 100644 docs/analysis/analysis-usage.asciidoc delete mode 100644 docs/analysis/token-filters/token-filter-usage.asciidoc delete mode 100644 docs/breaking-changes.asciidoc delete mode 100644 docs/capture-requests-localhost.png delete mode 100644 docs/capture-requests-remotehost.png delete mode 100644 docs/class.png delete mode 100644 docs/client-concepts/certificates/working-with-certificates.asciidoc create mode 100644 docs/client-concepts/client-concepts.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/connection-pooling.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/date-time-providers.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/keeping-track-of-nodes.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/request-pipelines.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/timeoutplot.png delete mode 100644 docs/client-concepts/connection-pooling/building-blocks/transports.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/exceptions/unexpected-exceptions.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/exceptions/unrecoverable-exceptions.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/failover/falling-over.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/max-retries/respects-max-retry.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/pinging/first-usage.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/pinging/revival.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/request-overrides/disable-sniff-ping-per-request.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/request-overrides/request-timeouts-overrides.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/request-overrides/respects-allowed-status-code.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/request-overrides/respects-force-node.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/request-overrides/respects-max-retry-overrides.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/round-robin/round-robin.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/round-robin/skip-dead-nodes.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sniffing/address-parsing.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sniffing/on-connection-failure.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sniffing/on-stale-cluster-state.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sniffing/on-startup.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sniffing/role-detection.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sticky/skip-dead-nodes.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sticky/sticky-sniffing-connection-pool.asciidoc delete mode 100644 docs/client-concepts/connection-pooling/sticky/sticky.asciidoc delete mode 100644 docs/client-concepts/connection/configuration-options.asciidoc delete mode 100644 docs/client-concepts/connection/function-as-a-service-environments.asciidoc delete mode 100644 docs/client-concepts/connection/modifying-default-connection.asciidoc delete mode 100644 docs/client-concepts/high-level/analysis/analysis-chain.png delete mode 100644 docs/client-concepts/high-level/analysis/testing-analyzers.asciidoc delete mode 100644 docs/client-concepts/high-level/analysis/writing-analyzers.asciidoc delete mode 100644 docs/client-concepts/high-level/covariant-hits/covariant-search-results.asciidoc delete mode 100644 docs/client-concepts/high-level/getting-started.asciidoc delete mode 100644 docs/client-concepts/high-level/indexing/indexing-documents.asciidoc delete mode 100644 docs/client-concepts/high-level/indexing/ingest-nodes.asciidoc delete mode 100644 docs/client-concepts/high-level/indexing/pipelines.asciidoc delete mode 100644 docs/client-concepts/high-level/indexing/reindexing-documents.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/document-paths.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/field-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/ids-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/index-name-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/indices-paths.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/property-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/routing-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/inference/types-and-relations-inference.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/attribute-mapping.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/auto-map.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/fluent-mapping.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/ignoring-properties.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/multi-fields.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/parent-child-relationships.asciidoc delete mode 100644 docs/client-concepts/high-level/mapping/visitor-pattern-mapping.asciidoc delete mode 100644 docs/client-concepts/high-level/serialization/custom-serialization.asciidoc delete mode 100644 docs/client-concepts/high-level/serialization/extending-nest-types.asciidoc delete mode 100644 docs/client-concepts/high-level/serialization/modelling-documents-with-types.asciidoc create mode 100644 docs/client-concepts/serialization/custom-serialization.asciidoc create mode 100644 docs/client-concepts/serialization/modeling-documents-with-types.asciidoc delete mode 100644 docs/code-standards/descriptors.asciidoc delete mode 100644 docs/code-standards/elastic-client.asciidoc delete mode 100644 docs/code-standards/naming-conventions.asciidoc delete mode 100644 docs/code-standards/queries.asciidoc delete mode 100644 docs/code-standards/requests.asciidoc delete mode 100644 docs/code-standards/responses.asciidoc delete mode 100644 docs/code-standards/serialization/formatters.asciidoc delete mode 100644 docs/code-standards/serialization/properties.asciidoc delete mode 100644 docs/common-options/date-math/date-math-expressions.asciidoc delete mode 100644 docs/common-options/distance-unit/distance-units.asciidoc delete mode 100644 docs/common-options/time-unit/time-units.asciidoc delete mode 100644 docs/common-options/union/union.asciidoc delete mode 100644 docs/conventions.asciidoc delete mode 100644 docs/hadouken-indentation.jpg delete mode 100644 docs/high-level.asciidoc delete mode 100644 docs/inspect-requests.png delete mode 100644 docs/mapping/local-metadata/local-metadata-usage.asciidoc delete mode 100644 docs/mapping/scalar/scalar-usage.asciidoc delete mode 100644 docs/pipeline.png delete mode 100644 docs/query-dsl.asciidoc delete mode 100644 docs/query-dsl/bool-dsl/bool-dsl.asciidoc delete mode 100644 docs/query-dsl/bool-dsl/hadouken-indentation.jpg delete mode 100644 docs/query-dsl/compound/bool/bool-dsl-complex-query-usage.asciidoc delete mode 100644 docs/query-dsl/compound/bool/bool-query-usage.asciidoc delete mode 100644 docs/query-dsl/compound/boosting/boosting-query-usage.asciidoc delete mode 100644 docs/query-dsl/compound/constant-score/constant-score-query-usage.asciidoc delete mode 100644 docs/query-dsl/compound/dismax/dismax-query-usage.asciidoc delete mode 100644 docs/query-dsl/compound/function-score/function-score-query-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/combined-fields/combined-fields-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/common-terms/common-terms-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/intervals/intervals-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/match/match-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/multi-match/multi-match-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/query-string/query-string-usage.asciidoc delete mode 100644 docs/query-dsl/full-text/simple-query-string/simple-query-string-usage.asciidoc delete mode 100644 docs/query-dsl/geo/bounding-box/geo-bounding-box-query-usage.asciidoc delete mode 100644 docs/query-dsl/geo/distance/geo-distance-query-usage.asciidoc delete mode 100644 docs/query-dsl/geo/geo-shape/geo-shape-query-usage.asciidoc delete mode 100644 docs/query-dsl/geo/polygon/geo-polygon-query-usage.asciidoc delete mode 100644 docs/query-dsl/joining/has-child/has-child-query-usage.asciidoc delete mode 100644 docs/query-dsl/joining/has-parent/has-parent-query-usage.asciidoc delete mode 100644 docs/query-dsl/joining/nested/nested-query-usage.asciidoc delete mode 100644 docs/query-dsl/joining/parent-id/parent-id-query-usage.asciidoc delete mode 100644 docs/query-dsl/match-none-query-usage.asciidoc delete mode 100644 docs/query-dsl/nest-specific/raw/raw-combine-usage.asciidoc delete mode 100644 docs/query-dsl/nest-specific/raw/raw-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/containing/span-containing-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/field-masking/span-field-masking-usage.asciidoc delete mode 100644 docs/query-dsl/span/first/span-first-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/multi-term/span-multi-term-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/near/span-near-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/not/span-not-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/or/span-or-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/term/span-term-query-usage.asciidoc delete mode 100644 docs/query-dsl/span/within/span-within-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/distance-feature/distance-feature-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/more-like-this/more-like-this-full-document-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/more-like-this/more-like-this-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/percolate/percolate-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/pinned/pinned-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/script-score/script-score-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/script/script-query-usage.asciidoc delete mode 100644 docs/query-dsl/specialized/shape/shape-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/exists/exists-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/fuzzy/fuzzy-date-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/fuzzy/fuzzy-numeric-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/fuzzy/fuzzy-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/ids/ids-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/prefix/prefix-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/range/date-range-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/range/long-range-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/range/numeric-range-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/range/term-range-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/regexp/regexp-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/term/term-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/terms/terms-list-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/terms/terms-query-usage.asciidoc delete mode 100644 docs/query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc delete mode 100644 docs/query-dsl/verbatim/verbatim-and-strict-query-usage.asciidoc delete mode 100644 docs/search.asciidoc delete mode 100644 docs/search/request/explain-usage.asciidoc delete mode 100644 docs/search/request/fields-usage.asciidoc delete mode 100644 docs/search/request/from-and-size-usage.asciidoc delete mode 100644 docs/search/request/highlighting-usage.asciidoc delete mode 100644 docs/search/request/indices-boost-usage.asciidoc delete mode 100644 docs/search/request/inner-hits-usage.asciidoc delete mode 100644 docs/search/request/min-score-usage.asciidoc delete mode 100644 docs/search/request/point-in-time-usage.asciidoc delete mode 100644 docs/search/request/post-filter-usage.asciidoc delete mode 100644 docs/search/request/profile-usage.asciidoc delete mode 100644 docs/search/request/query-usage.asciidoc delete mode 100644 docs/search/request/script-fields-usage.asciidoc delete mode 100644 docs/search/request/search-after-usage.asciidoc delete mode 100644 docs/search/request/sliced-scroll-search-usage.asciidoc delete mode 100644 docs/search/request/sort-usage.asciidoc delete mode 100644 docs/search/request/source-filtering-usage.asciidoc delete mode 100644 docs/search/request/suggest-usage.asciidoc delete mode 100644 docs/search/returned-fields.asciidoc delete mode 100644 docs/search/scrolling-documents.asciidoc delete mode 100644 docs/search/search/collapsing/field-collapse-usage.asciidoc delete mode 100644 docs/search/search/rescoring/rescore-usage.asciidoc delete mode 100644 docs/search/searching-runtime-fields.asciidoc delete mode 100644 docs/search/writing-queries.asciidoc delete mode 100644 docs/timeoutplot.png delete mode 100644 docs/x-pack/security/api-key/security-api-key-usage.asciidoc delete mode 100644 docs/x-pack/security/role-mapping/role-mapping-rules.asciidoc create mode 100644 exclusion.dic delete mode 100644 src/Elastic.Clients.Elasticsearch/Serialization/ExtraSerializationData.cs create mode 100644 src/Elastic.Clients.Elasticsearch/Serialization/QueryConverter.cs rename src/Elastic.Clients.Elasticsearch/Serialization/{SourceSerialisation.cs => SourceSerialization.cs} (93%) create mode 100644 tests/Tests/Documentation/.editorconfig create mode 100644 tests/Tests/Documentation/ClientConcepts/Serialization/CustomSerializationTests.cs create mode 100644 tests/Tests/Documentation/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs create mode 100644 tests/Tests/Serialization/DefaultSourceSerializerTests.cs create mode 100644 tests/Tests/_VerifySnapshots/CustomSerializationTests.CustomizingJsonSerializerOptions.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/CustomSerializationTestsEnumAttribute.DerivingFromSystemTextJsonSerializer_ToRegisterACustomEnumConverter_BeforeBuiltInConverters.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonAttributes.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonConverterAttributes.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingAJoinField.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithCustomSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt create mode 100644 tests/Tests/_VerifySnapshots/ModellingDocumentsWithTypesTests.IndexMyDocument.verified.txt diff --git a/.editorconfig b/.editorconfig index bbafabe4e7c..aca7adeb78d 100644 --- a/.editorconfig +++ b/.editorconfig @@ -200,6 +200,9 @@ resharper_csharp_accessor_owner_body=expression_body resharper_redundant_case_label_highlighting=do_not_show resharper_redundant_argument_default_value_highlighting=do_not_show +spelling_languages=en-us,en-gb +spelling_exclusion_path=.\exclusion.dic + [Jenkinsfile] indent_style = space indent_size = 2 diff --git a/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc b/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc deleted file mode 100644 index c83fee41cb2..00000000000 --- a/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc +++ /dev/null @@ -1,498 +0,0 @@ -:github: https://github.com/elastic/elasticsearch-net - -:stackoverflow: http://stackoverflow.com - -[[elasticsearch-net-breaking-changes]] -== Elasticsearch.Net breaking changes - -This document rudimentally documents the breaking changes from 1.x to 2.x; Our 2.0 refactor comprises 1000+ commits and nearly six months of work, so if we missed anything -{github}/issues[feel free to give us a shout]! - -=== Dependency graph changes - -The first thing you might notice is that the dependency graph for the client has changed slightly. It has also been renamed from `IElasticsearchClient` to `ILowLevelElasticClient`, to align better with the high level (NEST) client and better differentiate itself. - -.... -`IElasticLowLevelClient` - ├─`ITransport` - ├──`IConnectionConfiguration` - ├───`IConnectionPool` - ├───`IConnection` - └───`Func` -.... - -a client can still be `new`'ed with no arguments - -[source,csharp] ----- -var lowLevelClient = new ElasticLowLevelClient(); ----- - -Wich will default to a <> talking to `http://localhost:9200` - -The next most common overload of the constructor is the one taking `ConnectionConfiguration` - -[source,csharp] ----- -var lowLevelClient = new ElasticLowLevelClient(connectionSettings); ----- - -There are many overloads to the constructor of <> that allow you to inject a custom connection or serializer factory if needed. -What they all have in common is that you have to specify an <> implementation e.g - -[source,csharp] ----- -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionConfiguration(pool); -var client = new ElasticLowLevelClient(settings); ----- - -Another big change in Elasticsearch.NET 2.0 is that internally we deal with `Node`s and not `Uri`s. However `nodes` in the above example can be either -an `IEnumerable` or `IEnumerable`. - -For the super advanced usecases a custom `ITransport` can be injected. - -[source,csharp] ----- -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionConfiguration(pool); -var transport = new Transport(pool); -var client = new ElasticLowLevelClient(pool); ----- - -This is what we call internally if you use the previous `ElasticLowLevelClient` constructor. -Our implementation of <> can be injected with a custom <>, <> and `IMemoryStreamFactory`. - -<> is in control of managing our request pipelining, asking connection pools for other nodes to fall over to and marking nodes dead or alive. - -Each individual moving part is further explained in the index.html[documentation]. - -=== ConnectionSettings Changes - -This lists the methods that have been renamed or removed on ConnectionConfiguration - -[source,diff] ----- -class ConnectionConfiguration`1 -- method: EnableCompressedResponses -+ method: EnableHttpCompression -- method: EnableMetrics -- method: EnableTrace -- method: ExposeRawResponse -+ method: DisableDirectStreaming -- method: HttpPipeliningEnabled -+ method: EnableHttpPipelining -- method: SetBasicAuthentication -+ method: BasicAuthentication -- method: SetBasicAuthorization -+ method: BasicAuthentication -- method: SetConnectionStatusHandler -+ method: OnRequestCompleted -- method: SetConnectTimeout -- method: SetDeadTimeout -+ method: DeadTimeout -- method: SetGlobalQueryStringParameters -+ method: GlobalQueryStringParameters -- method: SetMaxDeadTimeout -+ method: MaxDeadTimeout -- method: SetMaximumAsyncConnections -- method: SetMaxRetryTimeout -+ method: MaxRetryTimeout -- method: SetPingTimeout -+ method: PingTimeout -- method: SetProxy -+ method: Proxy -- method: SetTimeout -+ method: RequestTimeout -- method: ThrowOnElasticsearchServerExceptions -+ method: ThrowExceptions -- method: UsePrettyRequests -+ method: PrettyJson -- method: UsePrettyResponses -+ method: PrettyJson ----- - -The same goes for the values they are settings: - -[source,diff] ----- -interface IConnectionConfigurationValues -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectionStatusHandler -+ prop: OnRequestCompleted -- prop: ConnectTimeout -- prop: EnableCompressedResponses -+ prop: EnableHttpCompression -- prop: KeepRawResponse -+ prop: DisableDirectStreaming -- prop: MaximumAsyncConnections -- prop: MetricsEnabled -- prop: ThrowOnElasticsearchServerExceptions -+ prop: ThrowExceptions -- prop: Timeout -+ prop: RequestTimeout -- prop: TraceEnabled -- prop: TraceWriter -- prop: UsesPrettyRequests -+ prop: PrettyJson -- prop: UsesPrettyResponses -+ prop: PrettyJson ----- - -==== IConnectionPool - -The interface for `IConnectionPool` has been greatly simplified, its no longer in charge of mark nodes alive or dead - -[source,diff] ----- -interface IConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed ----- - -==== IConnection - -The connection interface has been stripped to the bare minimum it now only has a `Request` and `RequestAsync` method - -[source,diff] ----- -interface IConnection -- prop: AddressScheme -- method: Delete -- method: DeleteSync -- method: Get -- method: GetSync -- method: Head -- method: HeadSync -- method: Post -- method: PostSync -- method: Put -- method: PutSync -+ method: Request -+ method: RequestAsync ----- - -The methods take a `RequestData` a new state object that holds all the information to build the request. - -==== Renamed Types - -This lists the types that have been renamed - -[source,diff] ----- -- class AliasRequestParameters -+ class BulkAliasRequestParameters - -- class BasicAuthorizationCredentials -+ class BasicAuthenticationCredentials - -- class ClusterSettingsRequestParameters -+ class ClusterPutSettingsRequestParameters - -- class DeleteTemplateRequestParameters -+ class DeleteSearchTemplateRequestParameters - -- class DynamicDictionary -+ class DynamicResponse - -- class GetTemplateRequestParameters -+ class GetSearchTemplateRequestParameters - -- interface IElasticsearchResponse -+ interface IApiCallDetails - -- interface IMemoryStreamProvider -+ interface IMemoryStreamFactory - -- class IndicesExistsAliasRequestParameters -+ class AliasExistsRequestParameters - -- class IndicesExistsTemplateRequestParameters -+ class IndexTemplateExistsRequestParameters - -- class IndicesExistsTypeRequestParameters -+ class TypeExistsRequestParameters - -- class IndicesPutAliasRequestParameters -+ class PutAliasRequestParameters - -- class IndicesRecoveryRequestParameters -+ class RecoveryStatusRequestParameters - -- class InfoRequestParameters -+ class RootNodeInfoRequestParameters - -- interface IResponseWithRequestInformation -+ interface IBodyWithApiCallDetails - -- class MemoryStreamProvider -+ class MemoryStreamFactory - -- class MpercolateRequestParameters -+ class MultiPercolateRequestParameters - -- class PutTemplateRequestParameters -+ class PutIndexTemplateRequestParameters - -- class TemplateExistsRequestParameters -+ class IndexTemplateExistsRequestParameters ----- - -==== Removed Types - -This lists the removed types - -[source,diff] ----- -- class AbortBenchmarkRequestParameters -- class CallMetrics -- class ConnectionException -- class DeleteMappingRequestParameters -- class ElasticsearchAuthenticationException -- class ElasticsearchAuthException -- class ElasticsearchAuthorizationException -- class ElasticsearchResponse -- class ElasticsearchServerError -- class ElasticsearchServerException -- class EndpointState -- class FlushRequestParametersObsoleteExtensions -- interface IConnectionConfiguration -- interface IConnectionConfiguration`1 -- class IndicesDeleteAliasClientExtensions -- class IndicesDeleteAliasRequestParameters -- class IndicesExistsAliasClientExtensions -- class IndicesExistsTemplateClientExtensions -- class IndicesExistsTypeClientExtensions -- class IndicesGetFieldMappingClientExtensions -- class IndicesGetFieldMappingRequestParameters -- class IndicesPutAliasClientExtensions -- class IndicesRecoveryStatusClientExtensions -- class IndicesStatusRequestParameters -- interface IRequestTimings -- interface ITransport -- interface ITransportRequestState -- class ListBenchmarksRequestParameters -- class MaxRetryException -- class MoreLikeThisRequestParameters -- class MpercolateClientExtensions -- class NodesShutdownRequestParameters -- class PingException -- enum Replication -- class RequestMetrics -- class RequestParameters -- enum RequestType -- class Sniffer -- class SniffException -- class TermvectorRequestParameters -- class Transport -- enum TransportAddressScheme -- class TransportRequestState`1 -- class UpdateSettingsRequestParameters ----- - -==== Member Changes - -This lists changes of class members that might bite you during the upgrade - -[source,diff] ----- -class BulkRequestParameters -- method: Replication -class ClearCacheRequestParameters -- method: Filter -- method: FilterCache -- method: FilterKeys -- method: Id -- method: IdCache -- method: QueryCache -class CountRequestParameters -- method: Q -class DateTimeProvider -- method: AliveTime -class DeleteByQueryRequestParameters -- method: Consistency -- method: Q -- method: Replication -class DeleteRequestParameters -- method: Replication -class ElasticLowLevelClient -- method: AbortBenchmark -- method: AbortBenchmarkAsync -- method: Encoded -- method: IndicesDeleteMapping -- method: IndicesDeleteMappingAsync -- method: IndicesStatus -- method: IndicesStatusAsync -- method: IndicesStatusForAll -- method: IndicesStatusForAllAsync -- method: ListBenchmarks -- method: ListBenchmarksAsync -- method: Mlt -- method: MltAsync -- method: MltGet -- method: MltGetAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: NodesShutdownForAll -- method: NodesShutdownForAllAsync -- method: Termvector -+ method: Termvectors -- method: TermvectorAsync -+ method: TermvectorsAsync -- method: TermvectorGet -+ method: TermvectorsGet -- method: TermvectorGetAsync -+ method: TermvectorsGetAsync -class ElasticsearchDefaultSerializer -- method: Iterate -- method: ReadStreamAsync -- method: Stringify -class ElasticsearchResponse`1 -- prop: Metrics -- prop: NumberOfRetries -- prop: Request -- prop: RequestMethod -- prop: RequestUrl -- prop: Response -- prop: ResponseRaw -- prop: Serializer -- prop: Settings -class ExplainRequestParameters -- method: EnableSource -- method: Q -class FieldStatsRequestParameters -- method: Fields -class FluentRequestParameters`1 -- method: CopyQueryStringValuesFrom -- method: DeserializationState -class GetRequestParameters -- method: EnableSource -class HttpConnection -- prop: AddressScheme -- method: Delete -- method: DeleteSync -- method: Get -- method: GetSync -- method: Head -- method: HeadSync -- method: Post -- method: PostSync -- method: Put -- method: PutSync -interface IDateTimeProvider -- method: AliveTime -interface IElasticLowLevelClient -- method: AbortBenchmark -- method: AbortBenchmarkAsync -- method: Encoded -- method: IndicesDeleteMapping -- method: IndicesDeleteMappingAsync -- method: IndicesStatus -- method: IndicesStatusAsync -- method: IndicesStatusForAll -- method: IndicesStatusForAllAsync -- method: ListBenchmarks -- method: ListBenchmarksAsync -- method: Mlt -- method: MltAsync -- method: MltGet -- method: MltGetAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: NodesShutdownForAll -- method: NodesShutdownForAllAsync -- method: Termvector -+ method: Termvectors -- method: TermvectorAsync -+ method: TermvectorsAsync -- method: TermvectorGet -+ method: TermvectorsGet -- method: TermvectorGetAsync -+ method: TermvectorsGetAsync -- interface IElasticsearchResponse -+ interface IApiCallDetails -- prop: Metrics -- prop: NumberOfRetries -- prop: Request -- prop: RequestMethod -- prop: RequestUrl -- prop: ResponseRaw -- prop: Settings -interface IElasticsearchSerializer -- method: Stringify -- interface IMemoryStreamProvider -+ interface IMemoryStreamFactory -- method: New -class IndexRequestParameters -- method: Replication -class InMemoryConnection -- prop: AddressScheme -- prop: RecordRequests -interface IRequestConfiguration -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectTimeout -interface IRequestParameters -- prop: DeserializationState -+ prop: DeserializationOverride -- interface IResponseWithRequestInformation -+ interface IBodyWithApiCallDetails -- prop: RequestInformation -+ prop: CallDetails -- class MemoryStreamProvider -+ class MemoryStreamFactory -- method: New -class MultiGetRequestParameters -- method: EnableSource -class OptimizeRequestParameters -- method: Force -class PutMappingRequestParameters -- method: IgnoreConflicts -class RequestConfiguration -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectTimeout -class RequestConfigurationDescriptor -- method: BasicAuthorization -- method: ConnectTimeout -class SearchExistsRequestParameters -- method: Q -class SearchRequestParameters -- method: QueryCache -class SingleNodeConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class SniffingConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class SourceRequestParameters -- method: EnableSource -class StaticConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class UpdateRequestParameters -- method: Replication -class ValidateQueryRequestParameters -- method: Q ----- \ No newline at end of file diff --git a/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.md b/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.md deleted file mode 100644 index dd9c157b1e9..00000000000 --- a/docs/2.0-breaking-changes/elasticsearch-net-breaking-changes.md +++ /dev/null @@ -1,478 +0,0 @@ -#Elasticsearch.Net breaking changes - -This document rudimentally documents the breaking changes, our 2.0 refactor compromises 1000+ commits and nearly 6 months of work so if we missed anything -feel free to give us a shout! (reply to this gist) - -## Dependency graph changes - -The first thing you might notice is that the dependency graph for the client has changed slightly. It has also been renamed from `IElasticsearchClient` to `ILowLevelElasticClient`, to align better with the high level (NEST) client and better differentiate itself. - -> `IElasticLowLevelClient` - ├─`ITransport` - ├──`IConnectionConfiguration` - ├───`IConnectionPool` - ├───`IConnection` - └───`Func` - -a client can still be `new'ed` with no arguments - -```csharp -new ElasticLowLevelClient(); -``` - -Wich will default to a `SingleNodeConnectionPool` talking to `http://localhost:9200` - -The next most common overload of the constructor is the one taking `ConnectionConfiguration` - -```csharp -new ElasticLowLevelClient(connectionSettings); -``` - -There are many overloads to the constructor of `ConnectionConfiguration` that allow you to inject a custom connection or serializer factory if needed -What they all have in common is that you have to specify an `IConnectionPool` implementation e.g - -```csharp -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionConfiguration(pool); -var client = new ElasticLowLevelClient(settings); -``` - -Another big change in Elasticsearch.NET 2.0 is that internally we deal with `Node`'s and not `Uri`'s. However `nodes` in the above example can be either -an `IEnumerable` or `IEnumerable`. - -For the super advanced usecases a custom `ITransport` can be injected. - -```csharp -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionConfiguration(pool); -var transport = new Transport(pool); -var client = new ElasticLowLevelClient(pool); -``` - -This is what we call internally if you use the previous ElasticLowLevelClient constructor. -Our implementation of `ITransport` can be injected with a custom `IRequestPipelineFactory`, `IDateTimeProvider` and `IMemoryStreamFactory`. -`Transport` is in control of managing our request pipelining, asking connectionpools for other nodes to fall over to and marking nodes dead or alive. - -Each individual moving part is further explained in the documentation - -## ConnectionSettings Changes - -This lists the methods that have been renamed or removed on ConnectionConfiguration - -```diff -class ConnectionConfiguration`1 -- method: EnableCompressedResponses -+ method: EnableHttpCompression -- method: EnableMetrics -- method: EnableTrace -- method: ExposeRawResponse -+ method: DisableDirectStreaming -- method: HttpPipeliningEnabled -+ method: EnableHttpPipelining -- method: SetBasicAuthentication -+ method: BasicAuthentication -- method: SetBasicAuthorization -+ method: BasicAuthentication -- method: SetConnectionStatusHandler -+ method: OnRequestCompleted -- method: SetConnectTimeout -- method: SetDeadTimeout -+ method: DeadTimeout -- method: SetGlobalQueryStringParameters -+ method: GlobalQueryStringParameters -- method: SetMaxDeadTimeout -+ method: MaxDeadTimeout -- method: SetMaximumAsyncConnections -- method: SetMaxRetryTimeout -+ method: MaxRetryTimeout -- method: SetPingTimeout -+ method: PingTimeout -- method: SetProxy -+ method: Proxy -- method: SetTimeout -+ method: RequestTimeout -- method: ThrowOnElasticsearchServerExceptions -+ method: ThrowExceptions -- method: UsePrettyRequests -+ method: PrettyJson -- method: UsePrettyResponses -+ method: PrettyJson -``` - -The same goes for the values they are settings: - -```diff -interface IConnectionConfigurationValues -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectionStatusHandler -+ prop: OnRequestCompleted -- prop: ConnectTimeout -- prop: EnableCompressedResponses -+ prop: EnableHttpCompression -- prop: KeepRawResponse -+ prop: DisableDirectStreaming -- prop: MaximumAsyncConnections -- prop: MetricsEnabled -- prop: ThrowOnElasticsearchServerExceptions -+ prop: ThrowExceptions -- prop: Timeout -+ prop: RequestTimeout -- prop: TraceEnabled -- prop: TraceWriter -- prop: UsesPrettyRequests -+ prop: PrettyJson -- prop: UsesPrettyResponses -+ prop: PrettyJson -``` - -## IConnectionPool - -The interface for IConnectionPool has been greatly simplified, its no longer in charge of mark nodes alive or dead - -```diff -interface IConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -``` - -## IConnection - -The connection interface has been stripped to the bare minimum it now only has a `Request` and `RequestAsync` method - -```diff -interface IConnection -- prop: AddressScheme -- method: Delete -- method: DeleteSync -- method: Get -- method: GetSync -- method: Head -- method: HeadSync -- method: Post -- method: PostSync -- method: Put -- method: PutSync -+ method: Request -+ method: RequestAsync -``` - -The methods take a `RequestData` a new state object that holds all the information to build the request. - -#Renamed Types - -This lists the types that have been renamed - -```diff -- class AliasRequestParameters -+ class BulkAliasRequestParameters - -- class BasicAuthorizationCredentials -+ class BasicAuthenticationCredentials - -- class ClusterSettingsRequestParameters -+ class ClusterPutSettingsRequestParameters - -- class DeleteTemplateRequestParameters -+ class DeleteSearchTemplateRequestParameters - -- class DynamicDictionary -+ class DynamicResponse - -- class GetTemplateRequestParameters -+ class GetSearchTemplateRequestParameters - -- interface IElasticsearchResponse -+ interface IApiCallDetails - -- interface IMemoryStreamProvider -+ interface IMemoryStreamFactory - -- class IndicesExistsAliasRequestParameters -+ class AliasExistsRequestParameters - -- class IndicesExistsTemplateRequestParameters -+ class IndexTemplateExistsRequestParameters - -- class IndicesExistsTypeRequestParameters -+ class TypeExistsRequestParameters - -- class IndicesPutAliasRequestParameters -+ class PutAliasRequestParameters - -- class IndicesRecoveryRequestParameters -+ class RecoveryStatusRequestParameters - -- class InfoRequestParameters -+ class RootNodeInfoRequestParameters - -- interface IResponseWithRequestInformation -+ interface IBodyWithApiCallDetails - -- class MemoryStreamProvider -+ class MemoryStreamFactory - -- class MpercolateRequestParameters -+ class MultiPercolateRequestParameters - -- class PutTemplateRequestParameters -+ class PutIndexTemplateRequestParameters - -- class TemplateExistsRequestParameters -+ class IndexTemplateExistsRequestParameters -``` - -#Removed Types - -This lists the removed types - -```diff -- class AbortBenchmarkRequestParameters -- class CallMetrics -- class ConnectionException -- class DeleteMappingRequestParameters -- class ElasticsearchAuthenticationException -- class ElasticsearchAuthException -- class ElasticsearchAuthorizationException -- class ElasticsearchResponse -- class ElasticsearchServerError -- class ElasticsearchServerException -- class EndpointState -- class FlushRequestParametersObsoleteExtensions -- interface IConnectionConfiguration -- interface IConnectionConfiguration`1 -- class IndicesDeleteAliasClientExtensions -- class IndicesDeleteAliasRequestParameters -- class IndicesExistsAliasClientExtensions -- class IndicesExistsTemplateClientExtensions -- class IndicesExistsTypeClientExtensions -- class IndicesGetFieldMappingClientExtensions -- class IndicesGetFieldMappingRequestParameters -- class IndicesPutAliasClientExtensions -- class IndicesRecoveryStatusClientExtensions -- class IndicesStatusRequestParameters -- interface IRequestTimings -- interface ITransport -- interface ITransportRequestState -- class ListBenchmarksRequestParameters -- class MaxRetryException -- class MoreLikeThisRequestParameters -- class MpercolateClientExtensions -- class NodesShutdownRequestParameters -- class PingException -- enum Replication -- class RequestMetrics -- class RequestParameters -- enum RequestType -- class Sniffer -- class SniffException -- class TermvectorRequestParameters -- class Transport -- enum TransportAddressScheme -- class TransportRequestState`1 -- class UpdateSettingsRequestParameters -``` -#Member Changes - -This lists changes of class members that might bite you during the upgrade - -```diff -class BulkRequestParameters -- method: Replication -class ClearCacheRequestParameters -- method: Filter -- method: FilterCache -- method: FilterKeys -- method: Id -- method: IdCache -- method: QueryCache -class CountRequestParameters -- method: Q -class DateTimeProvider -- method: AliveTime -class DeleteByQueryRequestParameters -- method: Consistency -- method: Q -- method: Replication -class DeleteRequestParameters -- method: Replication -class ElasticLowLevelClient -- method: AbortBenchmark -- method: AbortBenchmarkAsync -- method: Encoded -- method: IndicesDeleteMapping -- method: IndicesDeleteMappingAsync -- method: IndicesStatus -- method: IndicesStatusAsync -- method: IndicesStatusForAll -- method: IndicesStatusForAllAsync -- method: ListBenchmarks -- method: ListBenchmarksAsync -- method: Mlt -- method: MltAsync -- method: MltGet -- method: MltGetAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: NodesShutdownForAll -- method: NodesShutdownForAllAsync -- method: Termvector -+ method: Termvectors -- method: TermvectorAsync -+ method: TermvectorsAsync -- method: TermvectorGet -+ method: TermvectorsGet -- method: TermvectorGetAsync -+ method: TermvectorsGetAsync -class ElasticsearchDefaultSerializer -- method: Iterate -- method: ReadStreamAsync -- method: Stringify -class ElasticsearchResponse`1 -- prop: Metrics -- prop: NumberOfRetries -- prop: Request -- prop: RequestMethod -- prop: RequestUrl -- prop: Response -- prop: ResponseRaw -- prop: Serializer -- prop: Settings -class ExplainRequestParameters -- method: EnableSource -- method: Q -class FieldStatsRequestParameters -- method: Fields -class FluentRequestParameters`1 -- method: CopyQueryStringValuesFrom -- method: DeserializationState -class GetRequestParameters -- method: EnableSource -class HttpConnection -- prop: AddressScheme -- method: Delete -- method: DeleteSync -- method: Get -- method: GetSync -- method: Head -- method: HeadSync -- method: Post -- method: PostSync -- method: Put -- method: PutSync -interface IDateTimeProvider -- method: AliveTime -interface IElasticLowLevelClient -- method: AbortBenchmark -- method: AbortBenchmarkAsync -- method: Encoded -- method: IndicesDeleteMapping -- method: IndicesDeleteMappingAsync -- method: IndicesStatus -- method: IndicesStatusAsync -- method: IndicesStatusForAll -- method: IndicesStatusForAllAsync -- method: ListBenchmarks -- method: ListBenchmarksAsync -- method: Mlt -- method: MltAsync -- method: MltGet -- method: MltGetAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: NodesShutdownForAll -- method: NodesShutdownForAllAsync -- method: Termvector -+ method: Termvectors -- method: TermvectorAsync -+ method: TermvectorsAsync -- method: TermvectorGet -+ method: TermvectorsGet -- method: TermvectorGetAsync -+ method: TermvectorsGetAsync -- interface IElasticsearchResponse -+ interface IApiCallDetails -- prop: Metrics -- prop: NumberOfRetries -- prop: Request -- prop: RequestMethod -- prop: RequestUrl -- prop: ResponseRaw -- prop: Settings -interface IElasticsearchSerializer -- method: Stringify -- interface IMemoryStreamProvider -+ interface IMemoryStreamFactory -- method: New -class IndexRequestParameters -- method: Replication -class InMemoryConnection -- prop: AddressScheme -- prop: RecordRequests -interface IRequestConfiguration -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectTimeout -interface IRequestParameters -- prop: DeserializationState -+ prop: DeserializationOverride -- interface IResponseWithRequestInformation -+ interface IBodyWithApiCallDetails -- prop: RequestInformation -+ prop: CallDetails -- class MemoryStreamProvider -+ class MemoryStreamFactory -- method: New -class MultiGetRequestParameters -- method: EnableSource -class OptimizeRequestParameters -- method: Force -class PutMappingRequestParameters -- method: IgnoreConflicts -class RequestConfiguration -- prop: BasicAuthorizationCredentials -+ prop: BasicAuthenticationCredentials -- prop: ConnectTimeout -class RequestConfigurationDescriptor -- method: BasicAuthorization -- method: ConnectTimeout -class SearchExistsRequestParameters -- method: Q -class SearchRequestParameters -- method: QueryCache -class SingleNodeConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class SniffingConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class SourceRequestParameters -- method: EnableSource -class StaticConnectionPool -- prop: AcceptsUpdates -+ prop: SupportsReseeding -- method: GetNext -- method: MarkAlive -- method: MarkDead -- method: UpdateNodeList -+ method: Reseed -class UpdateRequestParameters -- method: Replication -class ValidateQueryRequestParameters -- method: Q -``` \ No newline at end of file diff --git a/docs/2.0-breaking-changes/nest-breaking-changes.asciidoc b/docs/2.0-breaking-changes/nest-breaking-changes.asciidoc deleted file mode 100644 index ed8281eb002..00000000000 --- a/docs/2.0-breaking-changes/nest-breaking-changes.asciidoc +++ /dev/null @@ -1,3218 +0,0 @@ -:github: https://github.com/elastic/elasticsearch-net - -:stackoverflow: http://stackoverflow.com - -[[nest-breaking-changes]] -== NEST breaking changes - -This document rudimentally documents the breaking changes from 1.x to 2.x; Our 2.0 refactor comprises 1000+ commits and nearly six months of work, so if we missed anything -{github}/issues[feel free to give us a shout]! - -=== Dependency graph changes - -The first thing you might notice is that the dependency graph for the client has changed slightly - -.... -`IElasticClient` - ├─`ITransport` - ├──`IConnectionSettings` - ├───`IConnectionPool` - ├───`IConnection` - └───`Func` -.... - -a client can still be `new`'ed with no arguments - -[source,csharp] ----- -var client = new ElasticClient(); ----- - -Wich will default to a <> talking to `http://localhost:9200` - -The next most common overload of the constructor is the one taking `ConnectionSettings` - -[source,csharp] ----- -var client = new ElasticClient(connectionSettings); ----- - -There are many overloads to the constructor of <> that allow you to inject a custom connection or serializer factory if needed -What they all have in common is that you have to specify an <> implementation e.g - -[source,csharp] ----- -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionSettings(pool); -var client = new ElasticClient(settings); ----- - -Another big change in Elasticsearch.NET 2.0 is that internally we deal with `Node`'s and not `Uri`'s. However `nodes` in the above example can be either -an `IEnumerable` or `IEnumerable`. - -For the super advanced use cases a custom `ITransport` can be injected. - -[source,csharp] ----- -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionSettings(pool); -var transport = new Transport(pool); -var client = new ElasticClient(pool); ----- - -This is what we call internally if you use the previous `ElasticClient` constructor. -Our implementation of <> can be injected with a custom <>, <> and `IMemoryStreamFactory`. - -<> is in control of managing our request pipelining, asking connection pools for other nodes to fall over to and marking nodes dead or alive. - -Each individual moving part is further explained in the index.html[documentation]. - -=== Inferred types - -Many places that only took a string now take a more strongly typed object, <<`Id`,ids-inference>>, <>, <>, <>, <>, `Type`, `Types`, <`>>. It's good to know that in most cases you can still implicitly convert to them from `string`, `long`, `Guid` where it makes sense. - -If you are using `C# 6` you can also staticly import `using static Nest.Infer`. This will allow you to write - -[source,csharp] ----- -Field(p=>p.Name) ----- - -any where that takes a `Field` - -[source,csharp] ----- -Field(p=>p.Name).And(p=>p.Description).And("field") ----- - -anywhere that takes `Fields` - -[source,csharp] ----- -Index() ----- - -for `Index` and so on and so forth. - -If you are using the fluent API, using these is not required (but still possible), as the fluent API is already expression based. - -=== Filters are **GONE** - -In `Elasticsearch 2.0` https://www.elastic.co/guide/en/elasticsearch/reference/2.3/breaking_20_query_dsl_changes.html#_queries_and_filters_merged[queries and filter constructs have merged into one concept called queries], `NEST 2.0` reflects this, so if you are looking for the `AndFilter` it is now -called the `AndQuery` but beware that some of these filters have been obsoleted and chances are high https://www.elastic.co/blog/all-about-elasticsearch-filter-bitsets[you were using them wrong!]. - -=== Isolated descriptors - -In `NEST 1.x` we took pride in being a 1 to 1 mapping with the Elasticsearch API, however in some cases we hid the real depth of parameters. - -Example in `NEST 1.x` you could add sorts on `Search()` using: - -[source,csharp] ----- -client.Search(s=>s - .SortAscending(...) - .SortScript(...) -) ----- - -in `NEST 2.x` you have to stoop down a level first - -[source,csharp] ----- -client.Search(s=>s - .Sort(ss=>ss - .Field() - .Script() - .Ascending() - .GeoDistance() - ) -) ----- - -This encapsulates all of the sort options properly and adheres stricter to the 1-to-1 mapping. NEST 1.x did also contain this full descriptor however the mix and matching of the convenience methods of the parent meant that some fluent methods were additive whilst others overwrote what was previously set. With NEST 2.0, this discrepancy is gone! - -This happens in more places e.g index settings and mappings. - -=== Aggregator - -If you are using the object initializer syntax `*Aggregator` is now `*Aggregation` - -=== Attribute-based mapping - -The single `ElasticPropertyAttribute` has been broken up into individual attributes per property type. - -For instance, the following: - -[source,csharp] ----- -[ElasticType(Name = "othername", IdProperty = "MyId")] -public class Foo -{ - [ElasticProperty(Type = FieldType.String)] - public Guid MyId { get; set; } - - [ElasticProperty(Type = FieldType.String)] - public string Name { get; set; } - - [ElasticProperty(Type = FieldType.String, Analyzer = "myanalyzer", TermVector = TermVectorOption.WithOffsets)] - public string Description { get; set; } - - [ElasticProperty(Type = FieldType.Date, Format = "mmmddyyyy")] - public DateTime Date { get; set; } - - [ElasticProperty(Type = FieldType.Integer, Coerce = true)] - public int Number { get; set; } - - [ElasticProperty(Type = FieldType.Nested, IncludeInParent = true)] - public List Bars { get; set; } -} ----- - -becomes - -[source,csharp] ----- -[ElasticsearchType(Name = "othername", IdProperty = "MyId")] -public class Foo -{ - [String] - public Guid MyId { get; set; } - - [String] - public string Name { get; set; } - - [String(Analyzer = "myanalyzer", TermVector = TermVectorOption.WithOffsets)] - public string Description { get; set; } - - [Date(Format = "mmddyyyy")] - public DateTime Date { get; set; } - - [Number(NumberType.Integer, Coerce = true, DocValues = true)] - public int Number { get; set; } - - [Nested(IncludeInParent = true)] - public List Bars { get; set; } -} ----- - -Aside from a simpler and cleaner API, this allows each attribute to only reflect the options that are available for the particular type instead of exposing options that may not be relevant (as `ElasticPropertyAttribute` did). - -`MapFromAttributes()` has also been renamed to `AutoMap()` to better reflect that it doesn't only depend on properties being marked with attributes. It will also infer the type based on the CLR type if no attribute is present. - -=== `TimeSpan` automapped as `long` (ticks) - -`System.TimeSpan` is now automatically mapped as a `long` representing the number of ticks within the timeSpan, allowing for range in addition to term queries. NEst 1.x automatically mapped `TimeSpan` as a string and whilst NEST 2.0 is able to deserialize strings into `TimeSpan` instances as before, it will not automatically serialize `TimeSpan` ***into*** strings when indexing. In order to achieve this, you will need to register a json converter, either by deriving from `JsonNetSerializer` and overriding `ContractConverters` or by attributing the property with `[JsonConverter(typeof(ConverterTypeName))]`. A example of a converter for serializing/deserializing string values for `TimeSpan` is - -[source,csharp] ----- -public class StringTimeSpanConverter : JsonConverter -{ - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - if (value == null) - writer.WriteNull(); - else - { - var timeSpan = (TimeSpan)value; - writer.WriteValue(timeSpan.ToString()); - } - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - if (!objectType.IsGenericType || objectType.GetGenericTypeDefinition() != typeof(Nullable<>)) - throw new JsonSerializationException($"Cannot convert null value to {objectType}."); - - return null; - } - if (reader.TokenType == JsonToken.String) - { - return TimeSpan.Parse((string)reader.Value); - } - - throw new JsonSerializationException($"Cannot convert token of type {reader.TokenType} to {objectType}."); - } - - public override bool CanConvert(Type objectType) => objectType == typeof(TimeSpan) || objectType == typeof(TimeSpan?); -} ----- - -=== Serialization settings - -Serialization settings are now configurable through `ConnectionSettings` constructor taking a factory function that returns an instance of `IElasticsearchSerializer`. - - -[source,csharp] ----- -var setting = new ConnectionSettings(/** settings */); - -setting.AddContractJsonConverters(type => new MyPrettyConverter(), type => new SomeOtherConverter()); -setting.SetJsonSerializerSettingsModifier(settings => settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); ----- - -becomes - -[source,csharp] ----- -var settings = new ConnectionSettings(connectionPool, connectionSettings => new MyJsonNetSerializer(connectionSettings)) - -public class MyJsonNetSerializer : JsonNetSerializer -{ - public MyJsonNetSerializer(IConnectionSettingsValues settings) : base(settings) - { - } - - protected override void ModifyJsonSerializerSettings(JsonSerializerSettings settings) - { - settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; - } - - protected override IList> ContractConverters => - new List> - { - type => new MyPrettyConverter(), - type => new SomeOtherConverter() - }; -} ----- - -=== Renamed Types - -[source,diff] ----- -- class AggregationDescriptor`1 -+ class AggregationContainerDescriptor`1 - -- class AliasRequest -+ class BulkAliasRequest - -- class AllFieldMapping -+ class AllField - -- class AllocateClusteRerouteCommand -+ class AllocateClusterRerouteCommand - -- class AnalysisSettings -+ class Analysis - -- class AndFilter -+ class AndQuery - -- class AverageAggregator -+ class AverageAggregation - -- class AzureRepositoryDescriptor -+ class AzureRepositorySettingsDescriptor - -- class BoolFilter -+ class BoolQuery - -- class CardinalityAggregator -+ class CardinalityAggregation - -- class ChildrenAggregator -+ class ChildrenAggregation - -- class DateHistogramAggregator -+ class DateHistogramAggregation - -- class DateRangeAggregator -+ class DateRangeAggregation - -- enum DynamicMappingOption -+ enum DynamicMapping - -- class ExistsFilter -+ class ExistsQuery - -- class ExtendedStatsAggregator -+ class ExtendedStatsAggregation - -- enum FieldDataLoading -+ enum FielddataLoading - -- class FieldDataStats -+ class FielddataStats - -- class FileSystemRepositoryDescriptor -+ class FileSystemRepositorySettingsDescriptor - -- class FilterAggregator -+ class FilterAggregation - -- class FiltersAggregator -+ class FiltersAggregation - -- class GeoBoundingBoxFilter -+ class GeoBoundingBoxQuery - -- class GeoBoundsAggregator -+ class GeoBoundsAggregation - -- class GeoDistanceAggregator -+ class GeoDistanceAggregation - -- class GeoDistanceFilter -+ class GeoDistanceQuery - -- class GeoDistanceRangeFilter -+ class GeoDistanceRangeQuery - -- class GeoHashCellFilter -+ class GeoHashCellQuery - -- class GeoIndexedShapeFilter -+ class GeoIndexedShapeQuery - -- class GeoPolygonFilter -+ class GeoPolygonQuery - -- class GeoShapeCircleFilter -+ class GeoShapeCircleQuery - -- class GeoShapeEnvelopeFilter -+ class GeoShapeEnvelopeQuery - -- class GeoShapeLineStringFilter -+ class GeoShapeLineStringQuery - -- class GeoShapeMultiLineStringFilter -+ class GeoShapeMultiLineStringQuery - -- class GeoShapeMultiPointFilter -+ class GeoShapeMultiPointQuery - -- class GeoShapeMultiPolygonFilter -+ class GeoShapeMultiPolygonQuery - -- class GeoShapePointFilter -+ class GeoShapePointQuery - -- class GeoShapePolygonFilter -+ class GeoShapePolygonQuery - -- class GlobalAggregator -+ class GlobalAggregation - -- class HasChildFilter -+ class HasChildQuery - -- class HasParentFilter -+ class HasParentQuery - -- class HdfsRepositoryDescriptor -+ class HdfsRepositorySettingsDescriptor - -- class HistogramAggregator -+ class HistogramAggregation - -- interface IAndFilter -+ interface IAndQuery - -- interface IAverageAggregator -+ interface IAverageAggregation - -- interface IBoolFilter -+ interface IBoolQuery - -- interface IBucketAggregator -+ interface IBucketAggregation - -- interface ICardinalityAggregator -+ interface ICardinalityAggregation - -- interface IChildrenAggregator -+ interface IChildrenAggregation - -- interface IDateHistogramAggregator -+ interface IDateHistogramAggregation - -- interface IDateRangeAggregator -+ interface IDateRangeAggregation - -- class IdsFilter -+ class IdsQuery - -- class IdsFilterDescriptor -+ class IdsQueryDescriptor - -- interface IExistsFilter -+ interface IExistsQuery - -- interface IExtendedStatsAggregator -+ interface IExtendedStatsAggregation - -- interface IFieldNameFilter -+ interface IFieldNameQuery - -- interface IFilter -+ interface IQuery - -- interface IFilterAggregator -+ interface IFilterAggregation - -- interface IFiltersAggregator -+ interface IFiltersAggregation - -- interface IGeoBoundingBoxFilter -+ interface IGeoBoundingBoxQuery - -- interface IGeoBoundsAggregator -+ interface IGeoBoundsAggregation - -- interface IGeoDistanceAggregator -+ interface IGeoDistanceAggregation - -- interface IGeoDistanceFilter -+ interface IGeoDistanceQuery - -- interface IGeoDistanceRangeFilter -+ interface IGeoDistanceRangeQuery - -- interface IGeoHashCellFilter -+ interface IGeoHashCellQuery - -- interface IGeoIndexedShapeFilter -+ interface IGeoIndexedShapeQuery - -- interface IGeoPolygonFilter -+ interface IGeoPolygonQuery - -- interface IGeoShapeCircleFilter -+ interface IGeoShapeCircleQuery - -- interface IGeoShapeEnvelopeFilter -+ interface IGeoShapeEnvelopeQuery - -- interface IGeoShapeLineStringFilter -+ interface IGeoShapeLineStringQuery - -- interface IGeoShapeMultiLineStringFilter -+ interface IGeoShapeMultiLineStringQuery - -- interface IGeoShapeMultiPointFilter -+ interface IGeoShapeMultiPointQuery - -- interface IGeoShapeMultiPolygonFilter -+ interface IGeoShapeMultiPolygonQuery - -- interface IGeoShapePointFilter -+ interface IGeoShapePointQuery - -- interface IGeoShapePolygonFilter -+ interface IGeoShapePolygonQuery - -- interface IGlobalAggregator -+ interface IGlobalAggregation - -- interface IHasChildFilter -+ interface IHasChildQuery - -- interface IHasParentFilter -+ interface IHasParentQuery - -- interface IHistogramAggregator -+ interface IHistogramAggregation - -- interface IIdsFilter -+ interface IIdsQuery - -- interface IIndicesFilter -+ interface IIndicesQuery - -- interface ILimitFilter -+ interface ILimitQuery - -- interface IMatchAllFilter -+ interface IMatchAllQuery - -- interface IMaxAggregator -+ interface IMaxAggregation - -- interface IMetricAggregator -+ interface IMetricAggregation - -- interface IMinAggregator -+ interface IMinAggregation - -- interface IMissingAggregator -+ interface IMissingAggregation - -- interface IMissingFilter -+ interface IMissingQuery - -- class IndicesFilter -+ class IndicesQuery - -- interface INestedAggregator -+ interface INestedAggregation - -- interface INestedFilter -+ interface INestedQuery - -- interface INotFilter -+ interface INotQuery - -- interface IOrFilter -+ interface IOrQuery - -- interface IPercentilesAggregator -+ interface IPercentilesAggregation - -- interface IPrefixFilter -+ interface IPrefixQuery - -- interface IRangeAggregator -+ interface IRangeAggregation - -- interface IRangeFilter -+ interface IRangeQuery - -- interface IRegexpFilter -+ interface IRegexpQuery - -- interface IRepository -+ interface ISnapshotRepository - -- interface IReverseNestedAggregator -+ interface IReverseNestedAggregation - -- interface IScriptedMetricAggregator -+ interface IScriptedMetricAggregation - -- interface IScriptFilter -+ interface IScriptQuery - -- interface ISignificantTermsAggregator -+ interface ISignificantTermsAggregation - -- interface ISumAggregator -+ interface ISumAggregation - -- interface ITermFilter -+ interface ITermQuery - -- interface ITermsAggregator -+ interface ITermsAggregation - -- interface ITermsFilter -+ interface ITermsQuery - -- interface ITopHitsAggregator -+ interface ITopHitsAggregation - -- interface ITypeFilter -+ interface ITypeQuery - -- interface IValueCountAggregator -+ interface IValueCountAggregation - -- class LimitFilter -+ class LimitQuery - -- class MatchAllFilter -+ class MatchAllQuery - -- class MatchAllFilterDescriptor -+ class MatchAllQueryDescriptor - -- class MaxAggregator -+ class MaxAggregation - -- class MinAggregator -+ class MinAggregation - -- class MissingAggregator -+ class MissingAggregation - -- class MissingFilter -+ class MissingQuery - -- class NestedAggregator -+ class NestedAggregation - -- class NestedFilter -+ class NestedQuery - -- class NotFilter -+ class NotQuery - -- class OrFilter -+ class OrQuery - -- class PercentilesAggregator -+ class PercentilesAggregation - -- class PrefixFilter -+ class PrefixQuery - -- class RangeAggregator -+ class RangeAggregation - -- class RawFilter -+ class RawQuery - -- class ReadOnlyUrlRepositoryDescriptor -+ class ReadOnlyUrlRepositorySettingsDescriptor - -- class RegexpFilter -+ class RegexpQuery - -- class ReverseNestedAggregator -+ class ReverseNestedAggregation - -- class S3RepositoryDescriptor -+ class S3RepositorySettingsDescriptor - -- class ScriptFilter -+ class ScriptQuery - -- class SignificantTermsAggregator -+ class SignificantTermsAggregation - -- class StatsAggregator -+ class StatsAggregation - -- class SuggestOption -+ class Suggest - -- class SumAggregator -+ class SumAggregation - -- class TermFilter -+ class TermQuery - -- class TermsAggregator -+ class TermsAggregation - -- class TermsFilter -+ class TermsQuery - -- enum TermVectorOption -+ enum TermVector - -- class TopHitsAggregator -+ class TopHitsAggregation - -- class TypeFilter -+ class TypeQuery - -- class TypeFilterDescriptor -+ class TypeQueryDescriptor - -- class ValueCountAggregator -+ class ValueCountAggregation ----- - -==== Removed Types - -[source,diff] ----- -- class AbortBenchmarkDescriptor -- class AbortBenchmarkRequest -- class AcknowledgedResponse -- class AggregationConverter -- class AliasExtensions -- class AllFieldMappingDescriptor -- class AnalysisSettingsConverter -- class AnalyzerCollectionConverter -- class AnalyzerFieldMapping -- class AnalyzerFieldMappingDescriptor`1 -- class AndFilterDescriptor -- class AsciiFoldingTokenFilter -- class AttachmentMapping -- class AttachmentMappingDescriptor`1 -- class BaseFacetDescriptor`2 -- class BasePathDescriptor`2 -- class BasePathRequest`1 -- class BaseRequest`1 -- class BaseResponse -- class BaseSuggestDescriptor`1 -- class BinaryMapping -- class BinaryMappingDescriptor`1 -- class BoolBaseFilterDescriptor -- class BoolBaseQueryDescriptor -- class BooleanMapping -- class BooleanMappingDescriptor`1 -- class BoolFilterDescriptor`1 -- class BoostFactorFunction`1 -- class BoostFieldMapping -- class BoostFieldMappingDescriptor`1 -- class BucketAggregationBaseDescriptor`2 -- class BucketAggregator -- class BucketWithDocCount -- class BucketWithDocCount`1 -- class BulkOperationDescriptorBase -- class BulkOperationResponseItem -- class BulkOperationResponseItemConverter -- class CategorySuggestDescriptor`1 -- class CatFielddataRecordConverter -- class CatThreadPoolRecordConverter -- class CharFilterCollectionConverter -- enum ChildScoreType -- class ClusterCpu -- class ClusterOs -- class ClusterOsMemory -- class ClusterRerouteCommandCollectionConverter -- class ClusterSettingsDescriptor -- class ClusterSettingsRequest -- class CommonGramsTokenFilter -- class CompletionMapping -- class CompletionMappingDescriptor`1 -- class CompletionSuggestDescriptor`1 -- class CompositeJsonConverter`2 -- class CompoundWordTokenFilter -- class ConditionlessFilterDescriptor`1 -- class ConnectionSettings`1 -- class CoordinatedRequestObserver`1 -- class CorePropertiesDescriptor`1 -- class CountExtensions -- class CreateAliasDescriptor -- class CreateAliasOperation -- class CreateIndexExtensions -- class CreateWarmerDescriptor -- class CustomBoostFactorQuery -- class CustomBoostFactorQueryDescriptor`1 -- class CustomFiltersScoreQueryDescriptor`1 -- class CustomJsonConverter -- class CustomScoreQuery -- class CustomScoreQueryDescriptor`1 -- class DateEntry -- class DateExpressionRange -- class DateHistogramFacet -- class DateHistogramFacetDescriptor`1 -- class DateHistogramFacetRequest -- class DateMapping -- class DateMappingDescriptor`1 -- class DateRange -- class DateRangeFacet -- enum DateRounding -- class DeleteAliasDescriptor`1 -- class DeleteByQueryIndices -- class DeleteExtensions -- class DeleteIndexExtensions -- class DeleteMappingDescriptor`1 -- class DeleteMappingRequest -- class DeleteMappingRequest`1 -- class DeleteTemplateDescriptor -- class DeleteTemplateRequest -- class DelimitedPayloadTokenFilter -- class DescriptorForAttribute -- class DictionaryDecompounderTokenFilter -- class DictionaryKeysAreNotPropertyNamesJsonConverter -- class DismaxQuery -- class DismaxQueryJsonConverter -- class DispatchException -- class Document -- class DocumentConverter -- class DocumentOptionalPathBase`1 -- class DocumentOptionalPathBase`2 -- class DocumentOptionalPathDescriptor`3 -- class DocumentPathBase`1 -- class DocumentPathBase`2 -- class DocumentPathDescriptor`3 -- class DslException -- class DynamicMappingOptionConverter -- class DynamicTemplatesConverter -- class DynamicTemplatesDescriptor`1 -- class EdgeNGramTokenFilter -- class ElasticAttributes -- class ElasticCoreTypeConverter -- class ElasticInferrer -- class ElasticPropertyAttribute -- class ElasticsearchPathInfo`1 -- class ElasticTypeAttribute -- class ElasticTypeConverter -- class ElasticTypesConverter -- class ElisionTokenFilter -- class EmptyResponse -- class ExistsExtensions -- class ExistsFilterDescriptor -- class ExpFunction`1 -- class ExplainDescriptor -- class ExplainGet`1 -- class ExplainRequest -- class ExpressionVisitor -- class ExternalFieldDeclaration -- class ExternalFieldDeclarationDescriptor`1 -- class Facet -- class FacetContainer -- class FacetConverter -- class FacetItem -- class FacetRequest -- class FieldDataFilter -- class FieldDataFilterDescriptor -- class FieldDataFrequencyFilter -- class FieldDataFrequencyFilterDescriptor -- class FieldDataMapping -- enum FieldDataNonStringFormat -- class FieldDataNonStringMapping -- class FieldDataNonStringMappingDescriptor -- class FieldDataRegexFilter -- class FieldDataRegexFilterDescriptor -- enum FieldDataStringFormat -- class FieldDataStringMapping -- class FieldDataStringMappingDescriptor -- enum FieldIndexOption -- class FieldMappingConverter -- class FieldNameFilterConverter`1 -- class FieldNameQueryConverter`1 -- class FieldNamesFieldMapping -- class FieldNamesFieldMappingDescriptor`1 -- class FieldSelection`1 -- class FieldValueFactor`1 -- class FieldValueFactorDescriptor`1 -- class Filter`1 -- class FilterAggregatorConverter -- class FilterBase -- class FilterCacheStats -- class FilterContainer -- class FilterDescriptor`1 -- class FilterFacet -- class FiltersAggregatorConverter -- class FilterScoreQuery -- class FilterScoreQueryDescriptor`1 -- class FixedIndexTypePathBase`1 -- class FixedIndexTypePathDescriptor`2 -- class FluentFieldList`1 -- class ForceStringReader -- class FunctionScoreDecayFieldDescriptor -- class FunctionScoreDecayFunction`1 -- class FunctionScoreFunction`1 -- class FunctionScoreFunctionsDescriptor`1 -- class FuzzinessConverter -- class FuzzyLikeThisQuery -- class FuzzyLikeThisQueryDescriptor`1 -- class FuzzyQueryJsonConverter -- class FuzzyStringQuery -- class GaussFunction`1 -- class GenericMapping -- class GenericMappingDescriptor`1 -- class GeoBoundingBoxFilterDescriptor -- class GeoBoundingFilterConverter -- enum GeoDistance -- class GeoDistanceFacet -- class GeoDistanceFacetDescriptor`1 -- class GeoDistanceFacetRequest -- class GeoDistanceFilterConverter -- class GeoDistanceFilterDescriptor -- class GeoDistanceRange -- class GeoDistanceRangeFilterConverter -- class GeoDistanceRangeFilterDescriptor -- class GeoHashAggregationDescriptor`1 -- class GeoHashAggregator -- class GeoHashCellFilterConverter -- class GeoHashCellFilterDescriptor -- class GeoIndexedShapeFilterDescriptor -- class GeoLocationSuggestDescriptor`1 -- class GeoPointMapping -- class GeoPointMappingDescriptor`1 -- class GeoPolygonFilterDescriptor -- class GeoPolygonFilterJsonReader -- class GeoPrecision -- class GeoPrecisionConverter -- enum GeoPrecisionUnit -- class GeoShape -- class GeoShapeCircleFilterDescriptor -- class GeoShapeConverterBase -- class GeoShapeEnvelopeFilterDescriptor -- class GeoShapeFilterJsonReader -- class GeoShapeLineStringFilterDescriptor -- class GeoShapeMapping -- class GeoShapeMappingDescriptor`1 -- class GeoShapeMultiLineStringFilterDescriptor -- class GeoShapeMultiPointFilterDescriptor -- class GeoShapeMultiPolygonFilterDescriptor -- class GeoShapePointFilterDescriptor -- class GeoShapePolygonFilterDescriptor -- class GeoShapeQueryJsonReader -- enum GeoUnit -- class GetExtensions -- class GetFieldMappingRequest`1 -- class GetFromUpdate -- enum GetIndexFeature -- class GetMappingRequest`1 -- class GetRepositoryResponseConverter -- class GetTemplateDescriptor -- class GetTemplateRequest -- class GlobalStatsResponse -- class HasChildFilterDescriptor`1 -- class HasParentFilterDescriptor`1 -- class HealthResponse -- class HfdsRepository -- class HighlightRequest -- class HistogramFacet -- class HistogramFacetDescriptor`1 -- class HistogramFacetItem -- class HistogramFacetRequest -- class HtmlStripCharFilter -- class HunspellTokenFilter -- class HyphenationDecompounderTokenFilter -- interface IAggregationDescriptor -- interface IAliasRequest -- interface IAllFieldMapping -- interface IAnalysisSetting -- interface IAnalyzerFieldMapping -- interface IBoostFieldMapping -- interface IBucketWithCountAggregation -- interface IClusterSettingsRequest -- interface ICreateAliasOperation -- interface ICustomBoostFactorQuery -- interface ICustomFiltersScoreQuery -- interface ICustomJson -- interface ICustomJsonReader`1 -- interface ICustomScoreQuery -- interface IDateHistogramFacetRequest -- class IdCacheStats -- interface IDeleteMappingRequest -- interface IDeleteMappingRequest`1 -- interface IDeleteTemplateRequest -- class IdFieldMapping -- class IdFieldMappingDescriptor -- interface IDocument -- interface IDocumentOptionalPath`1 -- interface IDocumentOptionalPath`2 -- class IdsQueryProperDescriptor -- interface IElasticCoreType -- interface IElasticPropertyAttribute -- interface IElasticPropertyVisitor -- interface IElasticsearchPathInfo -- interface IElasticType -- interface IEmptyResponse -- interface IExplainRequest -- interface IExternalFieldDeclaration -- interface IFacet -- interface IFacet`1 -- interface IFacetContainer -- interface IFacetDescriptor`1 -- interface IFacetRequest -- interface IFieldNamesFieldMapping -- interface IFieldSelection`1 -- interface IFilterContainer -- interface IFilterScoreQuery -- interface IFixedIndexTypePath`1 -- interface IFunctionScoreFunction -- interface IFuzzyLikeThisQuery -- interface IGeoDistanceFacetRequest -- interface IGeoHashAggregator -- interface IGeoShapeBaseFilter -- interface IGetFieldMappingRequest`1 -- interface IGetMappingRequest`1 -- interface IGetTemplateRequest -- interface IGlobalStatsResponse -- interface IHealthResponse -- interface IHighlightRequest -- interface IHistogramFacetRequest -- interface IIdFieldMapping -- interface IIndexFieldMapping -- interface IIndexNamePath`1 -- interface IIndexOptionalNamePath`1 -- interface IIndexOptionalPath`1 -- interface IIndexPath`1 -- interface IIndexSettingsResponse -- interface IIndexTypePath`1 -- interface IIndicesOperationResponse -- interface IIndicesOptionalExplicitAllPath`1 -- interface IIndicesOptionalPath`1 -- interface IIndicesOptionalTypesNamePath`1 -- interface IIndicesOptionalTypesOptionalFieldsPath`1 -- interface IIndicesOptionalTypesOptionalFieldsPath`2 -- interface IIndicesStatusRequest -- interface IIndicesTypePath`1 -- interface IInfoRequest -- interface IIp4RangeAggregator -- interface IMoreLikeThisRequest -- interface IMoreLikeThisRequest`1 -- interface IMultiTermVectorDocumentDescriptor -- interface IMultiTermVectorHit -- interface IMultiTermVectorResponse -- interface INamePath`1 -- class IndexAliases -- class IndexDocStats -- class IndexedGeoShape -- class IndexFieldMapping -- class IndexFieldMappingDescriptor -- class IndexMetadata -- class IndexNameMarker -- class IndexNameMarkerConverter -- class IndexNameMarkerExtensions -- class IndexNamePathBase`1 -- class IndexNamePathBase`2 -- class IndexNamePathDescriptor`3 -- class IndexOptionalNamePathBase`1 -- class IndexOptionalNamePathDescriptor`2 -- class IndexOptionalPathBase`1 -- class IndexOptionalPathDescriptorBase`2 -- class IndexPathBase`1 -- class IndexPathDescriptorBase`2 -- class IndexSettingsConverter -- class IndexSettingsResponse -- class IndexSettingsResponseConverter -- class IndexSizeStats -- class IndexStatus -- class IndexTypePathBase`1 -- class IndexTypePathBase`2 -- class IndexTypePathDescriptor`2 -- class IndexTypePathDescriptor`3 -- class IndicesExistsAliasDescriptor -- class IndicesExistsAliasRequest -- class IndicesExistsTemplateDescriptor -- class IndicesExistsTemplateRequest -- class IndicesExistsTypeDescriptor -- class IndicesExistsTypeRequest -- class IndicesFilterDescriptor`1 -- class IndicesOperationResponse -- class IndicesOptionalExplicitAllPathBase`1 -- class IndicesOptionalExplicitAllPathDescriptor`2 -- class IndicesOptionalPathBase`1 -- class IndicesOptionalPathDescriptor`2 -- class IndicesOptionalTypesNamePathBase`1 -- class IndicesOptionalTypesNamePathDescriptor`2 -- class IndicesOptionalTypesOptionalFieldsPathBase`1 -- class IndicesOptionalTypesOptionalFieldsPathBase`2 -- class IndicesOptionalTypesOptionalFieldsPathDescriptor`3 -- class IndicesRecoveryDescriptor -- class IndicesRecoveryRequest -- class IndicesResponse -- class IndicesShardsIndexStats -- class IndicesShardsIndexStatsMetrics -- class IndicesShardsStats -- class IndicesStatusDescriptor -- class IndicesStatusRequest -- class IndicesTypePathBase`1 -- class IndicesTypePathBase`2 -- class IndicesTypePathDescriptor`3 -- interface INestSerializable -- interface INestSerializer -- class InfoDescriptor -- class InfoRequest -- interface INodeIdOptionalPath`1 -- interface INodeInfoResponse -- interface INodesShutdownRequest -- interface INodesShutdownResponse -- interface INodeStatsResponse -- class Ip4Range -- class Ip4RangeAggregationDescriptor`1 -- class Ip4RangeAggregator -- interface IPathInfo`1 -- interface IPercentileRanksAggregaor -- class IPMapping -- class IPMappingDescriptor`1 -- interface IPropertyMapping -- interface IPutTemplateRequest -- interface IQueryFilter -- interface IQueryPath`1 -- interface IQueryPath`2 -- interface IRangeFacetRequest`1 -- interface IRegisterPercolateResponse -- interface IRepositoryOptionalPath`1 -- interface IRepositoryPath`1 -- interface IRepositorySnapshotOptionalPath`1 -- interface IRepositorySnapshotPath`1 -- interface IRootInfoResponse -- interface IRoutingFieldMapping -- interface ISearchTemplateRequest`1 -- interface ISizeFieldMapping -- interface ISourceFieldMapping -- interface ISourceFilter -- interface ISpecialField -- interface IStatisticalFacetRequest -- interface IStatsAggregator -- interface IStatusResponse -- interface IStringFuzzyQuery -- interface ITemplateExistsRequest -- interface ITemplateResponse -- interface ITermFacetRequest -- interface ITermsBaseFilter -- interface ITermsLookupFilter -- interface ITermsStatsFacetRequest -- interface ITermvectorRequest -- interface ITermvectorRequest`1 -- interface ITermVectorResponse -- interface ITimestampFieldMapping -- interface ITopChildrenQuery -- interface ITtlFieldMapping -- interface ITypeFieldMapping -- interface IUnregisterPercolateResponse -- interface IUnregisterPercolatorRequest`1 -- interface IUpdateResponse -- interface IUpdateSettingsRequest -- interface IWarmerResponse -- class JVM -- class KeepTypesTokenFilter -- class KeepWordsTokenFilter -- class KeyItem -- class KeywordMarkerTokenFilter -- class KeywordRepeatTokenFilter -- class KStemTokenFilter -- class LengthTokenFilter -- class LimitFilterDescriptor -- class LimitTokenCountTokenFilter -- class LinearFunction`1 -- class ListBenchmarksDescriptor -- class ListBenchmarksRequest -- class LMJelinekSimilarity -- class LowercaseTokenFilter -- class MappingCharFilter -- class MappingTransformConverter -- class MatchQueryJsonConverter -- class MetricAggregationBaseDescriptor`2 -- class MetricAggregator -- class MissingFilterDescriptor -- class MoreLikeThisDescriptor`1 -- class MoreLikeThisQueryDocumentsDescriptor`1 -- class MoreLikeThisRequest -- class MoreLikeThisRequest`1 -- class MpercolateDescriptor -- class MpercolateRequest -- class MultiFieldMapping -- class MultiFieldMappingDescriptor`1 -- class MultiFieldMappingPath -- class MultiGetHitConverter -- class MultiHit`1 -- class MultiSearchConverter -- class MultiTermVectorDocument -- class MultiTermVectorDocumentDescriptor`1 -- class MultiTermVectorHit -- class MultiTermVectorResponse -- class MultiTermVectorsDescriptor`1 -- class Murmur3HashMapping -- class MurmurHashMappingDescriptor`1 -- class NamePathBase`1 -- class NamePathDescriptor`2 -- class NestedFilterDescriptor`1 -- class NestedObjectMapping -- class NestedObjectMappingDescriptor`2 -- enum NestedScore -- class NestSerializer -- class NetworkStats -- class NgramTokenFilter -- class NodeIdOptionalDescriptor`2 -- class NodeIdOptionalPathBase`1 -- class NodeInfoHTTP -- class NodeInfoJVM -- class NodeInfoOS -- class NodeInfoProcess -- class NodeInfoResponse -- class NodeInfoThreadPoolThreadInfo -- class NodesShutdownDescriptor -- class NodesShutdownRequest -- class NodesShutdownResponse -- class NodeStatsIndexes -- class NodeStatsResponse -- class NoMatchFilterContainer -- class NoMatchFilterConverter -- class NoMatchQueryConverter -- enum NonStringIndexOption -- class NormsMapping -- class NotFilterDescriptor -- class NumberMapping -- class NumberMappingDescriptor`1 -- class ObjectMapping -- class ObjectMappingDescriptor`2 -- class OpenCloseIndexExtensions -- class OrFilterDescriptor -- class OSStats -- class ParentFieldMapping -- enum ParentScoreType -- class ParentTypeMapping -- enum PathInfoHttpMethod -- class PatternCaptureTokenFilter -- class PatternReplaceCharFilter -- class PatternReplaceTokenFilter -- class PhoneticTokenFilter -- class PhraseSuggestDescriptor`1 -- class PlainFilter -- class PlainQuery -- class PorterStemTokenFilter -- class PrefixFilterConverter -- class PrefixFilterDescriptor -- class Property -- class PropertyMapping -- class PropertyNameMarker -- class PropertyNameMarkerConverter -- class PropertyNameMarkerExtensions -- class PropertyNameResolver -- class PropertyPathMarker -- class PropertyPathMarkerConverter -- class PropertyPathMarkerExtensions -- class PutTemplateDescriptor -- class PutTemplateRequest -- class QueryDescriptor`1 -- class QueryFacet -- class QueryFilter -- class QueryFilterDescriptor -- class QueryFilterWalker -- class QueryPathBase`1 -- class QueryPathBase`2 -- class QueryPathDescriptorBase`3 -- class RandomScoreFunction`1 -- class Range`1 -- enum RangeExecution -- class RangeFacet -- class RangeFacetDescriptor`2 -- class RangeFacetRequest`1 -- class RangeFilter -- class RangeFilterDescriptor`1 -- class RangeFilterJsonConverter -- class RangeFilterJsonReader -- class RangeQuery -- class RangeQueryDescriptor`1 -- class ReadAsTypeConverter`1 -- class RegexpFilterDescriptor`1 -- class RegexpFilterJsonReader -- class RegisterPercolateResponse -- class ReindexException -- class ReindexObserver -- class RepositoryOptionalPathBase`1 -- class RepositoryOptionalPathDescriptor`2 -- class RepositoryPathBase`1 -- class RepositoryPathDescriptor`2 -- class RepositorySnapshotOptionalPathBase`1 -- class RepositorySnapshotOptionalPathDescriptor`2 -- class RepositorySnapshotPathBase`1 -- class RepositorySnapshotPathDescriptor`2 -- class RestoreException -- class ReverseTokenFilter -- class RootInfoResponse -- class RootObjectMapping -- enum RoutingAllocationEnableOption -- class RoutingFieldMapping -- class RoutingFieldMappingDescriptor`1 -- class ScriptedMetricsAggregator -- class ScriptFilterDescriptor -- class ScriptScoreFunction`1 -- class ScrollExtensions -- class SearchShardsDescriptor -- class SearchSourceDescriptor`1 -- class SerializerExtensions -- class ShardsFailureReason -- class ShardsOperationResponse -- class ShardsSegmentConverter -- class ShingleTokenFilter -- class SimilarityBase -- class SimilarityCollectionConverter -- class SimilarityDescriptor -- class SimilaritySettings -- class SimilaritySettingsConverter -- class SizeFieldMapping -- class SizeFieldMappingDescriptor -- class SnapshotException -- class SnapshotGetRepositoryDescriptor -- class SnapshotGetRepositoryRequest -- class SnapshotRepository -- class SnowballTokenFilter -- class Sort -- class SortCollectionConverter -- class SortDescriptorBase`2 -- class SourceExtensions -- class SourceFieldMapping -- class SourceFieldMappingDescriptor -- class SourceFilter -- class SpanNotQuery`1 -- class SpanQuery`1 -- class SpanTermQueryConverter -- class StandardTokenFilter -- class StatisticalFacet -- class StatisticalFacetDescriptor`1 -- class StatisticalFacetRequest -- class Stats -- class StatsContainer -- class StatusResponse -- class StemmerOverrideTokenFilter -- class StemmerTokenFilter -- class StopTokenFilter -- class StringMapping -- class StringMappingDescriptor`1 -- class Suggester -- class SuggestField -- class SuggestResponseConverter -- class SynonymTokenFilter -- class TemplateExistsDescriptor -- class TemplateExistsRequest -- class TemplateQueryDescriptor -- class TemplateResponse -- class TermFacet -- class TermFacetDescriptor`1 -- class TermFacetRequest -- class TermFilterConverter -- class TermFilterDescriptor -- class TermItem -- enum TermsExecution -- class TermsFilterConverter -- class TermsFilterDescriptor -- class TermsIncludeExcludeConverter -- class TermsLookupFilter -- class TermsLookupFilterDescriptor -- class TermsQueryDescriptor`2 -- class TermsQueryJsonConverter -- class TermsStatsFacetDescriptor`1 -- class TermsStatsFacetRequest -- enum TermsStatsOrder -- class TermStats -- class TermStatsFacet -- class TermSuggestDescriptor`1 -- class TermvectorDescriptor`1 -- class TermvectorRequest -- class TermvectorRequest`1 -- class TermVectorResponse -- class TimestampFieldMapping -- class TimestampFieldMappingDescriptor`1 -- class TokenFilterCollectionConverter -- class TokenizerCollectionConverter -- class TopChildrenQuery -- class TopChildrenQueryDescriptor`1 -- enum TopChildrenScore -- class TrimTokenFilter -- class TruncateTokenFilter -- class TtlFieldMapping -- class TtlFieldMappingDescriptor -- class TypeFieldMapping -- class TypeFieldMappingDescriptor -- class TypeMappingProperty -- class TypeMappingWriter -- class TypeNameMarker -- class TypeNameMarkerConverter -- class TypeNameMarkerExtensions -- class TypeStats -- class UniqueTokenFilter -- class UnixDateTimeConverter -- class UnregisterPercolateResponse -- class UpdatableSettings -- class UpdateRequest`1 -- class UpdateResponse -- class UpdateSettingsDescriptor -- class UpdateSettingsRequest -- class UpgradeStatusResponseConverter -- class UppercaseTokenFilter -- class UptimeStats -- class UriExtensions -- class UriJsonConverter -- class WarmerMapping -- class WarmerMappingConverter -- class WarmerResponse -- class WeightFunction`1 -- class WordDelimiterTokenFilter -- class WritePropertiesFromAttributeVisitor -- class YesNoBoolConverter ----- - -==== Member Changes - -[source,diff] ----- -class AggregationsHelper -- method: PercentilesRank -- method: TopHitsMetric -class AliasAddOperation -- prop: FilterDescriptor -class AliasDescriptor -- method: Add -- method: FilterPath -- method: MasterTimeout -- method: Remove -- method: Source -- method: Timeout -class AliasExistsRequest -- prop: Index -- prop: Name -- class AllFieldMapping -+ class AllField -- prop: IndexAnalyzer -class AnalyzeDescriptor -- method: IndexQueryString -class AnalyzeRequest -- prop: IndexQueryString -- prop: Indices -class AnalyzeResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class AndFilter -+ class AndQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- class AverageAggregator -+ class AverageAggregation -- prop: Language -- prop: Params -- class AzureRepositoryDescriptor -+ class AzureRepositorySettingsDescriptor -- method: ConcurrentStreams -class BM25Similarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -- class BoolFilter -+ class BoolQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class BulkCreateOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkDeleteOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkDescriptor -- method: Replication -- method: TypeQueryString -class BulkIndexDescriptor`1 -- method: Percolate -class BulkIndexOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkOperationBase -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkRequest -- prop: Index -- prop: Replication -- prop: Type -- prop: TypeQueryString -class BulkResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class BulkUpdateOperation`2 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -- class CardinalityAggregator -+ class CardinalityAggregation -- prop: Language -- prop: Params -class CatFielddataRequest -- prop: Fields -class CatResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClearCacheDescriptor -- method: Filter -- method: FilterCache -- method: FilterKeys -- method: Id -- method: IdCache -- method: IndexQueryString -- method: QueryCache -class ClearCacheRequest -- prop: Filter -- prop: FilterCache -- prop: FilterKeys -- prop: Id -- prop: IdCache -- prop: IndexQueryString -- prop: Indices -- prop: QueryCache -class ClearScrollRequest -- prop: ScrollId -class CloseIndexRequest -- prop: Index -class ClusterFileSystem -- prop: DiskIoOps -- prop: DiskQueue -- prop: DiskReads -- prop: DiskReadSize -- prop: DiskReadSizeInBytes -- prop: DiskWrites -- prop: DiskWriteSize -- prop: DiskWriteSizeInBytes -class ClusterGetSettingsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterHealthRequest -- prop: Indices -class ClusterNodesStats -- prop: Os -class ClusterPendingTasksResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterPutSettingsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterRerouteDescriptor -- method: Commands -class ClusterRerouteResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterStateDescriptor -- method: Metrics -class ClusterStateRequest -- prop: Indices -- prop: Metrics -class ClusterStateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterStatsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class CommonTermsQueryDescriptor`1 -- method: OnField -+ method: Field -class ConstantScoreQuery -- prop: IsConditionless -- prop: Query -class ConstantScoreQueryDescriptor`1 -- method: Query -class CountDescriptor`1 -- method: Q -class CountRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class CountRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class CountResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class CreateIndexDescriptor -- method: AddAlias -- method: AddMapping -- method: AddWarmer -- method: Analysis -- method: DeleteWarmer -- method: NumberOfReplicas -- method: NumberOfShards -- method: RemoveMapping -class CreateIndexRequest -- prop: Index -- prop: IndexSettings -class CreateRepositoryRequest -- prop: RepositoryName -class CustomAnalyzer -- prop: Alias -class DateHistogramAggregationDescriptor`1 -- method: Params -- method: PostOffset -- method: PostZone -- method: PreOffset -- method: PreZone -- method: PreZoneAdjustLargeInterval -- class DateHistogramAggregator -+ class DateHistogramAggregation -- prop: PostOffset -- prop: PostZone -- prop: PreOffset -- prop: PreZone -- prop: PreZoneAdjustLargeInterval -class DefaultSimilarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -class DeleteAliasRequest -- prop: Index -- prop: Name -class DeleteAliasResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteByQueryDescriptor`1 -- method: Consistency -- method: Q -- method: Replication -class DeleteByQueryRequest -- prop: AllIndices -- prop: AllTypes -- prop: Consistency -- prop: Indices -- prop: Q -- prop: Replication -- prop: Types -class DeleteByQueryRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Consistency -- prop: Indices -- prop: Q -- prop: Replication -- prop: Types -class DeleteDescriptor`1 -- method: Replication -class DeleteIndexRequest -- prop: AllIndices -- prop: Indices -class DeleteRepositoryRequest -- prop: RepositoryName -class DeleteRequest -- prop: Id -- prop: Index -- prop: Replication -- prop: Type -class DeleteRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class DeleteResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Indices -- prop: Infer -class DeleteScriptDescriptor -- method: Id -- method: Lang -class DeleteScriptRequest -- prop: Id -- prop: Lang -class DeleteScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteSearchTemplateRequest -- prop: Name -class DeleteSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteSnapshotRequest -- prop: Repository -- prop: Snapshot -class DeleteWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: Types -class DirectGeneratorDescriptor`1 -- method: OnField -+ method: Field -class DocumentExistsRequest -- prop: Id -- prop: Index -- prop: Type -class DocumentExistsRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class DynamicTemplateDescriptor`1 -- method: Name -class EdgeNGramTokenizer -- prop: Side -class ElasticClient -- prop: Connection -- method: ClusterSettings -+ method: ClusterPutSettings -- method: ClusterSettingsAsync -+ method: ClusterPutSettingsAsync -- method: DeleteMapping -- method: DeleteMappingAsync -- method: DeleteTemplate -+ method: DeleteSearchTemplate -- method: DeleteTemplateAsync -+ method: DeleteSearchTemplateAsync -- method: DeleteTemplateAync -- method: DoRequest -- method: DoRequestAsync -- method: GetTemplate -+ method: GetSearchTemplate -- method: GetTemplateAsync -+ method: GetSearchTemplateAsync -- method: MoreLikeThis -- method: MoreLikeThisAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: PutTemplate -+ method: PutSearchTemplate -- method: PutTemplateAsync -+ method: PutSearchTemplateAsync -- method: Status -- method: StatusAsync -- method: TemplateExists -- method: TemplateExistsAsync -- method: TermVector -- method: TermVectorAsync -- method: UpdateSettings -+ method: UpdateIndexSettings -- method: UpdateSettingsAsync -+ method: UpdateIndexSettingsAsync -- class ExistsFilter -+ class ExistsQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class ExistsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ExplainDescriptor`1 -- method: EnableSource -- method: Q -class ExplainRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Q -- prop: Type -class ExplainResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Fields -- prop: Infer -- prop: Source -- class ExtendedStatsAggregator -+ class ExtendedStatsAggregation -- prop: Language -- prop: Params -class FieldStatsRequest -- prop: AllIndices -- prop: Indices -class FieldStatsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class FileSystemRepositoryDescriptor -+ class FileSystemRepositorySettingsDescriptor -- method: SnapshortBytesPerSecondMaximum -class FiltersAggregationDescriptor`1 -- method: Filters -class FlushDescriptor -- method: Full -class FlushRequest -- prop: AllIndices -- prop: Indices -class FunctionScoreQuery -- prop: Filter -+ prop: Query -- prop: RandomScore -- prop: ScriptScore -- prop: Weight -- prop: WeightAsDouble -class FunctionScoreQueryDescriptor`1 -- method: Filter -- method: RandomScore -- method: ScriptScore -- method: Weight -class FuzzyDateQuery -- prop: UnicodeAware -class FuzzyDateQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -class FuzzyNumericQuery -- prop: UnicodeAware -class FuzzyNumericQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -class FuzzyQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -- class GeoBoundingBoxFilter -+ class GeoBoundingBoxQuery -- prop: BottomRight -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: GeoExecution -- prop: TopLeft -- class GeoBoundsAggregator -+ class GeoBoundsAggregation -- prop: Language -- prop: Params -- class GeoDistanceFilter -+ class GeoDistanceQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Unit -- class GeoDistanceRangeFilter -+ class GeoDistanceRangeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: From -- prop: IncludeLower -- prop: IncludeUpper -- prop: To -- prop: Unit -class GeoDistanceSort -- prop: PinLocation -+ prop: Points -- class GeoHashCellFilter -+ class GeoHashCellQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Unit -- class GeoIndexedShapeFilter -+ class GeoIndexedShapeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoLocation -- prop: Longtitude -- class GeoPolygonFilter -+ class GeoPolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- class GeoShapeCircleFilter -+ class GeoShapeCircleQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeCircleQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeEnvelopeFilter -+ class GeoShapeEnvelopeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeEnvelopeQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeLineStringFilter -+ class GeoShapeLineStringQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeLineStringQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiLineStringFilter -+ class GeoShapeMultiLineStringQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiLineStringQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiPointFilter -+ class GeoShapeMultiPointQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiPointQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiPolygonFilter -+ class GeoShapeMultiPolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiPolygonQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapePointFilter -+ class GeoShapePointQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapePointQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapePolygonFilter -+ class GeoShapePolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapePolygonQueryDescriptor`1 -- method: OnField -+ method: Field -class GetAliasesRequest -- prop: Indices -class GetAliasesResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetAliasRequest -- prop: Indices -class GetDescriptor`1 -- method: EnableSource -class GetFieldMappingRequest -- prop: Fields -- prop: Indices -- prop: Types -class GetFieldMappingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetIndexDescriptor -- method: Features -class GetIndexRequest -- prop: AllIndices -- prop: Features -- prop: Indices -class GetIndexResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetIndexSettingsRequest -- prop: Index -class GetMappingRequest -- prop: Index -- prop: Type -class GetMappingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetRepositoryRequest -- prop: RepositoryName -class GetRepositoryResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetRequest -- prop: EnableSource -- prop: Id -- prop: Index -- prop: Type -class GetRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class GetResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- method: FieldValue -class GetScriptDescriptor -- method: Id -- method: Lang -class GetScriptRequest -- prop: Id -- prop: Lang -class GetScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetSearchTemplateRequest -- prop: Name -class GetSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetSnapshotRequest -- prop: Repository -- prop: Snapshot -class GetSnapshotResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: Types -- class HasChildFilter -+ class HasChildQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class HasChildQuery -- prop: ScoreType -+ prop: ScoreMode -class HasChildQueryDescriptor`1 -- method: Score -- class HasParentFilter -+ class HasParentQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class HasParentQuery -- prop: ScoreType -+ prop: ScoreMode -class HasParentQueryDescriptor`1 -- method: Score -class Highlight -- prop: DocumentId -- prop: Field -- prop: Highlights -class HighlightDescriptor`1 -- method: OnFields -+ method: Fields -class HighlightField -- prop: HighlightQuery -class HighlightFieldDescriptor`1 -- method: HighlightQuery -- method: OnField -+ method: Field -class HistogramAggregationDescriptor`1 -- method: Params -- class HistogramAggregator -+ class HistogramAggregation -- prop: Params -class HistogramItem -- prop: Date -class HotThreadInformation -- prop: Node -interface IBoolQuery -- prop: Boost -interface IClearScrollRequest -- prop: ScrollId -interface IClusterStateRequest -- prop: Metrics -interface ICommonTermsQuery -- prop: Boost -- prop: Field -interface IConnectionSettingsValues -- prop: ContractConverters -- prop: DefaultPropertyNameInferrer -- prop: ModifyJsonSerializerSettings -interface IConstantScoreQuery -- prop: Boost -- prop: Query -interface ICreateIndexRequest -- prop: IndexSettings -- interface IDateHistogramAggregator -+ interface IDateHistogramAggregation -- prop: PostOffset -- prop: PostZone -- prop: PreOffset -- prop: PreZone -- prop: PreZoneAdjustLargeInterval -interface IDeleteResponse -- prop: Indices -interface IDisMaxQuery -- prop: Boost -class IdResolver -- method: GetIdFor -- class IdsFilter -+ class IdsQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Type -class IdsQuery -- prop: Type -class IdsQueryDescriptor -- prop: Boost -- prop: Name -- prop: Type -- prop: Values -interface IElasticClient -- prop: Connection -- method: ClusterSettings -+ method: ClusterPutSettings -- method: ClusterSettingsAsync -+ method: ClusterPutSettingsAsync -- method: DeleteMapping -- method: DeleteMappingAsync -- method: DeleteTemplate -+ method: DeleteSearchTemplate -- method: DeleteTemplateAsync -+ method: DeleteSearchTemplateAsync -- method: DeleteTemplateAync -- method: DoRequest -- method: DoRequestAsync -- method: GetTemplate -+ method: GetSearchTemplate -- method: GetTemplateAsync -+ method: GetSearchTemplateAsync -- method: MoreLikeThis -- method: MoreLikeThisAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: PutTemplate -+ method: PutSearchTemplate -- method: PutTemplateAsync -+ method: PutSearchTemplateAsync -- method: Status -- method: StatusAsync -- method: TemplateExists -- method: TemplateExistsAsync -- method: TermVector -- method: TermVectorAsync -- method: UpdateSettings -+ method: UpdateIndexSettings -- method: UpdateSettingsAsync -+ method: UpdateIndexSettingsAsync -interface IExplainResponse`1 -- prop: Fields -- prop: Source -interface IFieldNameQuery -- method: GetFieldName -- method: SetFieldName -interface IFieldSort -- prop: Field -- interface IFilter -+ interface IQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -interface IFilteredQuery -- prop: Boost -interface IFunctionScoreQuery -- prop: Boost -- prop: Filter -- prop: RandomScore -- prop: ScriptScore -- prop: Weight -- prop: WeightAsDouble -interface IFuzzyDateQuery -- prop: Value -interface IFuzzyNumericQuery -- prop: Value -interface IFuzzyQuery -- prop: Boost -- prop: Field -- prop: Fuzziness -- prop: UnicodeAware -- interface IGeoBoundingBoxFilter -+ interface IGeoBoundingBoxQuery -- prop: BottomRight -- prop: Field -- prop: GeoExecution -- prop: TopLeft -- interface IGeoDistanceFilter -+ interface IGeoDistanceQuery -- prop: Field -- prop: Unit -- interface IGeoDistanceRangeFilter -+ interface IGeoDistanceRangeQuery -- prop: Field -- prop: From -- prop: IncludeLower -- prop: IncludeUpper -- prop: To -- prop: Unit -interface IGeoDistanceSort -- prop: PinLocation -+ prop: Points -- interface IGeoHashCellFilter -+ interface IGeoHashCellQuery -- prop: Field -- prop: Unit -interface IGeoShapeCircleQuery -- prop: Boost -interface IGeoShapeEnvelopeQuery -- prop: Boost -interface IGeoShapeLineStringQuery -- prop: Boost -interface IGeoShapeMultiLineStringQuery -- prop: Boost -interface IGeoShapeMultiPointQuery -- prop: Boost -interface IGeoShapeMultiPolygonQuery -- prop: Boost -interface IGeoShapePointQuery -- prop: Boost -interface IGeoShapePolygonQuery -- prop: Boost -interface IGeoShapeQuery -- prop: Field -interface IGetIndexRequest -- prop: Features -- interface IHasChildFilter -+ interface IHasChildQuery -- prop: Filter -interface IHasChildQuery -- prop: Boost -- prop: ScoreType -- interface IHasParentFilter -+ interface IHasParentQuery -- prop: Filter -interface IHasParentQuery -- prop: Boost -- prop: ScoreType -interface IHighlightField -- prop: HighlightQuery -- interface IHistogramAggregator -+ interface IHistogramAggregation -- prop: Params -- interface IIdsFilter -+ interface IIdsQuery -- prop: Type -interface IIdsQuery -- prop: Boost -- prop: Type -- interface IIndicesFilter -+ interface IIndicesQuery -- prop: Filter -- prop: Index -- prop: NoMatchFilter -interface IIndicesQuery -- prop: Boost -- prop: Score -interface IIndicesStatsRequest -- prop: Metrics -- interface ILimitFilter -+ interface ILimitQuery -- prop: Value -interface IMatchAllQuery -- prop: Boost -interface IMatchQuery -- prop: Boost -- prop: Field -- prop: Rewrite -- interface IMetricAggregator -+ interface IMetricAggregation -- prop: Language -- prop: Params -interface IMoreLikeThisQuery -- prop: Boost -- prop: Documents -- prop: Ids -- prop: LikeText -- prop: TermMatchPercentage -interface IMultiGetOperation -- prop: Document -- prop: PerFieldAnalyzer -interface IMultiGetRequest -- prop: GetOperations -interface IMultiMatchQuery -- prop: Boost -- prop: Rewrite -class IndexDescriptor`1 -- method: Replication -class IndexExistsRequest -- prop: Index -class IndexNameResolver -- method: GetIndexForType -class IndexRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class IndexResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class IndexSettings -- prop: Aliases -- prop: AsExpando -- prop: Mappings -- prop: Settings -- prop: Similarity -- prop: Warmers -- class IndicesFilter -+ class IndicesQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -- prop: Index -- prop: NoMatchFilter -- prop: Score -class IndicesQuery -- prop: Score -class IndicesStats -- prop: Completion -- prop: Count -- prop: Docs -- prop: FieldData -- prop: FilterCache -- prop: IdCache -- prop: Percolate -- prop: Segments -- prop: Shards -- prop: Store -class IndicesStatsDescriptor -- method: Metrics -class IndicesStatsRequest -- prop: Indices -- prop: Metrics -- interface INestedFilter -+ interface INestedQuery -- prop: Filter -- prop: Join -- prop: Score -interface INestedQuery -- prop: Boost -- prop: Filter -- prop: Score -interface INodesInfoRequest -- prop: Metrics -interface INodesStatsRequest -- prop: IndexMetrics -- prop: Metrics -- interface INotFilter -+ interface INotQuery -- prop: Filter -- interface IPercentilesAggregator -+ interface IPercentilesAggregation -- prop: Compression -- prop: Field -- prop: Params -- prop: Percentages -- prop: Script -interface IPercolateOperation -- prop: Facets -- prop: Id -interface IPhraseSuggestCollate -- prop: Filter -- prop: Params -- prop: Preference -- interface IPrefixFilter -+ interface IPrefixQuery -- prop: Prefix -interface IPutAliasRequest -- prop: IndexRouting -- prop: SearchRouting -interface IPutMappingRequest -- prop: Mapping -interface IPutWarmerRequest -- prop: SearchDescriptor -+ prop: Search -interface IQuery -- prop: IsConditionless -interface IQueryContainer -- prop: CustomBoostFactor -- prop: CustomFiltersScore -- prop: CustomScore -- prop: FuzzyLikeThis -- prop: MatchAllQuery -+ prop: MatchAll -- prop: TopChildren -interface IQueryStringQuery -- prop: Boost -- prop: FuzzyMinimumSimilarity -- prop: MinimumShouldMatchPercentage -- interface IRangeAggregator -+ interface IRangeAggregation -- prop: Params -- interface IRangeFilter -+ interface IRangeQuery -- prop: Execution -- prop: Format -- prop: GreaterThan -- prop: GreaterThanOrEqualTo -- prop: LowerThan -- prop: LowerThanOrEqualTo -- prop: TimeZone -interface IRangeQuery -- prop: Boost -- prop: Cache -- prop: Field -- prop: Format -- prop: GreaterThan -- prop: GreaterThanOrEqualTo -- prop: LowerThan -- prop: LowerThanOrEqualTo -- prop: TimeZone -interface IRegexpQuery -- prop: Boost -- prop: Field -interface IRegisterPercolatorRequest -- prop: MetaData -+ prop: Metadata -- interface IRepository -+ interface ISnapshotRepository -- prop: Settings -interface IRequest -- prop: RequestConfiguration -interface IResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- interface IScriptedMetricAggregator -+ interface IScriptedMetricAggregation -- prop: CombineScriptFile -- prop: CombineScriptId -- prop: InitScriptFile -- prop: InitScriptId -- prop: MapScriptFile -- prop: MapScriptId -- prop: ReduceParams -- prop: ReduceScriptFile -- prop: ReduceScriptId -- interface IScriptFilter -+ interface IScriptQuery -- prop: Script -- prop: ScriptFile -- prop: ScriptId -interface IScriptSort -- prop: File -- prop: Language -- prop: Params -interface IScrollRequest -- prop: TypeSelector -interface ISearchRequest -- prop: ClrType -- prop: Facets -- prop: Filter -- prop: QueryString -- prop: TypeSelector -interface ISearchResponse`1 -- prop: ElapsedMilliseconds -+ prop: Took -- prop: Facets -- prop: FieldSelections -- method: Facet -- method: FacetItems -interface ISearchTemplateRequest -- prop: ClrType -- prop: TypeSelector -interface ISimpleQueryStringQuery -- prop: Boost -- prop: DefaultField -interface ISpanFirstQuery -- prop: Boost -interface ISpanMultiTermQuery -- prop: Boost -interface ISpanNearQuery -- prop: Boost -interface ISpanNotQuery -- prop: Boost -interface ISpanOrQuery -- prop: Boost -interface ISpanQuery -- prop: SpanTermQueryDescriptor -+ prop: SpanTerm -interface ITemplateQuery -- prop: Boost -- prop: Query -- interface ITermFilter -+ interface ITermQuery -- prop: Boost -interface ITermQuery -- prop: Boost -- prop: Field -- interface ITermsAggregator -+ interface ITermsAggregation -- prop: Params -interface ITermsQuery -- prop: Boost -- prop: ExternalField -+ prop: TermsLookup -- prop: Field -- interface ITopHitsAggregator -+ interface ITopHitsAggregation -- prop: FieldDataFields -+ prop: FielddataFields -interface IUpdateRequest`2 -- prop: DetectNoop -- class LimitFilter -+ class LimitQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Value -class LMDirichletSimilarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -- class MatchAllFilter -+ class MatchAllQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class MatchQuery -- prop: Rewrite -- prop: Type -class MatchQueryDescriptor`1 -- method: OnField -+ method: Field -- method: Rewrite -- class MaxAggregator -+ class MaxAggregation -- prop: Language -- prop: Params -- class MinAggregator -+ class MinAggregation -- prop: Language -- prop: Params -- class MissingFilter -+ class MissingQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class MoreLikeThisQuery -- prop: Documents -+ prop: Like -- prop: Ids -+ prop: Like -- prop: LikeText -+ prop: Like -class MoreLikeThisQueryDescriptor`1 -- method: Documents -- method: DocumentsExplicit -- method: Ids -- method: LikeText -- method: OnFields -+ method: Fields -- method: TermMatchPercentage -class MultiGetDescriptor -- method: EnableSource -class MultiGetHit`1 -- prop: FieldSelection -class MultiGetOperation`1 -- prop: PerFieldAnalyzer -class MultiGetOperationDescriptor`1 -- method: Document -- method: PerFieldAnalyzer -class MultiGetRequest -- prop: EnableSource -- prop: GetOperations -- prop: Index -- prop: Type -class MultiGetResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiMatchQuery -- prop: Rewrite -class MultiMatchQueryDescriptor`1 -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -- method: Rewrite -- method: UseDisMax -class MultiPercolateRequest -- prop: Index -- prop: Type -class MultiPercolateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiSearchRequest -- prop: Index -- prop: Type -class MultiSearchResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiTermVectorsRequest -- prop: Index -- prop: Type -- class NestedFilter -+ class NestedQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -- prop: Join -- prop: Score -class NestedQuery -- prop: Filter -- prop: Score -class NestedQueryDescriptor`1 -- method: Filter -- method: Score -class NodeInfo -- prop: HTTP -+ prop: Http -- prop: JVM -+ prop: Jvm -- prop: OS -+ prop: OperatingSystem -class NodesHotThreadsDescriptor -- prop: NodeId -class NodesHotThreadsRequest -- prop: NodeId -class NodesHotThreadsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class NodesInfoDescriptor -- method: Metrics -class NodesInfoRequest -- prop: Metrics -- prop: NodeId -class NodesStatsDescriptor -- method: IndexMetrics -- method: Metrics -class NodesStatsRequest -- prop: IndexMetrics -- prop: Metrics -- prop: NodeId -class NodeStats -- prop: Hostname -- prop: HTTP -+ prop: Http -- prop: JVM -+ prop: Jvm -- prop: Network -- prop: OS -+ prop: OperatingSystem -class NoMatchQueryContainer -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -- class NotFilter -+ class NotQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class OpenIndexRequest -- prop: Index -class OptimizeDescriptor -- method: Force -class OptimizeRequest -- prop: Force -- prop: Indices -- class OrFilter -+ class OrQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class PercentileRanksAggregation -- prop: Language -- prop: Params -class PercentilesAggregationDescriptor`1 -- method: Compression -- method: Params -- method: Percentages -- class PercentilesAggregator -+ class PercentilesAggregation -- prop: Compression -- prop: Params -- prop: Percentages -class PercolateCountDescriptor`1 -- method: Object -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class PercolateCountRequest`1 -- prop: Facets -- prop: Id -- prop: Index -- prop: Type -class PercolateCountResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PercolateDescriptor`1 -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class PercolateRequest`1 -- prop: Facets -- prop: Id -- prop: Index -- prop: Type -class PercolateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PhraseSuggestCollate -- prop: Filter -- prop: Params -- prop: Preference -class PhraseSuggestCollateDescriptor`1 -- method: Filter -- method: Params -- method: Preference -class PingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PluginStats -- prop: Url -- class PrefixFilter -+ class PrefixQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Prefix -class PropertiesDescriptor`1 -- prop: Properties -- method: Generic -- method: IP -- method: MultiField -- method: NestedObject -- method: Remove -class PutAliasDescriptor -- method: IndexRouting -- method: SearchRouting -class PutAliasRequest -- prop: Index -- prop: IndexRouting -- prop: Name -- prop: SearchRouting -class PutAliasResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutMappingDescriptor`1 -- method: AnalyzerField -- method: BoostField -- method: Enabled -- method: IdField -- method: IgnoreConflicts -- method: IncludeInAll -- method: IndexAnalyzer -- method: InitializeUsing -- method: MapFromAttributes -- method: Path -- method: SetParent -- method: TypeField -class PutMappingRequest -- prop: AllIndices -- prop: IgnoreConflicts -- prop: Indices -- prop: Mapping -- prop: Type -class PutMappingRequest`1 -- prop: AllIndices -- prop: IgnoreConflicts -- prop: Indices -- prop: Mapping -- prop: Type -class PutScriptDescriptor -- method: Id -- method: Lang -class PutScriptRequest -- prop: Id -- prop: Lang -class PutScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutSearchTemplateRequest -- prop: Name -class PutSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: SearchDescriptor -+ prop: Search -- prop: Types -class QueryContainer -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -- method: GetCustomJson -class QueryStringQuery -- prop: FuzzyMinimumSimilarity -- prop: MinimumShouldMatchPercentage -class QueryStringQueryDescriptor`1 -- method: FuzzyMinimumSimilarity -- method: MinimumShouldMatchPercentage -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -class Range -- prop: Count -- prop: Max -- prop: Mean -- prop: Min -- prop: Total -- prop: TotalCount -class RangeAggregationDescriptor`1 -- method: Params -- class RangeAggregator -+ class RangeAggregation -- prop: Params -class RecoveryStatusRequest -- prop: Indices -class RecoveryStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class RefreshRequest -- prop: Indices -- class RegexpFilter -+ class RegexpQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class RegexpQueryDescriptor`1 -- method: OnField -+ method: Field -class RegisterPercolatorDescriptor`1 -- method: AddMetadata -- method: GetCustomJson -class RegisterPercolatorRequest -- prop: Index -- prop: MetaData -+ prop: Metadata -- prop: Name -- method: GetCustomJson -class ReindexDescriptor`1 -- method: FromIndex -- method: NewIndexName -- method: ToIndex -class RescoreQueryDescriptor`1 -- prop: Self -class RestoreRequest -- prop: Repository -- prop: Snapshot -class RestoreResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ScriptedHeuristic -- prop: Lang -- prop: Params -class ScriptedHeuristicDescriptor -- method: Lang -- method: Params -class ScriptedMetricAggregationDescriptor`1 -- method: CombineScriptFile -- method: CombineScriptId -- method: InitScriptFile -- method: InitScriptId -- method: MapScriptFile -- method: MapScriptId -- method: ReduceParams -- method: ReduceScriptFile -- method: ReduceScriptId -- class ScriptFilter -+ class ScriptQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Script -- prop: ScriptFile -- prop: ScriptId -class ScriptSort -- prop: File -- prop: Params -class SearchDescriptor`1 -- method: FacetDateHistogram -- method: FacetFilter -- method: FacetGeoDistance -- method: FacetHistogram -- method: FacetQuery -- method: FacetRange -- method: FacetStatistical -- method: FacetTerm -- method: FacetTermsStats -- method: Filter -- method: FilterRaw -- method: QueryCache -- method: QueryRaw -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortMulti -- method: SortScript -- method: Strict -- method: SuggestCompletion -- method: SuggestPhrase -- method: SuggestTerm -class SearchExistsDescriptor`1 -- method: Q -class SearchExistsRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class SearchExistsRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class SearchRequest -- prop: AllIndices -- prop: AllTypes -- prop: Facets -- prop: Filter -+ prop: PostFilter -- prop: Indices -- prop: QueryCache -- prop: QueryString -- prop: Types -class SearchRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: ClrType -- prop: Facets -- prop: Filter -+ prop: PostFilter -- prop: Indices -- prop: QueryCache -- prop: QueryString -- prop: Types -class SearchResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: ElapsedMilliseconds -+ prop: Took -- prop: Facets -- prop: FieldSelections -- prop: Infer -- method: Facet -- method: FacetItems -class SearchShardsRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchShardsRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchShardsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SearchTemplateRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchTemplateRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: ClrType -- prop: Indices -- prop: Types -class SegmentsRequest -- prop: Indices -class SegmentsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SignificantTermsAggregationDescriptor`1 -- method: Exclude -- method: ExecutionHint -- method: Include -class SimpleQueryStringQuery -- prop: DefaultField -class SimpleQueryStringQueryDescriptor`1 -- method: DefaultField -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -class SingleMappingDescriptor`1 -- method: Generic -- method: IP -- method: MultiField -- method: NestedObject -class Snapshot -- prop: Version -- prop: VersionId -class SnapshotRequest -- prop: Repository -- prop: Snapshot -class SnapshotResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SnapshotStatusRequest -- prop: Repository -- prop: Snapshot -class SnapshotStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SortDescriptor`1 -- method: Sort -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class SortFieldDescriptor`1 -- method: NestedAvg -- method: NestedMax -- method: NestedMin -- method: NestedSum -- method: OnField -+ method: Field -class SortGeoDistanceDescriptor`1 -- method: OnField -+ method: Field -class SortScriptDescriptor`1 -- prop: Self -- method: File -- method: Language -- method: Params -class SourceDescriptor`1 -- method: EnableSource -class SourceRequest -- prop: EnableSource -- prop: Id -- prop: Index -- prop: Type -class SourceRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class SpanFirstQueryDescriptor`1 -- method: MatchTerm -class SpanMultiTermQuery -- prop: IsConditionless -class SpanQuery -- prop: Name -- prop: SpanTermQueryDescriptor -+ prop: SpanTerm -class StandardTokenizer -- prop: MaximumTokenLength -+ prop: MaxTokenLength -- class StatsAggregator -+ class StatsAggregation -- prop: Language -- prop: Params -- class SuggestOption -+ class Suggest -- prop: Frequency -- prop: Payload -- prop: Score -class SuggestRequest -- prop: AllIndices -- prop: Indices -class SuggestResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class SumAggregator -+ class SumAggregation -- prop: Language -- prop: Params -class SyncedFlushRequest -- prop: AllIndices -- prop: Indices -class TemplateQuery -- prop: IsConditionless -- prop: Query -- class TermFilter -+ class TermQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class TermQueryDescriptorBase`2 -- method: GetFieldName -- method: OnField -+ method: Field -- method: SetFieldName -class TermsAggregationDescriptor`1 -- method: Params -- class TermsAggregator -+ class TermsAggregation -- prop: Params -- class TermsFilter -+ class TermsQuery -- prop: Cache -- prop: CacheKey -- prop: Execution -- prop: FilterName -class TermsQuery -- prop: ExternalField -+ prop: TermsLookup -class TopHitsAggregationDescriptor`1 -- method: FieldDataFields -- class TopHitsAggregator -+ class TopHitsAggregation -- prop: FieldDataFields -+ prop: FielddataFields -- prop: Language -- prop: Params -class TypeExistsRequest -- prop: Index -- prop: Type -- class TypeFilter -+ class TypeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class TypeMapping -- prop: Mapping -- prop: TypeName -class TypeNameResolver -- method: GetTypeNameFor -class UaxEmailUrlTokenizer -- prop: MaximumTokenLength -+ prop: MaxTokenLength -class UnregisterPercolatorRequest -- prop: Index -- prop: Name -class UpdateDescriptor`2 -- method: Id -- method: Replication -class UpdateRequest`2 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class UpgradeRequest -- prop: Indices -class UpgradeResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class UpgradeStatusRequest -- prop: Indices -class UpgradeStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ValidateQueryDescriptor`1 -- method: Q -class ValidateQueryRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class ValidateQueryRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class ValidateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class ValueCountAggregator -+ class ValueCountAggregation -- prop: Language -- prop: Params -class VerifyRepositoryRequest -- prop: RepositoryName -class VerifyRepositoryResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer ----- diff --git a/docs/2.0-breaking-changes/nest-breaking-changes.md b/docs/2.0-breaking-changes/nest-breaking-changes.md deleted file mode 100644 index be38f8d6a5b..00000000000 --- a/docs/2.0-breaking-changes/nest-breaking-changes.md +++ /dev/null @@ -1,3185 +0,0 @@ -#NEST breaking changes - -This document rudimentally documents the breaking changes, our 2.0 refactor compromises 1000+ commits and nearly 6 months of work so if we missed anything -feel free to give us a shout! (reply to this gist) - -## Dependency graph changes - -The first thing you might notice is that the dependency graph for the client has changed slightly - -> `IElasticClient` - ├─`ITransport` - ├──`IConnectionSettings` - ├───`IConnectionPool` - ├───`IConnection` - └───`Func` - -a client can still be `new'ed` with no arguments - -```csharp -new ElasticClient(); -``` - -Wich will default to a `SingleNodeConnectionPool` talking to `http://localhost:9200` - -The next most common overload of the constructor is the one taking `ConnectionSettings` - -```csharp -new ElasticClient(connectionSettings); -``` - -There are many overloads to the constructor of `ConnectionSettings` that allow you to inject a custom connection or serializer factory if needed -What they all have in common is that you have to specify an `IConnectionPool` implementation e.g - -```csharp -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionSettings(pool); -var client = new ElasticClient(settings); -``` - -Another big change in Elasticsearch.NET 2.0 is that internally we deal with `Node`'s and not `Uri`'s. However `nodes` in the above example can be either -an `IEnumerable` or `IEnumerable`. - -For the super advanced usecases a custom `ITransport` can be injected. - -```csharp -var pool = new StaticConnectionPool(nodes); -var settings = new ConnectionSettings(pool); -var transport = new Transport(pool); -var client = new ElasticClient(pool); -``` - -This is what we call internally if you use the previous ElasticsearchClient constructor. -Our implementation of `ITransport` can be injected with a custom `IRequestPipelineFactory`, `IDateTimeProvider` and `IMemoryStreamFactory`. -`Transport` is in control of managing our request pipelining, asking connectionpools for other nodes to fall over to and marking nodes dead or alive. - -Each individual moving part is further explained in the documentation - -# Inferred types - -Many places that only took a string now take a more strongly typed object, `Id`, `Field`, `Fields`, `Index`, `Indices`, `Type`, `Types`, `DocumentPath`. -Its good to know that in most cases you can still implicitly convert to them from `string`, `long`, `Guid` where it makes sense. - -If you are using `C# 6` you can also staticly import `using static Nest.Infer`. This will allow you to write `Field(p=>p.Name)` any where that takes a `Field`, -`Field(p=>p.Name).And(p=>p.Description).And("field")` anywhere that takes `Fields`, `Index()` for `Index` and so on and so on. - -If you are using the fluent API using these are not required (but still possible) - -# Filters are **GONE** - -In `Elasticsearch 2.0` queries and filter constructs have merged into one concept called queries, `NEST 2.0` reflects this, so if you are looking for the `AndFilter` it is now -called the `AndQuery` but beware that some of these filters have been obsoleted and chances are high [you are using them wrong](). - -# Isolated descriptors - -In `NEST 1.x` we took pride in being a 1 to 1 mapping with the Elasticsearch API, however in some cases we hid the real depth of parameters. - -Example in `NEST 1.x` you could add sorts on `Search()` using: - -```csharp -client.Search(s=>s - .SortAscending(...) - .SortScript(...) -) -``` - -in `NEST 2.x` you have to stoop down a level first - -```csharp -client.Search(s=>s - .Sort(ss=>ss - .Field() - .Script() - .Ascending() - .GeoDistance() - ) -) -``` - -This isolates all the sort options properly and adheres stricter to the 1 to 1 mapping. `NEST 1.x` also had this full descriptor but the mix and matching -of the convenience methods of the parent means some fluent methods were additive whilst others always overwrite what was previously set. -In `NEST 2.0` this discrepency is gone. - -This happens in more places e.g index settings and mappings. - -# Aggregator - -If you are using the object initializer syntax `*Aggregator` is now `*Aggregation` - -# Attribute-based mapping - -The single `ElasticPropertyAttribute` has been broken up into individual attributes per property type. - -For instance, the following: - -```csharp -[ElasticType(Name = "othername", IdProperty = "MyId")] -public class Foo -{ - [ElasticProperty(Type = FieldType.String)] - public Guid MyId { get; set; } - - [ElasticProperty(Type = FieldType.String)] - public string Name { get; set; } - - [ElasticProperty(Type = FieldType.String, Analyzer = "myanalyzer", TermVector = TermVectorOption.WithOffsets)] - public string Description { get; set; } - - [ElasticProperty(Type = FieldType.Date, Format = "mmmddyyyy")] - public DateTime Date { get; set; } - - [ElasticProperty(Type = FieldType.Integer, Coerce = true)] - public int Number { get; set; } - - [ElasticProperty(Type = FieldType.Nested, IncludeInParent = true)] - public List Bars { get; set; } - - [ElasticProperty(OptOut = true)] - public bool HasDescription { get { return Description != null; } } -} -``` - -becomes - -```csharp -[ElasticsearchType(Name = "othername", IdProperty = "MyId")] -public class Foo -{ - [String] - public Guid MyId { get; set; } - - [String] - public string Name { get; set; } - - [String(Analyzer = "myanalyzer", TermVector = TermVectorOption.WithOffsets)] - public string Description { get; set; } - - [Date(Format = "mmddyyyy")] - public DateTime Date { get; set; } - - [Number(NumberType.Integer, Coerce = true, DocValues = true)] - public int Number { get; set; } - - [Nested(IncludeInParent = true)] - public List Bars { get; set; } - - [Boolean(Ignore = true)] - public bool HasDescription { get { return Description != null; } } -} -``` - -Aside from a simpler and cleaner API, this allows each attribute to only reflect the options that are available for the particular type instead of exposing options that may not be relevant (as `ElasticPropertyAttribute` did). - -`MapFromAttributes()` has also been renamed to `AutoMap()` to better reflect that it doesn't only depend on properties being marked with attributes. It will also infer the type based on the CLR type if no attribute is present. - -## `TimeSpan` automapped as `long` (ticks) - -`System.TimeSpan` is now automatically mapped as a `long` representing the number of ticks within the timeSpan, allowing for range in addition to term queries. NEst 1.x automatically mapped `TimeSpan` as a string and whilst NEST 2.0 is able to deserialize strings into `TimeSpan` instances as before, it will not automatically serialize `TimeSpan` ***into*** strings when indexing. In order to achieve this, you will need to register a json converter, either by deriving from `JsonNetSerializer` and overriding `ContractConverters` or by attributing the property with `[JsonConverter(typeof(ConverterTypeName))]`. A example of a converter for serializing/deserializing string values for `TimeSpan` is - -```c# -public class StringTimeSpanConverter : JsonConverter -{ - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - if (value == null) - writer.WriteNull(); - else - { - var timeSpan = (TimeSpan)value; - writer.WriteValue(timeSpan.ToString()); - } - } - - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - if (reader.TokenType == JsonToken.Null) - { - if (!objectType.IsGenericType || objectType.GetGenericTypeDefinition() != typeof(Nullable<>)) - throw new JsonSerializationException($"Cannot convert null value to {objectType}."); - - return null; - } - if (reader.TokenType == JsonToken.String) - { - return TimeSpan.Parse((string)reader.Value); - } - - throw new JsonSerializationException($"Cannot convert token of type {reader.TokenType} to {objectType}."); - } - - public override bool CanConvert(Type objectType) => objectType == typeof(TimeSpan) || objectType == typeof(TimeSpan?); -} -``` - -#Serialization settings - -Serialization settings are now configurable through `ConnectionSettings` constructor taking a factory function that returns an instance of `IElasticsearchSerializer`. - - -```c# -var setting = new ConnectionSettings(..); - -setting.AddContractJsonConverters(type => new MyPrettyConverter(), type => new SomeOtherConverter()); -setting.SetJsonSerializerSettingsModifier(settings => settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore); -``` - -becomes - -```c# -var settings = new ConnectionSettings(connectionPool, connectionSettings => new MyJsonNetSerializer(connectionSettings)) - -public class MyJsonNetSerializer : JsonNetSerializer -{ - public MyJsonNetSerializer(IConnectionSettingsValues settings) : base(settings) - { - } - - protected override void ModifyJsonSerializerSettings(JsonSerializerSettings settings) - { - settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; - } - - protected override IList> ContractConverters => - new List> - { - type => new MyPrettyConverter(), - type => new SomeOtherConverter() - }; -} -``` - -#Renamed Types - -```diff -- class AggregationDescriptor`1 -+ class AggregationContainerDescriptor`1 - -- class AliasRequest -+ class BulkAliasRequest - -- class AllFieldMapping -+ class AllField - -- class AllocateClusteRerouteCommand -+ class AllocateClusterRerouteCommand - -- class AnalysisSettings -+ class Analysis - -- class AndFilter -+ class AndQuery - -- class AverageAggregator -+ class AverageAggregation - -- class AzureRepositoryDescriptor -+ class AzureRepositorySettingsDescriptor - -- class BoolFilter -+ class BoolQuery - -- class CardinalityAggregator -+ class CardinalityAggregation - -- class ChildrenAggregator -+ class ChildrenAggregation - -- class DateHistogramAggregator -+ class DateHistogramAggregation - -- class DateRangeAggregator -+ class DateRangeAggregation - -- enum DynamicMappingOption -+ enum DynamicMapping - -- class ExistsFilter -+ class ExistsQuery - -- class ExtendedStatsAggregator -+ class ExtendedStatsAggregation - -- enum FieldDataLoading -+ enum FielddataLoading - -- class FieldDataStats -+ class FielddataStats - -- class FileSystemRepositoryDescriptor -+ class FileSystemRepositorySettingsDescriptor - -- class FilterAggregator -+ class FilterAggregation - -- class FiltersAggregator -+ class FiltersAggregation - -- class GeoBoundingBoxFilter -+ class GeoBoundingBoxQuery - -- class GeoBoundsAggregator -+ class GeoBoundsAggregation - -- class GeoDistanceAggregator -+ class GeoDistanceAggregation - -- class GeoDistanceFilter -+ class GeoDistanceQuery - -- class GeoDistanceRangeFilter -+ class GeoDistanceRangeQuery - -- class GeoHashCellFilter -+ class GeoHashCellQuery - -- class GeoIndexedShapeFilter -+ class GeoIndexedShapeQuery - -- class GeoPolygonFilter -+ class GeoPolygonQuery - -- class GeoShapeCircleFilter -+ class GeoShapeCircleQuery - -- class GeoShapeEnvelopeFilter -+ class GeoShapeEnvelopeQuery - -- class GeoShapeLineStringFilter -+ class GeoShapeLineStringQuery - -- class GeoShapeMultiLineStringFilter -+ class GeoShapeMultiLineStringQuery - -- class GeoShapeMultiPointFilter -+ class GeoShapeMultiPointQuery - -- class GeoShapeMultiPolygonFilter -+ class GeoShapeMultiPolygonQuery - -- class GeoShapePointFilter -+ class GeoShapePointQuery - -- class GeoShapePolygonFilter -+ class GeoShapePolygonQuery - -- class GlobalAggregator -+ class GlobalAggregation - -- class HasChildFilter -+ class HasChildQuery - -- class HasParentFilter -+ class HasParentQuery - -- class HdfsRepositoryDescriptor -+ class HdfsRepositorySettingsDescriptor - -- class HistogramAggregator -+ class HistogramAggregation - -- interface IAndFilter -+ interface IAndQuery - -- interface IAverageAggregator -+ interface IAverageAggregation - -- interface IBoolFilter -+ interface IBoolQuery - -- interface IBucketAggregator -+ interface IBucketAggregation - -- interface ICardinalityAggregator -+ interface ICardinalityAggregation - -- interface IChildrenAggregator -+ interface IChildrenAggregation - -- interface IDateHistogramAggregator -+ interface IDateHistogramAggregation - -- interface IDateRangeAggregator -+ interface IDateRangeAggregation - -- class IdsFilter -+ class IdsQuery - -- class IdsFilterDescriptor -+ class IdsQueryDescriptor - -- interface IExistsFilter -+ interface IExistsQuery - -- interface IExtendedStatsAggregator -+ interface IExtendedStatsAggregation - -- interface IFieldNameFilter -+ interface IFieldNameQuery - -- interface IFilter -+ interface IQuery - -- interface IFilterAggregator -+ interface IFilterAggregation - -- interface IFiltersAggregator -+ interface IFiltersAggregation - -- interface IGeoBoundingBoxFilter -+ interface IGeoBoundingBoxQuery - -- interface IGeoBoundsAggregator -+ interface IGeoBoundsAggregation - -- interface IGeoDistanceAggregator -+ interface IGeoDistanceAggregation - -- interface IGeoDistanceFilter -+ interface IGeoDistanceQuery - -- interface IGeoDistanceRangeFilter -+ interface IGeoDistanceRangeQuery - -- interface IGeoHashCellFilter -+ interface IGeoHashCellQuery - -- interface IGeoIndexedShapeFilter -+ interface IGeoIndexedShapeQuery - -- interface IGeoPolygonFilter -+ interface IGeoPolygonQuery - -- interface IGeoShapeCircleFilter -+ interface IGeoShapeCircleQuery - -- interface IGeoShapeEnvelopeFilter -+ interface IGeoShapeEnvelopeQuery - -- interface IGeoShapeLineStringFilter -+ interface IGeoShapeLineStringQuery - -- interface IGeoShapeMultiLineStringFilter -+ interface IGeoShapeMultiLineStringQuery - -- interface IGeoShapeMultiPointFilter -+ interface IGeoShapeMultiPointQuery - -- interface IGeoShapeMultiPolygonFilter -+ interface IGeoShapeMultiPolygonQuery - -- interface IGeoShapePointFilter -+ interface IGeoShapePointQuery - -- interface IGeoShapePolygonFilter -+ interface IGeoShapePolygonQuery - -- interface IGlobalAggregator -+ interface IGlobalAggregation - -- interface IHasChildFilter -+ interface IHasChildQuery - -- interface IHasParentFilter -+ interface IHasParentQuery - -- interface IHistogramAggregator -+ interface IHistogramAggregation - -- interface IIdsFilter -+ interface IIdsQuery - -- interface IIndicesFilter -+ interface IIndicesQuery - -- interface ILimitFilter -+ interface ILimitQuery - -- interface IMatchAllFilter -+ interface IMatchAllQuery - -- interface IMaxAggregator -+ interface IMaxAggregation - -- interface IMetricAggregator -+ interface IMetricAggregation - -- interface IMinAggregator -+ interface IMinAggregation - -- interface IMissingAggregator -+ interface IMissingAggregation - -- interface IMissingFilter -+ interface IMissingQuery - -- class IndicesFilter -+ class IndicesQuery - -- interface INestedAggregator -+ interface INestedAggregation - -- interface INestedFilter -+ interface INestedQuery - -- interface INotFilter -+ interface INotQuery - -- interface IOrFilter -+ interface IOrQuery - -- interface IPercentilesAggregator -+ interface IPercentilesAggregation - -- interface IPrefixFilter -+ interface IPrefixQuery - -- interface IRangeAggregator -+ interface IRangeAggregation - -- interface IRangeFilter -+ interface IRangeQuery - -- interface IRegexpFilter -+ interface IRegexpQuery - -- interface IRepository -+ interface ISnapshotRepository - -- interface IReverseNestedAggregator -+ interface IReverseNestedAggregation - -- interface IScriptedMetricAggregator -+ interface IScriptedMetricAggregation - -- interface IScriptFilter -+ interface IScriptQuery - -- interface ISignificantTermsAggregator -+ interface ISignificantTermsAggregation - -- interface ISumAggregator -+ interface ISumAggregation - -- interface ITermFilter -+ interface ITermQuery - -- interface ITermsAggregator -+ interface ITermsAggregation - -- interface ITermsFilter -+ interface ITermsQuery - -- interface ITopHitsAggregator -+ interface ITopHitsAggregation - -- interface ITypeFilter -+ interface ITypeQuery - -- interface IValueCountAggregator -+ interface IValueCountAggregation - -- class LimitFilter -+ class LimitQuery - -- class MatchAllFilter -+ class MatchAllQuery - -- class MatchAllFilterDescriptor -+ class MatchAllQueryDescriptor - -- class MaxAggregator -+ class MaxAggregation - -- class MinAggregator -+ class MinAggregation - -- class MissingAggregator -+ class MissingAggregation - -- class MissingFilter -+ class MissingQuery - -- class NestedAggregator -+ class NestedAggregation - -- class NestedFilter -+ class NestedQuery - -- class NotFilter -+ class NotQuery - -- class OrFilter -+ class OrQuery - -- class PercentilesAggregator -+ class PercentilesAggregation - -- class PrefixFilter -+ class PrefixQuery - -- class RangeAggregator -+ class RangeAggregation - -- class RawFilter -+ class RawQuery - -- class ReadOnlyUrlRepositoryDescriptor -+ class ReadOnlyUrlRepositorySettingsDescriptor - -- class RegexpFilter -+ class RegexpQuery - -- class ReverseNestedAggregator -+ class ReverseNestedAggregation - -- class S3RepositoryDescriptor -+ class S3RepositorySettingsDescriptor - -- class ScriptFilter -+ class ScriptQuery - -- class SignificantTermsAggregator -+ class SignificantTermsAggregation - -- class StatsAggregator -+ class StatsAggregation - -- class SuggestOption -+ class Suggest - -- class SumAggregator -+ class SumAggregation - -- class TermFilter -+ class TermQuery - -- class TermsAggregator -+ class TermsAggregation - -- class TermsFilter -+ class TermsQuery - -- enum TermVectorOption -+ enum TermVector - -- class TopHitsAggregator -+ class TopHitsAggregation - -- class TypeFilter -+ class TypeQuery - -- class TypeFilterDescriptor -+ class TypeQueryDescriptor - -- class ValueCountAggregator -+ class ValueCountAggregation - -``` - -#Removed Types - -```diff -- class AbortBenchmarkDescriptor -- class AbortBenchmarkRequest -- class AcknowledgedResponse -- class AggregationConverter -- class AliasExtensions -- class AllFieldMappingDescriptor -- class AnalysisSettingsConverter -- class AnalyzerCollectionConverter -- class AnalyzerFieldMapping -- class AnalyzerFieldMappingDescriptor`1 -- class AndFilterDescriptor -- class AsciiFoldingTokenFilter -- class AttachmentMapping -- class AttachmentMappingDescriptor`1 -- class BaseFacetDescriptor`2 -- class BasePathDescriptor`2 -- class BasePathRequest`1 -- class BaseRequest`1 -- class BaseResponse -- class BaseSuggestDescriptor`1 -- class BinaryMapping -- class BinaryMappingDescriptor`1 -- class BoolBaseFilterDescriptor -- class BoolBaseQueryDescriptor -- class BooleanMapping -- class BooleanMappingDescriptor`1 -- class BoolFilterDescriptor`1 -- class BoostFactorFunction`1 -- class BoostFieldMapping -- class BoostFieldMappingDescriptor`1 -- class BucketAggregationBaseDescriptor`2 -- class BucketAggregator -- class BucketWithDocCount -- class BucketWithDocCount`1 -- class BulkOperationDescriptorBase -- class BulkOperationResponseItem -- class BulkOperationResponseItemConverter -- class CategorySuggestDescriptor`1 -- class CatFielddataRecordConverter -- class CatThreadPoolRecordConverter -- class CharFilterCollectionConverter -- enum ChildScoreType -- class ClusterCpu -- class ClusterOs -- class ClusterOsMemory -- class ClusterRerouteCommandCollectionConverter -- class ClusterSettingsDescriptor -- class ClusterSettingsRequest -- class CommonGramsTokenFilter -- class CompletionMapping -- class CompletionMappingDescriptor`1 -- class CompletionSuggestDescriptor`1 -- class CompositeJsonConverter`2 -- class CompoundWordTokenFilter -- class ConditionlessFilterDescriptor`1 -- class ConnectionSettings`1 -- class CoordinatedRequestObserver`1 -- class CorePropertiesDescriptor`1 -- class CountExtensions -- class CreateAliasDescriptor -- class CreateAliasOperation -- class CreateIndexExtensions -- class CreateWarmerDescriptor -- class CustomBoostFactorQuery -- class CustomBoostFactorQueryDescriptor`1 -- class CustomFiltersScoreQueryDescriptor`1 -- class CustomJsonConverter -- class CustomScoreQuery -- class CustomScoreQueryDescriptor`1 -- class DateEntry -- class DateExpressionRange -- class DateHistogramFacet -- class DateHistogramFacetDescriptor`1 -- class DateHistogramFacetRequest -- class DateMapping -- class DateMappingDescriptor`1 -- class DateRange -- class DateRangeFacet -- enum DateRounding -- class DeleteAliasDescriptor`1 -- class DeleteByQueryIndices -- class DeleteExtensions -- class DeleteIndexExtensions -- class DeleteMappingDescriptor`1 -- class DeleteMappingRequest -- class DeleteMappingRequest`1 -- class DeleteTemplateDescriptor -- class DeleteTemplateRequest -- class DelimitedPayloadTokenFilter -- class DescriptorForAttribute -- class DictionaryDecompounderTokenFilter -- class DictionaryKeysAreNotPropertyNamesJsonConverter -- class DismaxQuery -- class DismaxQueryJsonConverter -- class DispatchException -- class Document -- class DocumentConverter -- class DocumentOptionalPathBase`1 -- class DocumentOptionalPathBase`2 -- class DocumentOptionalPathDescriptor`3 -- class DocumentPathBase`1 -- class DocumentPathBase`2 -- class DocumentPathDescriptor`3 -- class DslException -- class DynamicMappingOptionConverter -- class DynamicTemplatesConverter -- class DynamicTemplatesDescriptor`1 -- class EdgeNGramTokenFilter -- class ElasticAttributes -- class ElasticCoreTypeConverter -- class ElasticInferrer -- class ElasticPropertyAttribute -- class ElasticsearchPathInfo`1 -- class ElasticTypeAttribute -- class ElasticTypeConverter -- class ElasticTypesConverter -- class ElisionTokenFilter -- class EmptyResponse -- class ExistsExtensions -- class ExistsFilterDescriptor -- class ExpFunction`1 -- class ExplainDescriptor -- class ExplainGet`1 -- class ExplainRequest -- class ExpressionVisitor -- class ExternalFieldDeclaration -- class ExternalFieldDeclarationDescriptor`1 -- class Facet -- class FacetContainer -- class FacetConverter -- class FacetItem -- class FacetRequest -- class FieldDataFilter -- class FieldDataFilterDescriptor -- class FieldDataFrequencyFilter -- class FieldDataFrequencyFilterDescriptor -- class FieldDataMapping -- enum FieldDataNonStringFormat -- class FieldDataNonStringMapping -- class FieldDataNonStringMappingDescriptor -- class FieldDataRegexFilter -- class FieldDataRegexFilterDescriptor -- enum FieldDataStringFormat -- class FieldDataStringMapping -- class FieldDataStringMappingDescriptor -- enum FieldIndexOption -- class FieldMappingConverter -- class FieldNameFilterConverter`1 -- class FieldNameQueryConverter`1 -- class FieldNamesFieldMapping -- class FieldNamesFieldMappingDescriptor`1 -- class FieldSelection`1 -- class FieldValueFactor`1 -- class FieldValueFactorDescriptor`1 -- class Filter`1 -- class FilterAggregatorConverter -- class FilterBase -- class FilterCacheStats -- class FilterContainer -- class FilterDescriptor`1 -- class FilterFacet -- class FiltersAggregatorConverter -- class FilterScoreQuery -- class FilterScoreQueryDescriptor`1 -- class FixedIndexTypePathBase`1 -- class FixedIndexTypePathDescriptor`2 -- class FluentFieldList`1 -- class ForceStringReader -- class FunctionScoreDecayFieldDescriptor -- class FunctionScoreDecayFunction`1 -- class FunctionScoreFunction`1 -- class FunctionScoreFunctionsDescriptor`1 -- class FuzzinessConverter -- class FuzzyLikeThisQuery -- class FuzzyLikeThisQueryDescriptor`1 -- class FuzzyQueryJsonConverter -- class FuzzyStringQuery -- class GaussFunction`1 -- class GenericMapping -- class GenericMappingDescriptor`1 -- class GeoBoundingBoxFilterDescriptor -- class GeoBoundingFilterConverter -- enum GeoDistance -- class GeoDistanceFacet -- class GeoDistanceFacetDescriptor`1 -- class GeoDistanceFacetRequest -- class GeoDistanceFilterConverter -- class GeoDistanceFilterDescriptor -- class GeoDistanceRange -- class GeoDistanceRangeFilterConverter -- class GeoDistanceRangeFilterDescriptor -- class GeoHashAggregationDescriptor`1 -- class GeoHashAggregator -- class GeoHashCellFilterConverter -- class GeoHashCellFilterDescriptor -- class GeoIndexedShapeFilterDescriptor -- class GeoLocationSuggestDescriptor`1 -- class GeoPointMapping -- class GeoPointMappingDescriptor`1 -- class GeoPolygonFilterDescriptor -- class GeoPolygonFilterJsonReader -- class GeoPrecision -- class GeoPrecisionConverter -- enum GeoPrecisionUnit -- class GeoShape -- class GeoShapeCircleFilterDescriptor -- class GeoShapeConverterBase -- class GeoShapeEnvelopeFilterDescriptor -- class GeoShapeFilterJsonReader -- class GeoShapeLineStringFilterDescriptor -- class GeoShapeMapping -- class GeoShapeMappingDescriptor`1 -- class GeoShapeMultiLineStringFilterDescriptor -- class GeoShapeMultiPointFilterDescriptor -- class GeoShapeMultiPolygonFilterDescriptor -- class GeoShapePointFilterDescriptor -- class GeoShapePolygonFilterDescriptor -- class GeoShapeQueryJsonReader -- enum GeoUnit -- class GetExtensions -- class GetFieldMappingRequest`1 -- class GetFromUpdate -- enum GetIndexFeature -- class GetMappingRequest`1 -- class GetRepositoryResponseConverter -- class GetTemplateDescriptor -- class GetTemplateRequest -- class GlobalStatsResponse -- class HasChildFilterDescriptor`1 -- class HasParentFilterDescriptor`1 -- class HealthResponse -- class HfdsRepository -- class HighlightRequest -- class HistogramFacet -- class HistogramFacetDescriptor`1 -- class HistogramFacetItem -- class HistogramFacetRequest -- class HtmlStripCharFilter -- class HunspellTokenFilter -- class HyphenationDecompounderTokenFilter -- interface IAggregationDescriptor -- interface IAliasRequest -- interface IAllFieldMapping -- interface IAnalysisSetting -- interface IAnalyzerFieldMapping -- interface IBoostFieldMapping -- interface IBucketWithCountAggregation -- interface IClusterSettingsRequest -- interface ICreateAliasOperation -- interface ICustomBoostFactorQuery -- interface ICustomFiltersScoreQuery -- interface ICustomJson -- interface ICustomJsonReader`1 -- interface ICustomScoreQuery -- interface IDateHistogramFacetRequest -- class IdCacheStats -- interface IDeleteMappingRequest -- interface IDeleteMappingRequest`1 -- interface IDeleteTemplateRequest -- class IdFieldMapping -- class IdFieldMappingDescriptor -- interface IDocument -- interface IDocumentOptionalPath`1 -- interface IDocumentOptionalPath`2 -- class IdsQueryProperDescriptor -- interface IElasticCoreType -- interface IElasticPropertyAttribute -- interface IElasticPropertyVisitor -- interface IElasticsearchPathInfo -- interface IElasticType -- interface IEmptyResponse -- interface IExplainRequest -- interface IExternalFieldDeclaration -- interface IFacet -- interface IFacet`1 -- interface IFacetContainer -- interface IFacetDescriptor`1 -- interface IFacetRequest -- interface IFieldNamesFieldMapping -- interface IFieldSelection`1 -- interface IFilterContainer -- interface IFilterScoreQuery -- interface IFixedIndexTypePath`1 -- interface IFunctionScoreFunction -- interface IFuzzyLikeThisQuery -- interface IGeoDistanceFacetRequest -- interface IGeoHashAggregator -- interface IGeoShapeBaseFilter -- interface IGetFieldMappingRequest`1 -- interface IGetMappingRequest`1 -- interface IGetTemplateRequest -- interface IGlobalStatsResponse -- interface IHealthResponse -- interface IHighlightRequest -- interface IHistogramFacetRequest -- interface IIdFieldMapping -- interface IIndexFieldMapping -- interface IIndexNamePath`1 -- interface IIndexOptionalNamePath`1 -- interface IIndexOptionalPath`1 -- interface IIndexPath`1 -- interface IIndexSettingsResponse -- interface IIndexTypePath`1 -- interface IIndicesOperationResponse -- interface IIndicesOptionalExplicitAllPath`1 -- interface IIndicesOptionalPath`1 -- interface IIndicesOptionalTypesNamePath`1 -- interface IIndicesOptionalTypesOptionalFieldsPath`1 -- interface IIndicesOptionalTypesOptionalFieldsPath`2 -- interface IIndicesStatusRequest -- interface IIndicesTypePath`1 -- interface IInfoRequest -- interface IIp4RangeAggregator -- interface IMoreLikeThisRequest -- interface IMoreLikeThisRequest`1 -- interface IMultiTermVectorDocumentDescriptor -- interface IMultiTermVectorHit -- interface IMultiTermVectorResponse -- interface INamePath`1 -- class IndexAliases -- class IndexDocStats -- class IndexedGeoShape -- class IndexFieldMapping -- class IndexFieldMappingDescriptor -- class IndexMetadata -- class IndexNameMarker -- class IndexNameMarkerConverter -- class IndexNameMarkerExtensions -- class IndexNamePathBase`1 -- class IndexNamePathBase`2 -- class IndexNamePathDescriptor`3 -- class IndexOptionalNamePathBase`1 -- class IndexOptionalNamePathDescriptor`2 -- class IndexOptionalPathBase`1 -- class IndexOptionalPathDescriptorBase`2 -- class IndexPathBase`1 -- class IndexPathDescriptorBase`2 -- class IndexSettingsConverter -- class IndexSettingsResponse -- class IndexSettingsResponseConverter -- class IndexSizeStats -- class IndexStatus -- class IndexTypePathBase`1 -- class IndexTypePathBase`2 -- class IndexTypePathDescriptor`2 -- class IndexTypePathDescriptor`3 -- class IndicesExistsAliasDescriptor -- class IndicesExistsAliasRequest -- class IndicesExistsTemplateDescriptor -- class IndicesExistsTemplateRequest -- class IndicesExistsTypeDescriptor -- class IndicesExistsTypeRequest -- class IndicesFilterDescriptor`1 -- class IndicesOperationResponse -- class IndicesOptionalExplicitAllPathBase`1 -- class IndicesOptionalExplicitAllPathDescriptor`2 -- class IndicesOptionalPathBase`1 -- class IndicesOptionalPathDescriptor`2 -- class IndicesOptionalTypesNamePathBase`1 -- class IndicesOptionalTypesNamePathDescriptor`2 -- class IndicesOptionalTypesOptionalFieldsPathBase`1 -- class IndicesOptionalTypesOptionalFieldsPathBase`2 -- class IndicesOptionalTypesOptionalFieldsPathDescriptor`3 -- class IndicesRecoveryDescriptor -- class IndicesRecoveryRequest -- class IndicesResponse -- class IndicesShardsIndexStats -- class IndicesShardsIndexStatsMetrics -- class IndicesShardsStats -- class IndicesStatusDescriptor -- class IndicesStatusRequest -- class IndicesTypePathBase`1 -- class IndicesTypePathBase`2 -- class IndicesTypePathDescriptor`3 -- interface INestSerializable -- interface INestSerializer -- class InfoDescriptor -- class InfoRequest -- interface INodeIdOptionalPath`1 -- interface INodeInfoResponse -- interface INodesShutdownRequest -- interface INodesShutdownResponse -- interface INodeStatsResponse -- class Ip4Range -- class Ip4RangeAggregationDescriptor`1 -- class Ip4RangeAggregator -- interface IPathInfo`1 -- interface IPercentileRanksAggregaor -- class IPMapping -- class IPMappingDescriptor`1 -- interface IPropertyMapping -- interface IPutTemplateRequest -- interface IQueryFilter -- interface IQueryPath`1 -- interface IQueryPath`2 -- interface IRangeFacetRequest`1 -- interface IRegisterPercolateResponse -- interface IRepositoryOptionalPath`1 -- interface IRepositoryPath`1 -- interface IRepositorySnapshotOptionalPath`1 -- interface IRepositorySnapshotPath`1 -- interface IRootInfoResponse -- interface IRoutingFieldMapping -- interface ISearchTemplateRequest`1 -- interface ISizeFieldMapping -- interface ISourceFieldMapping -- interface ISourceFilter -- interface ISpecialField -- interface IStatisticalFacetRequest -- interface IStatsAggregator -- interface IStatusResponse -- interface IStringFuzzyQuery -- interface ITemplateExistsRequest -- interface ITemplateResponse -- interface ITermFacetRequest -- interface ITermsBaseFilter -- interface ITermsLookupFilter -- interface ITermsStatsFacetRequest -- interface ITermvectorRequest -- interface ITermvectorRequest`1 -- interface ITermVectorResponse -- interface ITimestampFieldMapping -- interface ITopChildrenQuery -- interface ITtlFieldMapping -- interface ITypeFieldMapping -- interface IUnregisterPercolateResponse -- interface IUnregisterPercolatorRequest`1 -- interface IUpdateResponse -- interface IUpdateSettingsRequest -- interface IWarmerResponse -- class JVM -- class KeepTypesTokenFilter -- class KeepWordsTokenFilter -- class KeyItem -- class KeywordMarkerTokenFilter -- class KeywordRepeatTokenFilter -- class KStemTokenFilter -- class LengthTokenFilter -- class LimitFilterDescriptor -- class LimitTokenCountTokenFilter -- class LinearFunction`1 -- class ListBenchmarksDescriptor -- class ListBenchmarksRequest -- class LMJelinekSimilarity -- class LowercaseTokenFilter -- class MappingCharFilter -- class MappingTransformConverter -- class MatchQueryJsonConverter -- class MetricAggregationBaseDescriptor`2 -- class MetricAggregator -- class MissingFilterDescriptor -- class MoreLikeThisDescriptor`1 -- class MoreLikeThisQueryDocumentsDescriptor`1 -- class MoreLikeThisRequest -- class MoreLikeThisRequest`1 -- class MpercolateDescriptor -- class MpercolateRequest -- class MultiFieldMapping -- class MultiFieldMappingDescriptor`1 -- class MultiFieldMappingPath -- class MultiGetHitConverter -- class MultiHit`1 -- class MultiSearchConverter -- class MultiTermVectorDocument -- class MultiTermVectorDocumentDescriptor`1 -- class MultiTermVectorHit -- class MultiTermVectorResponse -- class MultiTermVectorsDescriptor`1 -- class Murmur3HashMapping -- class MurmurHashMappingDescriptor`1 -- class NamePathBase`1 -- class NamePathDescriptor`2 -- class NestedFilterDescriptor`1 -- class NestedObjectMapping -- class NestedObjectMappingDescriptor`2 -- enum NestedScore -- class NestSerializer -- class NetworkStats -- class NgramTokenFilter -- class NodeIdOptionalDescriptor`2 -- class NodeIdOptionalPathBase`1 -- class NodeInfoHTTP -- class NodeInfoJVM -- class NodeInfoOS -- class NodeInfoProcess -- class NodeInfoResponse -- class NodeInfoThreadPoolThreadInfo -- class NodesShutdownDescriptor -- class NodesShutdownRequest -- class NodesShutdownResponse -- class NodeStatsIndexes -- class NodeStatsResponse -- class NoMatchFilterContainer -- class NoMatchFilterConverter -- class NoMatchQueryConverter -- enum NonStringIndexOption -- class NormsMapping -- class NotFilterDescriptor -- class NumberMapping -- class NumberMappingDescriptor`1 -- class ObjectMapping -- class ObjectMappingDescriptor`2 -- class OpenCloseIndexExtensions -- class OrFilterDescriptor -- class OSStats -- class ParentFieldMapping -- enum ParentScoreType -- class ParentTypeMapping -- enum PathInfoHttpMethod -- class PatternCaptureTokenFilter -- class PatternReplaceCharFilter -- class PatternReplaceTokenFilter -- class PhoneticTokenFilter -- class PhraseSuggestDescriptor`1 -- class PlainFilter -- class PlainQuery -- class PorterStemTokenFilter -- class PrefixFilterConverter -- class PrefixFilterDescriptor -- class Property -- class PropertyMapping -- class PropertyNameMarker -- class PropertyNameMarkerConverter -- class PropertyNameMarkerExtensions -- class PropertyNameResolver -- class PropertyPathMarker -- class PropertyPathMarkerConverter -- class PropertyPathMarkerExtensions -- class PutTemplateDescriptor -- class PutTemplateRequest -- class QueryDescriptor`1 -- class QueryFacet -- class QueryFilter -- class QueryFilterDescriptor -- class QueryFilterWalker -- class QueryPathBase`1 -- class QueryPathBase`2 -- class QueryPathDescriptorBase`3 -- class RandomScoreFunction`1 -- class Range`1 -- enum RangeExecution -- class RangeFacet -- class RangeFacetDescriptor`2 -- class RangeFacetRequest`1 -- class RangeFilter -- class RangeFilterDescriptor`1 -- class RangeFilterJsonConverter -- class RangeFilterJsonReader -- class RangeQuery -- class RangeQueryDescriptor`1 -- class ReadAsTypeConverter`1 -- class RegexpFilterDescriptor`1 -- class RegexpFilterJsonReader -- class RegisterPercolateResponse -- class ReindexException -- class ReindexObserver -- class RepositoryOptionalPathBase`1 -- class RepositoryOptionalPathDescriptor`2 -- class RepositoryPathBase`1 -- class RepositoryPathDescriptor`2 -- class RepositorySnapshotOptionalPathBase`1 -- class RepositorySnapshotOptionalPathDescriptor`2 -- class RepositorySnapshotPathBase`1 -- class RepositorySnapshotPathDescriptor`2 -- class RestoreException -- class ReverseTokenFilter -- class RootInfoResponse -- class RootObjectMapping -- enum RoutingAllocationEnableOption -- class RoutingFieldMapping -- class RoutingFieldMappingDescriptor`1 -- class ScriptedMetricsAggregator -- class ScriptFilterDescriptor -- class ScriptScoreFunction`1 -- class ScrollExtensions -- class SearchShardsDescriptor -- class SearchSourceDescriptor`1 -- class SerializerExtensions -- class ShardsFailureReason -- class ShardsOperationResponse -- class ShardsSegmentConverter -- class ShingleTokenFilter -- class SimilarityBase -- class SimilarityCollectionConverter -- class SimilarityDescriptor -- class SimilaritySettings -- class SimilaritySettingsConverter -- class SizeFieldMapping -- class SizeFieldMappingDescriptor -- class SnapshotException -- class SnapshotGetRepositoryDescriptor -- class SnapshotGetRepositoryRequest -- class SnapshotRepository -- class SnowballTokenFilter -- class Sort -- class SortCollectionConverter -- class SortDescriptorBase`2 -- class SourceExtensions -- class SourceFieldMapping -- class SourceFieldMappingDescriptor -- class SourceFilter -- class SpanNotQuery`1 -- class SpanQuery`1 -- class SpanTermQueryConverter -- class StandardTokenFilter -- class StatisticalFacet -- class StatisticalFacetDescriptor`1 -- class StatisticalFacetRequest -- class Stats -- class StatsContainer -- class StatusResponse -- class StemmerOverrideTokenFilter -- class StemmerTokenFilter -- class StopTokenFilter -- class StringMapping -- class StringMappingDescriptor`1 -- class Suggester -- class SuggestField -- class SuggestResponseConverter -- class SynonymTokenFilter -- class TemplateExistsDescriptor -- class TemplateExistsRequest -- class TemplateQueryDescriptor -- class TemplateResponse -- class TermFacet -- class TermFacetDescriptor`1 -- class TermFacetRequest -- class TermFilterConverter -- class TermFilterDescriptor -- class TermItem -- enum TermsExecution -- class TermsFilterConverter -- class TermsFilterDescriptor -- class TermsIncludeExcludeConverter -- class TermsLookupFilter -- class TermsLookupFilterDescriptor -- class TermsQueryDescriptor`2 -- class TermsQueryJsonConverter -- class TermsStatsFacetDescriptor`1 -- class TermsStatsFacetRequest -- enum TermsStatsOrder -- class TermStats -- class TermStatsFacet -- class TermSuggestDescriptor`1 -- class TermvectorDescriptor`1 -- class TermvectorRequest -- class TermvectorRequest`1 -- class TermVectorResponse -- class TimestampFieldMapping -- class TimestampFieldMappingDescriptor`1 -- class TokenFilterCollectionConverter -- class TokenizerCollectionConverter -- class TopChildrenQuery -- class TopChildrenQueryDescriptor`1 -- enum TopChildrenScore -- class TrimTokenFilter -- class TruncateTokenFilter -- class TtlFieldMapping -- class TtlFieldMappingDescriptor -- class TypeFieldMapping -- class TypeFieldMappingDescriptor -- class TypeMappingProperty -- class TypeMappingWriter -- class TypeNameMarker -- class TypeNameMarkerConverter -- class TypeNameMarkerExtensions -- class TypeStats -- class UniqueTokenFilter -- class UnixDateTimeConverter -- class UnregisterPercolateResponse -- class UpdatableSettings -- class UpdateRequest`1 -- class UpdateResponse -- class UpdateSettingsDescriptor -- class UpdateSettingsRequest -- class UpgradeStatusResponseConverter -- class UppercaseTokenFilter -- class UptimeStats -- class UriExtensions -- class UriJsonConverter -- class WarmerMapping -- class WarmerMappingConverter -- class WarmerResponse -- class WeightFunction`1 -- class WordDelimiterTokenFilter -- class WritePropertiesFromAttributeVisitor -- class YesNoBoolConverter -``` -#Member Changes - -```diff -class AggregationsHelper -- method: PercentilesRank -- method: TopHitsMetric -class AliasAddOperation -- prop: FilterDescriptor -class AliasDescriptor -- method: Add -- method: FilterPath -- method: MasterTimeout -- method: Remove -- method: Source -- method: Timeout -class AliasExistsRequest -- prop: Index -- prop: Name -- class AllFieldMapping -+ class AllField -- prop: IndexAnalyzer -class AnalyzeDescriptor -- method: IndexQueryString -class AnalyzeRequest -- prop: IndexQueryString -- prop: Indices -class AnalyzeResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class AndFilter -+ class AndQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- class AverageAggregator -+ class AverageAggregation -- prop: Language -- prop: Params -- class AzureRepositoryDescriptor -+ class AzureRepositorySettingsDescriptor -- method: ConcurrentStreams -class BM25Similarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -- class BoolFilter -+ class BoolQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class BulkCreateOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkDeleteOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkDescriptor -- method: Replication -- method: TypeQueryString -class BulkIndexDescriptor`1 -- method: Percolate -class BulkIndexOperation`1 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkOperationBase -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -class BulkRequest -- prop: Index -- prop: Replication -- prop: Type -- prop: TypeQueryString -class BulkResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class BulkUpdateOperation`2 -- prop: ClrType -- prop: Operation -- method: GetBody -- method: GetIdForOperation -- class CardinalityAggregator -+ class CardinalityAggregation -- prop: Language -- prop: Params -class CatFielddataRequest -- prop: Fields -class CatResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClearCacheDescriptor -- method: Filter -- method: FilterCache -- method: FilterKeys -- method: Id -- method: IdCache -- method: IndexQueryString -- method: QueryCache -class ClearCacheRequest -- prop: Filter -- prop: FilterCache -- prop: FilterKeys -- prop: Id -- prop: IdCache -- prop: IndexQueryString -- prop: Indices -- prop: QueryCache -class ClearScrollRequest -- prop: ScrollId -class CloseIndexRequest -- prop: Index -class ClusterFileSystem -- prop: DiskIoOps -- prop: DiskQueue -- prop: DiskReads -- prop: DiskReadSize -- prop: DiskReadSizeInBytes -- prop: DiskWrites -- prop: DiskWriteSize -- prop: DiskWriteSizeInBytes -class ClusterGetSettingsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterHealthRequest -- prop: Indices -class ClusterNodesStats -- prop: Os -class ClusterPendingTasksResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterPutSettingsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterRerouteDescriptor -- method: Commands -class ClusterRerouteResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterStateDescriptor -- method: Metrics -class ClusterStateRequest -- prop: Indices -- prop: Metrics -class ClusterStateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ClusterStatsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class CommonTermsQueryDescriptor`1 -- method: OnField -+ method: Field -class ConstantScoreQuery -- prop: IsConditionless -- prop: Query -class ConstantScoreQueryDescriptor`1 -- method: Query -class CountDescriptor`1 -- method: Q -class CountRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class CountRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class CountResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class CreateIndexDescriptor -- method: AddAlias -- method: AddMapping -- method: AddWarmer -- method: Analysis -- method: DeleteWarmer -- method: NumberOfReplicas -- method: NumberOfShards -- method: RemoveMapping -class CreateIndexRequest -- prop: Index -- prop: IndexSettings -class CreateRepositoryRequest -- prop: RepositoryName -class CustomAnalyzer -- prop: Alias -class DateHistogramAggregationDescriptor`1 -- method: Params -- method: PostOffset -- method: PostZone -- method: PreOffset -- method: PreZone -- method: PreZoneAdjustLargeInterval -- class DateHistogramAggregator -+ class DateHistogramAggregation -- prop: PostOffset -- prop: PostZone -- prop: PreOffset -- prop: PreZone -- prop: PreZoneAdjustLargeInterval -class DefaultSimilarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -class DeleteAliasRequest -- prop: Index -- prop: Name -class DeleteAliasResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteByQueryDescriptor`1 -- method: Consistency -- method: Q -- method: Replication -class DeleteByQueryRequest -- prop: AllIndices -- prop: AllTypes -- prop: Consistency -- prop: Indices -- prop: Q -- prop: Replication -- prop: Types -class DeleteByQueryRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Consistency -- prop: Indices -- prop: Q -- prop: Replication -- prop: Types -class DeleteDescriptor`1 -- method: Replication -class DeleteIndexRequest -- prop: AllIndices -- prop: Indices -class DeleteRepositoryRequest -- prop: RepositoryName -class DeleteRequest -- prop: Id -- prop: Index -- prop: Replication -- prop: Type -class DeleteRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class DeleteResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Indices -- prop: Infer -class DeleteScriptDescriptor -- method: Id -- method: Lang -class DeleteScriptRequest -- prop: Id -- prop: Lang -class DeleteScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteSearchTemplateRequest -- prop: Name -class DeleteSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class DeleteSnapshotRequest -- prop: Repository -- prop: Snapshot -class DeleteWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: Types -class DirectGeneratorDescriptor`1 -- method: OnField -+ method: Field -class DocumentExistsRequest -- prop: Id -- prop: Index -- prop: Type -class DocumentExistsRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class DynamicTemplateDescriptor`1 -- method: Name -class EdgeNGramTokenizer -- prop: Side -class ElasticClient -- prop: Connection -- method: ClusterSettings -+ method: ClusterPutSettings -- method: ClusterSettingsAsync -+ method: ClusterPutSettingsAsync -- method: DeleteMapping -- method: DeleteMappingAsync -- method: DeleteTemplate -+ method: DeleteSearchTemplate -- method: DeleteTemplateAsync -+ method: DeleteSearchTemplateAsync -- method: DeleteTemplateAync -- method: DoRequest -- method: DoRequestAsync -- method: GetTemplate -+ method: GetSearchTemplate -- method: GetTemplateAsync -+ method: GetSearchTemplateAsync -- method: MoreLikeThis -- method: MoreLikeThisAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: PutTemplate -+ method: PutSearchTemplate -- method: PutTemplateAsync -+ method: PutSearchTemplateAsync -- method: Status -- method: StatusAsync -- method: TemplateExists -- method: TemplateExistsAsync -- method: TermVector -- method: TermVectorAsync -- method: UpdateSettings -+ method: UpdateIndexSettings -- method: UpdateSettingsAsync -+ method: UpdateIndexSettingsAsync -- class ExistsFilter -+ class ExistsQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class ExistsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ExplainDescriptor`1 -- method: EnableSource -- method: Q -class ExplainRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Q -- prop: Type -class ExplainResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Fields -- prop: Infer -- prop: Source -- class ExtendedStatsAggregator -+ class ExtendedStatsAggregation -- prop: Language -- prop: Params -class FieldStatsRequest -- prop: AllIndices -- prop: Indices -class FieldStatsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class FileSystemRepositoryDescriptor -+ class FileSystemRepositorySettingsDescriptor -- method: SnapshortBytesPerSecondMaximum -class FiltersAggregationDescriptor`1 -- method: Filters -class FlushDescriptor -- method: Full -class FlushRequest -- prop: AllIndices -- prop: Indices -class FunctionScoreQuery -- prop: Filter -+ prop: Query -- prop: RandomScore -- prop: ScriptScore -- prop: Weight -- prop: WeightAsDouble -class FunctionScoreQueryDescriptor`1 -- method: Filter -- method: RandomScore -- method: ScriptScore -- method: Weight -class FuzzyDateQuery -- prop: UnicodeAware -class FuzzyDateQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -class FuzzyNumericQuery -- prop: UnicodeAware -class FuzzyNumericQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -class FuzzyQueryDescriptor`1 -- method: OnField -+ method: Field -- method: UnicodeAware -- class GeoBoundingBoxFilter -+ class GeoBoundingBoxQuery -- prop: BottomRight -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: GeoExecution -- prop: TopLeft -- class GeoBoundsAggregator -+ class GeoBoundsAggregation -- prop: Language -- prop: Params -- class GeoDistanceFilter -+ class GeoDistanceQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Unit -- class GeoDistanceRangeFilter -+ class GeoDistanceRangeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: From -- prop: IncludeLower -- prop: IncludeUpper -- prop: To -- prop: Unit -class GeoDistanceSort -- prop: PinLocation -+ prop: Points -- class GeoHashCellFilter -+ class GeoHashCellQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Unit -- class GeoIndexedShapeFilter -+ class GeoIndexedShapeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoLocation -- prop: Longtitude -- class GeoPolygonFilter -+ class GeoPolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- class GeoShapeCircleFilter -+ class GeoShapeCircleQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeCircleQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeEnvelopeFilter -+ class GeoShapeEnvelopeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeEnvelopeQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeLineStringFilter -+ class GeoShapeLineStringQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeLineStringQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiLineStringFilter -+ class GeoShapeMultiLineStringQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiLineStringQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiPointFilter -+ class GeoShapeMultiPointQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiPointQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapeMultiPolygonFilter -+ class GeoShapeMultiPolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapeMultiPolygonQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapePointFilter -+ class GeoShapePointQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapePointQueryDescriptor`1 -- method: OnField -+ method: Field -- class GeoShapePolygonFilter -+ class GeoShapePolygonQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Relation -class GeoShapePolygonQueryDescriptor`1 -- method: OnField -+ method: Field -class GetAliasesRequest -- prop: Indices -class GetAliasesResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetAliasRequest -- prop: Indices -class GetDescriptor`1 -- method: EnableSource -class GetFieldMappingRequest -- prop: Fields -- prop: Indices -- prop: Types -class GetFieldMappingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetIndexDescriptor -- method: Features -class GetIndexRequest -- prop: AllIndices -- prop: Features -- prop: Indices -class GetIndexResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetIndexSettingsRequest -- prop: Index -class GetMappingRequest -- prop: Index -- prop: Type -class GetMappingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetRepositoryRequest -- prop: RepositoryName -class GetRepositoryResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetRequest -- prop: EnableSource -- prop: Id -- prop: Index -- prop: Type -class GetRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class GetResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- method: FieldValue -class GetScriptDescriptor -- method: Id -- method: Lang -class GetScriptRequest -- prop: Id -- prop: Lang -class GetScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetSearchTemplateRequest -- prop: Name -class GetSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetSnapshotRequest -- prop: Repository -- prop: Snapshot -class GetSnapshotResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class GetWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: Types -- class HasChildFilter -+ class HasChildQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class HasChildQuery -- prop: ScoreType -+ prop: ScoreMode -class HasChildQueryDescriptor`1 -- method: Score -- class HasParentFilter -+ class HasParentQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class HasParentQuery -- prop: ScoreType -+ prop: ScoreMode -class HasParentQueryDescriptor`1 -- method: Score -class Highlight -- prop: DocumentId -- prop: Field -- prop: Highlights -class HighlightDescriptor`1 -- method: OnFields -+ method: Fields -class HighlightField -- prop: HighlightQuery -class HighlightFieldDescriptor`1 -- method: HighlightQuery -- method: OnField -+ method: Field -class HistogramAggregationDescriptor`1 -- method: Params -- class HistogramAggregator -+ class HistogramAggregation -- prop: Params -class HistogramItem -- prop: Date -class HotThreadInformation -- prop: Node -interface IBoolQuery -- prop: Boost -interface IClearScrollRequest -- prop: ScrollId -interface IClusterStateRequest -- prop: Metrics -interface ICommonTermsQuery -- prop: Boost -- prop: Field -interface IConnectionSettingsValues -- prop: ContractConverters -- prop: DefaultPropertyNameInferrer -- prop: ModifyJsonSerializerSettings -interface IConstantScoreQuery -- prop: Boost -- prop: Query -interface ICreateIndexRequest -- prop: IndexSettings -- interface IDateHistogramAggregator -+ interface IDateHistogramAggregation -- prop: PostOffset -- prop: PostZone -- prop: PreOffset -- prop: PreZone -- prop: PreZoneAdjustLargeInterval -interface IDeleteResponse -- prop: Indices -interface IDisMaxQuery -- prop: Boost -class IdResolver -- method: GetIdFor -- class IdsFilter -+ class IdsQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Type -class IdsQuery -- prop: Type -class IdsQueryDescriptor -- prop: Boost -- prop: Name -- prop: Type -- prop: Values -interface IElasticClient -- prop: Connection -- method: ClusterSettings -+ method: ClusterPutSettings -- method: ClusterSettingsAsync -+ method: ClusterPutSettingsAsync -- method: DeleteMapping -- method: DeleteMappingAsync -- method: DeleteTemplate -+ method: DeleteSearchTemplate -- method: DeleteTemplateAsync -+ method: DeleteSearchTemplateAsync -- method: DeleteTemplateAync -- method: DoRequest -- method: DoRequestAsync -- method: GetTemplate -+ method: GetSearchTemplate -- method: GetTemplateAsync -+ method: GetSearchTemplateAsync -- method: MoreLikeThis -- method: MoreLikeThisAsync -- method: NodesShutdown -- method: NodesShutdownAsync -- method: PutTemplate -+ method: PutSearchTemplate -- method: PutTemplateAsync -+ method: PutSearchTemplateAsync -- method: Status -- method: StatusAsync -- method: TemplateExists -- method: TemplateExistsAsync -- method: TermVector -- method: TermVectorAsync -- method: UpdateSettings -+ method: UpdateIndexSettings -- method: UpdateSettingsAsync -+ method: UpdateIndexSettingsAsync -interface IExplainResponse`1 -- prop: Fields -- prop: Source -interface IFieldNameQuery -- method: GetFieldName -- method: SetFieldName -interface IFieldSort -- prop: Field -- interface IFilter -+ interface IQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -interface IFilteredQuery -- prop: Boost -interface IFunctionScoreQuery -- prop: Boost -- prop: Filter -- prop: RandomScore -- prop: ScriptScore -- prop: Weight -- prop: WeightAsDouble -interface IFuzzyDateQuery -- prop: Value -interface IFuzzyNumericQuery -- prop: Value -interface IFuzzyQuery -- prop: Boost -- prop: Field -- prop: Fuzziness -- prop: UnicodeAware -- interface IGeoBoundingBoxFilter -+ interface IGeoBoundingBoxQuery -- prop: BottomRight -- prop: Field -- prop: GeoExecution -- prop: TopLeft -- interface IGeoDistanceFilter -+ interface IGeoDistanceQuery -- prop: Field -- prop: Unit -- interface IGeoDistanceRangeFilter -+ interface IGeoDistanceRangeQuery -- prop: Field -- prop: From -- prop: IncludeLower -- prop: IncludeUpper -- prop: To -- prop: Unit -interface IGeoDistanceSort -- prop: PinLocation -+ prop: Points -- interface IGeoHashCellFilter -+ interface IGeoHashCellQuery -- prop: Field -- prop: Unit -interface IGeoShapeCircleQuery -- prop: Boost -interface IGeoShapeEnvelopeQuery -- prop: Boost -interface IGeoShapeLineStringQuery -- prop: Boost -interface IGeoShapeMultiLineStringQuery -- prop: Boost -interface IGeoShapeMultiPointQuery -- prop: Boost -interface IGeoShapeMultiPolygonQuery -- prop: Boost -interface IGeoShapePointQuery -- prop: Boost -interface IGeoShapePolygonQuery -- prop: Boost -interface IGeoShapeQuery -- prop: Field -interface IGetIndexRequest -- prop: Features -- interface IHasChildFilter -+ interface IHasChildQuery -- prop: Filter -interface IHasChildQuery -- prop: Boost -- prop: ScoreType -- interface IHasParentFilter -+ interface IHasParentQuery -- prop: Filter -interface IHasParentQuery -- prop: Boost -- prop: ScoreType -interface IHighlightField -- prop: HighlightQuery -- interface IHistogramAggregator -+ interface IHistogramAggregation -- prop: Params -- interface IIdsFilter -+ interface IIdsQuery -- prop: Type -interface IIdsQuery -- prop: Boost -- prop: Type -- interface IIndicesFilter -+ interface IIndicesQuery -- prop: Filter -- prop: Index -- prop: NoMatchFilter -interface IIndicesQuery -- prop: Boost -- prop: Score -interface IIndicesStatsRequest -- prop: Metrics -- interface ILimitFilter -+ interface ILimitQuery -- prop: Value -interface IMatchAllQuery -- prop: Boost -interface IMatchQuery -- prop: Boost -- prop: Field -- prop: Rewrite -- interface IMetricAggregator -+ interface IMetricAggregation -- prop: Language -- prop: Params -interface IMoreLikeThisQuery -- prop: Boost -- prop: Documents -- prop: Ids -- prop: LikeText -- prop: TermMatchPercentage -interface IMultiGetOperation -- prop: Document -- prop: PerFieldAnalyzer -interface IMultiGetRequest -- prop: GetOperations -interface IMultiMatchQuery -- prop: Boost -- prop: Rewrite -class IndexDescriptor`1 -- method: Replication -class IndexExistsRequest -- prop: Index -class IndexNameResolver -- method: GetIndexForType -class IndexRequest`1 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class IndexResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class IndexSettings -- prop: Aliases -- prop: AsExpando -- prop: Mappings -- prop: Settings -- prop: Similarity -- prop: Warmers -- class IndicesFilter -+ class IndicesQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -- prop: Index -- prop: NoMatchFilter -- prop: Score -class IndicesQuery -- prop: Score -class IndicesStats -- prop: Completion -- prop: Count -- prop: Docs -- prop: FieldData -- prop: FilterCache -- prop: IdCache -- prop: Percolate -- prop: Segments -- prop: Shards -- prop: Store -class IndicesStatsDescriptor -- method: Metrics -class IndicesStatsRequest -- prop: Indices -- prop: Metrics -- interface INestedFilter -+ interface INestedQuery -- prop: Filter -- prop: Join -- prop: Score -interface INestedQuery -- prop: Boost -- prop: Filter -- prop: Score -interface INodesInfoRequest -- prop: Metrics -interface INodesStatsRequest -- prop: IndexMetrics -- prop: Metrics -- interface INotFilter -+ interface INotQuery -- prop: Filter -- interface IPercentilesAggregator -+ interface IPercentilesAggregation -- prop: Compression -- prop: Field -- prop: Params -- prop: Percentages -- prop: Script -interface IPercolateOperation -- prop: Facets -- prop: Id -interface IPhraseSuggestCollate -- prop: Filter -- prop: Params -- prop: Preference -- interface IPrefixFilter -+ interface IPrefixQuery -- prop: Prefix -interface IPutAliasRequest -- prop: IndexRouting -- prop: SearchRouting -interface IPutMappingRequest -- prop: Mapping -interface IPutWarmerRequest -- prop: SearchDescriptor -+ prop: Search -interface IQuery -- prop: IsConditionless -interface IQueryContainer -- prop: CustomBoostFactor -- prop: CustomFiltersScore -- prop: CustomScore -- prop: FuzzyLikeThis -- prop: MatchAllQuery -+ prop: MatchAll -- prop: TopChildren -interface IQueryStringQuery -- prop: Boost -- prop: FuzzyMinimumSimilarity -- prop: MinimumShouldMatchPercentage -- interface IRangeAggregator -+ interface IRangeAggregation -- prop: Params -- interface IRangeFilter -+ interface IRangeQuery -- prop: Execution -- prop: Format -- prop: GreaterThan -- prop: GreaterThanOrEqualTo -- prop: LowerThan -- prop: LowerThanOrEqualTo -- prop: TimeZone -interface IRangeQuery -- prop: Boost -- prop: Cache -- prop: Field -- prop: Format -- prop: GreaterThan -- prop: GreaterThanOrEqualTo -- prop: LowerThan -- prop: LowerThanOrEqualTo -- prop: TimeZone -interface IRegexpQuery -- prop: Boost -- prop: Field -interface IRegisterPercolatorRequest -- prop: MetaData -+ prop: Metadata -- interface IRepository -+ interface ISnapshotRepository -- prop: Settings -interface IRequest -- prop: RequestConfiguration -interface IResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- interface IScriptedMetricAggregator -+ interface IScriptedMetricAggregation -- prop: CombineScriptFile -- prop: CombineScriptId -- prop: InitScriptFile -- prop: InitScriptId -- prop: MapScriptFile -- prop: MapScriptId -- prop: ReduceParams -- prop: ReduceScriptFile -- prop: ReduceScriptId -- interface IScriptFilter -+ interface IScriptQuery -- prop: Script -- prop: ScriptFile -- prop: ScriptId -interface IScriptSort -- prop: File -- prop: Language -- prop: Params -interface IScrollRequest -- prop: TypeSelector -interface ISearchRequest -- prop: ClrType -- prop: Facets -- prop: Filter -- prop: QueryString -- prop: TypeSelector -interface ISearchResponse`1 -- prop: ElapsedMilliseconds -+ prop: Took -- prop: Facets -- prop: FieldSelections -- method: Facet -- method: FacetItems -interface ISearchTemplateRequest -- prop: ClrType -- prop: TypeSelector -interface ISimpleQueryStringQuery -- prop: Boost -- prop: DefaultField -interface ISpanFirstQuery -- prop: Boost -interface ISpanMultiTermQuery -- prop: Boost -interface ISpanNearQuery -- prop: Boost -interface ISpanNotQuery -- prop: Boost -interface ISpanOrQuery -- prop: Boost -interface ISpanQuery -- prop: SpanTermQueryDescriptor -+ prop: SpanTerm -interface ITemplateQuery -- prop: Boost -- prop: Query -- interface ITermFilter -+ interface ITermQuery -- prop: Boost -interface ITermQuery -- prop: Boost -- prop: Field -- interface ITermsAggregator -+ interface ITermsAggregation -- prop: Params -interface ITermsQuery -- prop: Boost -- prop: ExternalField -+ prop: TermsLookup -- prop: Field -- interface ITopHitsAggregator -+ interface ITopHitsAggregation -- prop: FieldDataFields -+ prop: FielddataFields -interface IUpdateRequest`2 -- prop: DetectNoop -- class LimitFilter -+ class LimitQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Value -class LMDirichletSimilarity -- prop: Normalization -- prop: NormalizationH1C -- prop: NormalizationH2C -- prop: NormalizationH3C -- prop: NormalizationZZ -- class MatchAllFilter -+ class MatchAllQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class MatchQuery -- prop: Rewrite -- prop: Type -class MatchQueryDescriptor`1 -- method: OnField -+ method: Field -- method: Rewrite -- class MaxAggregator -+ class MaxAggregation -- prop: Language -- prop: Params -- class MinAggregator -+ class MinAggregation -- prop: Language -- prop: Params -- class MissingFilter -+ class MissingQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class MoreLikeThisQuery -- prop: Documents -+ prop: Like -- prop: Ids -+ prop: Like -- prop: LikeText -+ prop: Like -class MoreLikeThisQueryDescriptor`1 -- method: Documents -- method: DocumentsExplicit -- method: Ids -- method: LikeText -- method: OnFields -+ method: Fields -- method: TermMatchPercentage -class MultiGetDescriptor -- method: EnableSource -class MultiGetHit`1 -- prop: FieldSelection -class MultiGetOperation`1 -- prop: PerFieldAnalyzer -class MultiGetOperationDescriptor`1 -- method: Document -- method: PerFieldAnalyzer -class MultiGetRequest -- prop: EnableSource -- prop: GetOperations -- prop: Index -- prop: Type -class MultiGetResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiMatchQuery -- prop: Rewrite -class MultiMatchQueryDescriptor`1 -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -- method: Rewrite -- method: UseDisMax -class MultiPercolateRequest -- prop: Index -- prop: Type -class MultiPercolateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiSearchRequest -- prop: Index -- prop: Type -class MultiSearchResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class MultiTermVectorsRequest -- prop: Index -- prop: Type -- class NestedFilter -+ class NestedQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -- prop: Join -- prop: Score -class NestedQuery -- prop: Filter -- prop: Score -class NestedQueryDescriptor`1 -- method: Filter -- method: Score -class NodeInfo -- prop: HTTP -+ prop: Http -- prop: JVM -+ prop: Jvm -- prop: OS -+ prop: OperatingSystem -class NodesHotThreadsDescriptor -- prop: NodeId -class NodesHotThreadsRequest -- prop: NodeId -class NodesHotThreadsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class NodesInfoDescriptor -- method: Metrics -class NodesInfoRequest -- prop: Metrics -- prop: NodeId -class NodesStatsDescriptor -- method: IndexMetrics -- method: Metrics -class NodesStatsRequest -- prop: IndexMetrics -- prop: Metrics -- prop: NodeId -class NodeStats -- prop: Hostname -- prop: HTTP -+ prop: Http -- prop: JVM -+ prop: Jvm -- prop: Network -- prop: OS -+ prop: OperatingSystem -class NoMatchQueryContainer -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -- class NotFilter -+ class NotQuery -- prop: Cache -- prop: CacheKey -- prop: Filter -- prop: FilterName -class OpenIndexRequest -- prop: Index -class OptimizeDescriptor -- method: Force -class OptimizeRequest -- prop: Force -- prop: Indices -- class OrFilter -+ class OrQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class PercentileRanksAggregation -- prop: Language -- prop: Params -class PercentilesAggregationDescriptor`1 -- method: Compression -- method: Params -- method: Percentages -- class PercentilesAggregator -+ class PercentilesAggregation -- prop: Compression -- prop: Params -- prop: Percentages -class PercolateCountDescriptor`1 -- method: Object -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class PercolateCountRequest`1 -- prop: Facets -- prop: Id -- prop: Index -- prop: Type -class PercolateCountResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PercolateDescriptor`1 -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class PercolateRequest`1 -- prop: Facets -- prop: Id -- prop: Index -- prop: Type -class PercolateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PhraseSuggestCollate -- prop: Filter -- prop: Params -- prop: Preference -class PhraseSuggestCollateDescriptor`1 -- method: Filter -- method: Params -- method: Preference -class PingResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PluginStats -- prop: Url -- class PrefixFilter -+ class PrefixQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Prefix -class PropertiesDescriptor`1 -- prop: Properties -- method: Generic -- method: IP -- method: MultiField -- method: NestedObject -- method: Remove -class PutAliasDescriptor -- method: IndexRouting -- method: SearchRouting -class PutAliasRequest -- prop: Index -- prop: IndexRouting -- prop: Name -- prop: SearchRouting -class PutAliasResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutMappingDescriptor`1 -- method: AnalyzerField -- method: BoostField -- method: Enabled -- method: IdField -- method: IgnoreConflicts -- method: IncludeInAll -- method: IndexAnalyzer -- method: InitializeUsing -- method: MapFromAttributes -- method: Path -- method: SetParent -- method: TypeField -class PutMappingRequest -- prop: AllIndices -- prop: IgnoreConflicts -- prop: Indices -- prop: Mapping -- prop: Type -class PutMappingRequest`1 -- prop: AllIndices -- prop: IgnoreConflicts -- prop: Indices -- prop: Mapping -- prop: Type -class PutScriptDescriptor -- method: Id -- method: Lang -class PutScriptRequest -- prop: Id -- prop: Lang -class PutScriptResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutSearchTemplateRequest -- prop: Name -class PutSearchTemplateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class PutWarmerRequest -- prop: AllIndices -- prop: Indices -- prop: Name -- prop: SearchDescriptor -+ prop: Search -- prop: Types -class QueryContainer -- prop: IsConditionless -- prop: IsStrict -- prop: IsVerbatim -- method: GetCustomJson -class QueryStringQuery -- prop: FuzzyMinimumSimilarity -- prop: MinimumShouldMatchPercentage -class QueryStringQueryDescriptor`1 -- method: FuzzyMinimumSimilarity -- method: MinimumShouldMatchPercentage -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -class Range -- prop: Count -- prop: Max -- prop: Mean -- prop: Min -- prop: Total -- prop: TotalCount -class RangeAggregationDescriptor`1 -- method: Params -- class RangeAggregator -+ class RangeAggregation -- prop: Params -class RecoveryStatusRequest -- prop: Indices -class RecoveryStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class RefreshRequest -- prop: Indices -- class RegexpFilter -+ class RegexpQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class RegexpQueryDescriptor`1 -- method: OnField -+ method: Field -class RegisterPercolatorDescriptor`1 -- method: AddMetadata -- method: GetCustomJson -class RegisterPercolatorRequest -- prop: Index -- prop: MetaData -+ prop: Metadata -- prop: Name -- method: GetCustomJson -class ReindexDescriptor`1 -- method: FromIndex -- method: NewIndexName -- method: ToIndex -class RescoreQueryDescriptor`1 -- prop: Self -class RestoreRequest -- prop: Repository -- prop: Snapshot -class RestoreResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ScriptedHeuristic -- prop: Lang -- prop: Params -class ScriptedHeuristicDescriptor -- method: Lang -- method: Params -class ScriptedMetricAggregationDescriptor`1 -- method: CombineScriptFile -- method: CombineScriptId -- method: InitScriptFile -- method: InitScriptId -- method: MapScriptFile -- method: MapScriptId -- method: ReduceParams -- method: ReduceScriptFile -- method: ReduceScriptId -- class ScriptFilter -+ class ScriptQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -- prop: Script -- prop: ScriptFile -- prop: ScriptId -class ScriptSort -- prop: File -- prop: Params -class SearchDescriptor`1 -- method: FacetDateHistogram -- method: FacetFilter -- method: FacetGeoDistance -- method: FacetHistogram -- method: FacetQuery -- method: FacetRange -- method: FacetStatistical -- method: FacetTerm -- method: FacetTermsStats -- method: Filter -- method: FilterRaw -- method: QueryCache -- method: QueryRaw -- method: QueryString -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortMulti -- method: SortScript -- method: Strict -- method: SuggestCompletion -- method: SuggestPhrase -- method: SuggestTerm -class SearchExistsDescriptor`1 -- method: Q -class SearchExistsRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class SearchExistsRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class SearchRequest -- prop: AllIndices -- prop: AllTypes -- prop: Facets -- prop: Filter -+ prop: PostFilter -- prop: Indices -- prop: QueryCache -- prop: QueryString -- prop: Types -class SearchRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: ClrType -- prop: Facets -- prop: Filter -+ prop: PostFilter -- prop: Indices -- prop: QueryCache -- prop: QueryString -- prop: Types -class SearchResponse`1 -- prop: ConnectionStatus -+ prop: ApiCall -- prop: ElapsedMilliseconds -+ prop: Took -- prop: Facets -- prop: FieldSelections -- prop: Infer -- method: Facet -- method: FacetItems -class SearchShardsRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchShardsRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchShardsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SearchTemplateRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Types -class SearchTemplateRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: ClrType -- prop: Indices -- prop: Types -class SegmentsRequest -- prop: Indices -class SegmentsResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SignificantTermsAggregationDescriptor`1 -- method: Exclude -- method: ExecutionHint -- method: Include -class SimpleQueryStringQuery -- prop: DefaultField -class SimpleQueryStringQueryDescriptor`1 -- method: DefaultField -- method: OnFields -+ method: Fields -- method: OnFieldsWithBoost -class SingleMappingDescriptor`1 -- method: Generic -- method: IP -- method: MultiField -- method: NestedObject -class Snapshot -- prop: Version -- prop: VersionId -class SnapshotRequest -- prop: Repository -- prop: Snapshot -class SnapshotResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SnapshotStatusRequest -- prop: Repository -- prop: Snapshot -class SnapshotStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class SortDescriptor`1 -- method: Sort -- method: SortAscending -- method: SortDescending -- method: SortGeoDistance -- method: SortScript -class SortFieldDescriptor`1 -- method: NestedAvg -- method: NestedMax -- method: NestedMin -- method: NestedSum -- method: OnField -+ method: Field -class SortGeoDistanceDescriptor`1 -- method: OnField -+ method: Field -class SortScriptDescriptor`1 -- prop: Self -- method: File -- method: Language -- method: Params -class SourceDescriptor`1 -- method: EnableSource -class SourceRequest -- prop: EnableSource -- prop: Id -- prop: Index -- prop: Type -class SourceRequest`1 -- prop: EnableSource -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Type -class SpanFirstQueryDescriptor`1 -- method: MatchTerm -class SpanMultiTermQuery -- prop: IsConditionless -class SpanQuery -- prop: Name -- prop: SpanTermQueryDescriptor -+ prop: SpanTerm -class StandardTokenizer -- prop: MaximumTokenLength -+ prop: MaxTokenLength -- class StatsAggregator -+ class StatsAggregation -- prop: Language -- prop: Params -- class SuggestOption -+ class Suggest -- prop: Frequency -- prop: Payload -- prop: Score -class SuggestRequest -- prop: AllIndices -- prop: Indices -class SuggestResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class SumAggregator -+ class SumAggregation -- prop: Language -- prop: Params -class SyncedFlushRequest -- prop: AllIndices -- prop: Indices -class TemplateQuery -- prop: IsConditionless -- prop: Query -- class TermFilter -+ class TermQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class TermQueryDescriptorBase`2 -- method: GetFieldName -- method: OnField -+ method: Field -- method: SetFieldName -class TermsAggregationDescriptor`1 -- method: Params -- class TermsAggregator -+ class TermsAggregation -- prop: Params -- class TermsFilter -+ class TermsQuery -- prop: Cache -- prop: CacheKey -- prop: Execution -- prop: FilterName -class TermsQuery -- prop: ExternalField -+ prop: TermsLookup -class TopHitsAggregationDescriptor`1 -- method: FieldDataFields -- class TopHitsAggregator -+ class TopHitsAggregation -- prop: FieldDataFields -+ prop: FielddataFields -- prop: Language -- prop: Params -class TypeExistsRequest -- prop: Index -- prop: Type -- class TypeFilter -+ class TypeQuery -- prop: Cache -- prop: CacheKey -- prop: FilterName -class TypeMapping -- prop: Mapping -- prop: TypeName -class TypeNameResolver -- method: GetTypeNameFor -class UaxEmailUrlTokenizer -- prop: MaximumTokenLength -+ prop: MaxTokenLength -class UnregisterPercolatorRequest -- prop: Index -- prop: Name -class UpdateDescriptor`2 -- method: Id -- method: Replication -class UpdateRequest`2 -- prop: Id -- prop: IdFrom -- prop: Index -- prop: Replication -- prop: Type -class UpgradeRequest -- prop: Indices -class UpgradeResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class UpgradeStatusRequest -- prop: Indices -class UpgradeStatusResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -class ValidateQueryDescriptor`1 -- method: Q -class ValidateQueryRequest -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class ValidateQueryRequest`1 -- prop: AllIndices -- prop: AllTypes -- prop: Indices -- prop: Q -- prop: Types -class ValidateResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -- class ValueCountAggregator -+ class ValueCountAggregation -- prop: Language -- prop: Params -class VerifyRepositoryRequest -- prop: RepositoryName -class VerifyRepositoryResponse -- prop: ConnectionStatus -+ prop: ApiCall -- prop: Infer -``` diff --git a/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc b/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc deleted file mode 100644 index b7597072196..00000000000 --- a/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc +++ /dev/null @@ -1,1665 +0,0 @@ -[[elasticsearch-net-breaking-changes]] -== Elasticsearch.Net Breaking Changes - -This lists all the *binary* breaking changes in Elasticsearch.Net from 2.x to 5.x. - -[float] -[[enums]] -=== Enums - -*public enum Elasticsearch.Net.Consistency* _Removed (Breaking)_ - -*public enum Elasticsearch.Net.Bytes* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -public enum Bytes -{ - B = 0, - K = 1, - M = 2, - G = 3 -} ----- - -5.x - -[source,csharp] ----- -public enum Bytes -{ - B = 0, - K = 1, - Kb = 2, - M = 3, - Mb = 4, - G = 5, - Gb = 6, - T = 7, - Tb = 8, - P = 9, - Pb = 10 -} ----- - -*public enum Elasticsearch.Net.Feature* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[FlagsAttribute] -public enum Feature -{ - Settings = 1, - Mappings = 2, - Warmers = 4, - Aliases = 8 -} ----- - -5.x - -[source,csharp] ----- -[FlagsAttribute] -public enum Feature -{ - Settings = 1, - Mappings = 2, - Aliases = 4 -} ----- - -*public enum Elasticsearch.Net.NodesStatsMetric* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -[FlagsAttribute] -public enum NodesStatsMetric -{ - Breaker = 1, - Fs = 2, - Http = 4, - Indices = 8, - Jvm = 16, - Os = 32, - Process = 64, - ThreadPool = 128, - Transport = 256, - All = 512 -} ----- - -5.x - -[source,csharp] ----- -[FlagsAttribute] -public enum NodesStatsMetric -{ - Breaker = 1, - Fs = 2, - Http = 4, - Indices = 8, - Jvm = 16, - Os = 32, - Process = 64, - ThreadPool = 128, - Transport = 256, - Discovery = 512, - All = 1024 -} ----- - -*public enum Elasticsearch.Net.SearchType* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -public enum SearchType -{ - QueryThenFetch = 0, - QueryAndFetch = 1, - DfsQueryThenFetch = 2, - DfsQueryAndFetch = 3, - Count = 4, - Scan = 5 -} ----- - -5.x - -[source,csharp] ----- -public enum SearchType -{ - QueryThenFetch = 0, - DfsQueryThenFetch = 1 -} ----- - -[float] -[[refresh-no-longer-just-a-bool]] -=== Refresh no longer just a bool - -Now an enum that can also send `wait_for` - -*public method Elasticsearch.Net.BulkRequestParameters.Refresh* -_Declaration changed (Breaking)_ - -2.x: `public BulkRequestParameters Refresh(bool refresh)` + -5.x: `public BulkRequestParameters Refresh(Refresh refresh)` - -*public method Elasticsearch.Net.DeleteRequestParameters.Refresh* -_Declaration changed (Breaking)_ + -*public method Elasticsearch.Net.IndexRequestParameters.Refresh* -_Declaration changed (Breaking)_ + -*public method Elasticsearch.Net.UpdateRequestParameters.Refresh* -_Declaration changed (Breaking)_ - - -[float] -[[waitforactiveshards-now-takes-a-string]] -=== WaitForActiveShards now takes a string - -So you can send `all` - -*public method -Elasticsearch.Net.ClusterHealthRequestParameters.WaitForActiveShards* -_Declaration changed (Breaking)_ - -2.x: -`public ClusterHealthRequestParameters WaitForActiveShards(long wait_for_active_shards)` + -5.x: -`public ClusterHealthRequestParameters WaitForActiveShards(string wait_for_active_shards)` - -[float] -[[elasticsearch-net-visibility-changes]] -=== Visibility changes - -These were types/methods/properties/constructors that were public but -had no business being so. - -*public method Elasticsearch.Net.RequestData..ctor* _Visibility was -changed from public to private (Breaking)_ - -2.x - -[source,csharp] ----- -[ObsoleteAttribute("This constructor is scheduled to become private in 5.0.0")] -public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestConfiguration local, IMemoryStreamFactory memoryStreamFactory) ----- - -5.x - -[source,csharp] ----- -private .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestConfiguration local, IMemoryStreamFactory memoryStreamFactory) ----- - -*public property -Elasticsearch.Net.Transport.DateTimeProvider* -_Visibility was changed from public to private (Breaking)_ - -2.x: `public IDateTimeProvider DateTimeProvider { get; }` + -5.x: `private IDateTimeProvider DateTimeProvider { get; }` - -*public property -Elasticsearch.Net.Transport.MemoryStreamFactory* -_Visibility was changed from public to private (Breaking)_ - -2.x: `public IMemoryStreamFactory MemoryStreamFactory { get; }` + -5.x: `private IMemoryStreamFactory MemoryStreamFactory { get; }` - -*public property -Elasticsearch.Net.Transport.PipelineProvider* -_Visibility was changed from public to private (Breaking)_ - -2.x: `public IRequestPipelineFactory PipelineProvider { get; }` + -5.x: `private IRequestPipelineFactory PipelineProvider { get; }` - -[float] -[[rename-of-api-related-methods]] -=== Rename of API related methods - -Impact low, these have been renamed to match their Method name -equivalents - -*public method Elasticsearch.Net.ElasticLowLevelClient.CatNodeattrs* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse CatNodeattrs(Func requestParameters)` + -5.x: -`public ElasticsearchResponse CatNodeattrs(Func requestParameters)` - -*public method Elasticsearch.Net.ElasticLowLevelClient.TasksCancel* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` - -*public method Elasticsearch.Net.ElasticLowLevelClient.TasksCancel* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksCancel(Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksCancel(Func requestParameters)` - -*public method Elasticsearch.Net.ElasticLowLevelClient.TasksList* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksList(Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksList(Func requestParameters)` - -*public method Elasticsearch.Net.IElasticLowLevelClient.CatNodeattrs* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse CatNodeattrs(Func requestParameters)` + -5.x: -`public ElasticsearchResponse CatNodeattrs(Func requestParameters)` - -*public method Elasticsearch.Net.IElasticLowLevelClient.TasksCancel* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` - -*public method Elasticsearch.Net.IElasticLowLevelClient.TasksCancel* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksCancel(Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksCancel(Func requestParameters)` - -*public method Elasticsearch.Net.IElasticLowLevelClient.TasksList* -_Declaration changed (Breaking)_ - -2.x: -`public ElasticsearchResponse TasksList(Func requestParameters)` + -5.x: -`public ElasticsearchResponse TasksList(Func requestParameters)` - -[float] -[[rest-spec-updates]] -=== Rest spec updates - -These are breaking changes due to the Elasticsearch 5.0 rest spec -changing - -*public method Elasticsearch.Net.DeleteByQueryRequestParameters.Routing* -_Declaration changed (Breaking)_ - -2.x: `public DeleteByQueryRequestParameters Routing(string routing)` + -5.x: `public DeleteByQueryRequestParameters Routing(String[] routing)` - -*public method -Elasticsearch.Net.ReindexOnServerRequestParameters.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public ReindexOnServerRequestParameters RequestsPerSecond(Single requests_per_second)` + -5.x: -`public ReindexOnServerRequestParameters RequestsPerSecond(long requests_per_second)` - -*public method -Elasticsearch.Net.ReindexRethrottleRequestParameters.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public ReindexRethrottleRequestParameters RequestsPerSecond(Single requests_per_second)` + -5.x: -`public ReindexRethrottleRequestParameters RequestsPerSecond(long requests_per_second)` - -*public method -Elasticsearch.Net.UpdateByQueryRequestParameters.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public UpdateByQueryRequestParameters RequestsPerSecond(Single requests_per_second)` + -5.x: -`public UpdateByQueryRequestParameters RequestsPerSecond(long requests_per_second)` - -[float] -[[removed-in-5.x-after-obsolete-period]] -=== Removed in 5.x after obsolete period - -These are types/properties/methods marked obsolete in Elasticsearch.Net 2.x that have -now been removed. - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Analyzer* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the analyzer to use in the body of the request.")] -public AnalyzeRequestParameters Analyzer(string analyzer) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.CharFilter* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the char filters to use in the body of the request.")] -public AnalyzeRequestParameters CharFilter(String[] char_filter) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.CharFilters* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the char filters to use in the body of the request.")] -public AnalyzeRequestParameters CharFilters(String[] char_filters) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Field* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the field to use in the body of the request.")] -public AnalyzeRequestParameters Field(string field) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Filter* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the filters to use in the body of the request.")] -public AnalyzeRequestParameters Filter(String[] filter) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Filters* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the filters to use in the body of the request.")] -public AnalyzeRequestParameters Filters(String[] filters) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Text* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the text to use in the body of the request.")] -public AnalyzeRequestParameters Text(String[] text) ----- - -*public method Elasticsearch.Net.AnalyzeRequestParameters.Tokenizer* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Specify the tokenizer to use in the body of the request.")] -public AnalyzeRequestParameters Tokenizer(string tokenizer) ----- - -*public property -Elasticsearch.Net.BasicAuthenticationCredentials.UserName* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use Username instead, note the lowercase n")] -[CLSCompliantAttribute(False)] -public string UserName { get; set; } ----- - -*public method Elasticsearch.Net.RequestData..ctor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IMemoryStreamFactory memoryStreamFactory) ----- - -[float] -[[elasticsearch-net-now-ireadonlycollection]] -=== Now IReadOnlyCollection - -*public property Elasticsearch.Net.Error.RootCause* - -[float] -[[elasticsearch-net-cancellationtoken]] -=== CancellationToken - -Async methods now expose CancellationToken directly in the method -signature, you no longer have to set this on `RequestConfiguration` - -*Elasticsearch.Net.ElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatAliasesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatAliasesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatAllocationAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatAllocationAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatCountAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatCountAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatFielddataAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatFielddataAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatHealthAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatHelpAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatIndicesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatIndicesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatMasterAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatNodeattrsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatNodesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatPendingTasksAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatPluginsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatRecoveryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatRecoveryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatRepositoriesAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatSegmentsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatSegmentsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatShardsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatShardsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatSnapshotsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CatThreadPoolAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClearScrollAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterGetSettingsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterHealthAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterHealthAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterPendingTasksAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterPutSettingsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterRerouteAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ClusterStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountPercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountPercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountPercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.CountPercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DeleteAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DeleteByQueryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DeleteByQueryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DeleteScriptAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DeleteTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.DoRequestAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ExistsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ExplainAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ExplainGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.FieldStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.FieldStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.FieldStatsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.FieldStatsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.GetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.GetScriptAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.GetSourceAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.GetTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndexAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndexAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndexPutAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndexPutAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesCloseAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesCreateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteTemplateForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsTemplateForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsTypeAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetTemplateForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetTemplateForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetUpgradeAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesGetUpgradeForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesOpenAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutAliasAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutAliasPostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingPostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingPostForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutSettingsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutSettingsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutTemplateForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesPutTemplatePostForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRecoveryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRecoveryForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesSegmentsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesSegmentsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesShardStoresAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesShardStoresForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesUpdateAliasesForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesUpgradeAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesUpgradeForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.InfoAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesHotThreadsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesHotThreadsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesInfoAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesInfoAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesInfoForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesInfoForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PercolateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PercolateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PingAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PutScriptAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PutScriptPostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PutTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.PutTemplatePostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ReindexAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ReindexRethrottleAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ScrollAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.ScrollGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreatePostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateRepositoryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateRepositoryPostAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotDeleteAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotDeleteRepositoryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetRepositoryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetRepositoryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotRestoreAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SnapshotVerifyRepositoryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SuggestAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SuggestAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SuggestGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.SuggestGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TasksCancelAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TasksCancelAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TasksListAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TermvectorsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TermvectorsAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TermvectorsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.TermvectorsGetAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.UpdateAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.UpdateByQueryAsync* + -*Elasticsearch.Net.ElasticLowLevelClient.UpdateByQueryAsync* + -*Elasticsearch.Net.HttpConnection.RequestAsync* + -*Elasticsearch.Net.IConnection.RequestAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatAliasesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatAliasesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatAllocationAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatAllocationAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatCountAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatCountAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatFielddataAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatFielddataAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatHealthAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatHelpAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatIndicesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatIndicesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatMasterAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatNodeattrsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatNodesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatPendingTasksAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatPluginsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatRecoveryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatRecoveryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatRepositoriesAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatSegmentsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatSegmentsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatShardsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatShardsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatSnapshotsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CatThreadPoolAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClearScrollAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterGetSettingsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterHealthAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterHealthAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterPendingTasksAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterPutSettingsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterRerouteAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ClusterStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountPercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountPercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountPercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.CountPercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DeleteAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DeleteByQueryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DeleteByQueryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DeleteScriptAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DeleteTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.DoRequestAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ExistsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ExplainAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ExplainGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.FieldStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.FieldStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.FieldStatsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.FieldStatsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.GetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.GetScriptAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.GetSourceAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.GetTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndexAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndexAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndexPutAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndexPutAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesCloseAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesCreateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteTemplateForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsTemplateForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsTypeAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetTemplateForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetTemplateForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetUpgradeAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesGetUpgradeForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesOpenAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutAliasAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutAliasPostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingPostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingPostForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutSettingsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutSettingsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutTemplateForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesPutTemplatePostForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRecoveryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRecoveryForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesSegmentsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesSegmentsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesShardStoresAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesShardStoresForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesUpdateAliasesForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesUpgradeAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesUpgradeForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.InfoAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesHotThreadsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesHotThreadsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesInfoAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesInfoAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesInfoForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesInfoForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PercolateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PercolateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PingAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PutScriptAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PutScriptPostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PutTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.PutTemplatePostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ReindexAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ReindexRethrottleAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ScrollAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.ScrollGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreatePostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateRepositoryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateRepositoryPostAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotDeleteAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotDeleteRepositoryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetRepositoryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetRepositoryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotRestoreAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SnapshotVerifyRepositoryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SuggestAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SuggestAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SuggestGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.SuggestGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TasksCancelAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TasksCancelAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TasksListAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TermvectorsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TermvectorsAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TermvectorsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.TermvectorsGetAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.UpdateAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.UpdateByQueryAsync* + -*Elasticsearch.Net.IElasticLowLevelClient.UpdateByQueryAsync* + -*Elasticsearch.Net.InMemoryConnection.RequestAsync* + -*Elasticsearch.Net.IRequestPipeline.CallElasticsearchAsync* + -*Elasticsearch.Net.IRequestPipeline.FirstPoolUsageAsync* + -*Elasticsearch.Net.IRequestPipeline.PingAsync* + -*Elasticsearch.Net.IRequestPipeline.SniffAsync* + -*Elasticsearch.Net.IRequestPipeline.SniffOnConnectionFailureAsync* + -*Elasticsearch.Net.IRequestPipeline.SniffOnStaleClusterAsync* + -*Elasticsearch.Net.ITransport.RequestAsync* + -*Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync* + -*Elasticsearch.Net.RequestPipeline.FirstPoolUsageAsync* + -*Elasticsearch.Net.RequestPipeline.PingAsync* + -*Elasticsearch.Net.RequestPipeline.SniffAsync* + -*Elasticsearch.Net.RequestPipeline.SniffOnConnectionFailureAsync* + -*Elasticsearch.Net.RequestPipeline.SniffOnStaleClusterAsync* + -*Elasticsearch.Net.ResponseBuilder..ctor* + -*Elasticsearch.Net.Transport.RequestAsync* - -[float] -[[removed-in-elasticsearch-net-5.x]] -=== Removed in 5.x - -These no longer exist in 5.x, either they have been renamed or are part -of previous mentioned changes - -*public method Elasticsearch.Net.BulkRequestParameters.Consistency* -_Removed (Breaking)_ *public class -Elasticsearch.Net.CatNodeattrsRequestParameters* _Removed (Breaking)_ -*public method Elasticsearch.Net.CatThreadPoolRequestParameters.FullId* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ClusterHealthRequestParameters.WaitForRelocatingShards* -_Removed (Breaking)_ *public method -Elasticsearch.Net.DeleteRequestParameters.Consistency* _Removed -(Breaking)_ *public method -Elasticsearch.Net.DeleteScriptRequestParameters.Version* _Removed -(Breaking)_ *public method -Elasticsearch.Net.DeleteScriptRequestParameters.VersionType* _Removed -(Breaking)_ *public method -Elasticsearch.Net.DeleteSearchTemplateRequestParameters.Version* -_Removed (Breaking)_ *public method -Elasticsearch.Net.DeleteSearchTemplateRequestParameters.VersionType* -_Removed (Breaking)_ *public class -Elasticsearch.Net.DeleteWarmerRequestParameters* _Removed (Breaking)_ -*public method Elasticsearch.Net.DeleteWatchRequestParameters.Force* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExplore* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExplore* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesCreatePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesCreatePostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGet* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliases* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliases* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimize* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicenseDelete* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicenseDeleteAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicenseGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicenseGetAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicensePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.LicensePostAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldAuthenticate* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldAuthenticateAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRealms* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRealmsAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRoles* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesPut* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesPutAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteRoleAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteUserAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRolePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRolePostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserPost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.TasksList* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.TasksListAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeleteWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherDeleteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherGetWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherGetWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherInfo* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherInfoAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchPost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherRestart* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherRestartAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStart* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStartAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStats* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStats* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStatsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStatsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStop* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ElasticLowLevelClient.WatcherStopAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.ExplainRequestParameters.Fields* _Removed (Breaking)_ -*public class Elasticsearch.Net.GetAliasesRequestParameters* _Removed -(Breaking)_ *public method -Elasticsearch.Net.GetRequestParameters.Fields* _Removed (Breaking)_ -*public method Elasticsearch.Net.GetScriptRequestParameters.Version* -_Removed (Breaking)_ *public method -Elasticsearch.Net.GetScriptRequestParameters.VersionType* _Removed -(Breaking)_ *public method -Elasticsearch.Net.GetSearchTemplateRequestParameters.Version* _Removed -(Breaking)_ *public method -Elasticsearch.Net.GetSearchTemplateRequestParameters.VersionType* -_Removed (Breaking)_ *public class -Elasticsearch.Net.GetWarmerRequestParameters* _Removed (Breaking)_ -*public property Elasticsearch.Net.IBodyWithApiCallDetails.CallDetails* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExplore* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExplore* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesCreatePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesCreatePostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteWarmer* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGet* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliases* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliases* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimize* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmer* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostForAll* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostForAllAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicenseDelete* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicenseDeleteAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicenseGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicenseGetAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicensePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.LicensePostAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExists* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldAuthenticate* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldAuthenticateAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRealms* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRealmsAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRoles* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesPut* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesPutAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteRoleAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteUserAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRole* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRoleAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRolePost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRolePostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUser* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserPost* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.TasksList* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.TasksListAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeleteWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherDeleteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatch* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherGetWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherGetWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherInfo* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherInfoAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatch* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchPost* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchPostAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherRestart* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherRestartAsync* -_Removed (Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStart* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStartAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStats* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStats* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStatsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStatsAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStop* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IElasticLowLevelClient.WatcherStopAsync* _Removed -(Breaking)_ *public method -Elasticsearch.Net.IndexRequestParameters.Consistency* _Removed -(Breaking)_ *public property -Elasticsearch.Net.IRequestConfiguration.CancellationToken* _Removed -(Breaking)_ *public method -Elasticsearch.Net.MultiGetRequestParameters.Fields* _Removed (Breaking)_ -*public class Elasticsearch.Net.OptimizeRequestParameters* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutScriptRequestParameters.OpType* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutScriptRequestParameters.Version* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutScriptRequestParameters.VersionType* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutSearchTemplateRequestParameters.OpType* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutSearchTemplateRequestParameters.Version* _Removed -(Breaking)_ *public method -Elasticsearch.Net.PutSearchTemplateRequestParameters.VersionType* -_Removed (Breaking)_ *public class -Elasticsearch.Net.PutWarmerRequestParameters* _Removed (Breaking)_ -*public method -Elasticsearch.Net.ReindexOnServerRequestParameters.Consistency* _Removed -(Breaking)_ *public method -Elasticsearch.Net.RequestConfigurationDescriptor.AcceptContentType* -_Removed (Breaking)_ *public method -Elasticsearch.Net.RequestConfigurationDescriptor.CancellationToken* -_Removed (Breaking)_ *public property -Elasticsearch.Net.RequestData.CancellationToken* _Removed (Breaking)_ -*public class Elasticsearch.Net.SearchExistsRequestParameters* _Removed -(Breaking)_ *public class -Elasticsearch.Net.TasksCancelRequestParameters* _Removed (Breaking)_ -*public class Elasticsearch.Net.TasksListRequestParameters* _Removed -(Breaking)_ *public method -Elasticsearch.Net.TermVectorsRequestParameters.Dfs* _Removed (Breaking)_ -*public method -Elasticsearch.Net.UpdateByQueryRequestParameters.Consistency* _Removed -(Breaking)_ *public method -Elasticsearch.Net.UpdateByQueryRequestParameters.Fields* _Removed -(Breaking)_ *public method -Elasticsearch.Net.UpdateRequestParameters.Consistency* _Removed -(Breaking)_ *public method -Elasticsearch.Net.UpdateRequestParameters.Script* _Removed (Breaking)_ -*public method Elasticsearch.Net.UpdateRequestParameters.ScriptedUpsert* -_Removed (Breaking)_ *public method -Elasticsearch.Net.UpdateRequestParameters.ScriptId* _Removed (Breaking)_ -*public method -Elasticsearch.Net.UpgradeRequestParameters.AllowNoIndices* _Removed -(Breaking)_ *public class -Elasticsearch.Net.WatcherInfoRequestParameters* _Removed (Breaking)_ diff --git a/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.md b/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.md deleted file mode 100644 index 353fa536c57..00000000000 --- a/docs/5.0-breaking-changes/elasticsearch-net-breaking-changes.md +++ /dev/null @@ -1,1220 +0,0 @@ -#Breaking Changes - -This lists all the **binary** breaking changes in Elasticsearch.Net. - -## Enums - -**public enum Elasticsearch.Net.Consistency** *Removed (Breaking)* - -**public enum Elasticsearch.Net.Bytes** *Declaration changed (Breaking)* - -2.x -```csharp -public enum Bytes -{ -     B = 0, -     K = 1, -     M = 2, -     G = 3 -} -``` - -5.x -```csharp -public enum Bytes -{ -     B = 0, -     K = 1, -     Kb = 2, -     M = 3, -     Mb = 4, -     G = 5, -     Gb = 6, -     T = 7, -     Tb = 8, -     P = 9, -     Pb = 10 -} -``` - -**public enum Elasticsearch.Net.Feature** *Declaration changed (Breaking)* - -2.x -```csharp -[FlagsAttribute] -public enum Feature -{ -     Settings = 1, -     Mappings = 2, -     Warmers = 4, -     Aliases = 8 -} -``` - -5.x -```csharp -[FlagsAttribute] -public enum Feature -{ -     Settings = 1, -     Mappings = 2, -     Aliases = 4 -} -``` - -**public enum Elasticsearch.Net.NodesStatsMetric** *Declaration changed (Breaking)* - -2.x -```csharp -[FlagsAttribute] -public enum NodesStatsMetric -{ -     Breaker = 1, -     Fs = 2, -     Http = 4, -     Indices = 8, -     Jvm = 16, -     Os = 32, -     Process = 64, -     ThreadPool = 128, -     Transport = 256, -     All = 512 -} -``` - -5.x -```csharp -[FlagsAttribute] -public enum NodesStatsMetric -{ -     Breaker = 1, -     Fs = 2, -     Http = 4, -     Indices = 8, -     Jvm = 16, -     Os = 32, -     Process = 64, -     ThreadPool = 128, -     Transport = 256, -     Discovery = 512, -     All = 1024 -} -``` - -**public enum Elasticsearch.Net.SearchType** *Declaration changed (Breaking)* - -2.x -```csharp -public enum SearchType -{ -     QueryThenFetch = 0, -     QueryAndFetch = 1, -     DfsQueryThenFetch = 2, -     DfsQueryAndFetch = 3, -     Count = 4, -     Scan = 5 -} -``` - -5.x -```csharp -public enum SearchType -{ -     QueryThenFetch = 0, -     DfsQueryThenFetch = 1 -} -``` - -## Refresh no longer just a bool - -Now an enum that can also send `wait_for` - -**public method Elasticsearch.Net.BulkRequestParameters.Refresh** *Declaration changed (Breaking)* - -2.x: `public BulkRequestParameters Refresh(bool refresh)` -5.x: `public BulkRequestParameters Refresh(Refresh refresh)` - -**public method Elasticsearch.Net.DeleteRequestParameters.Refresh** *Declaration changed (Breaking)* -**public method Elasticsearch.Net.IndexRequestParameters.Refresh** *Declaration changed (Breaking)* -**public method Elasticsearch.Net.UpdateRequestParameters.Refresh** *Declaration changed (Breaking)* - -## WaitForActiveShards now takes a string - -So you can send `all` - -**public method Elasticsearch.Net.ClusterHealthRequestParameters.WaitForActiveShards** *Declaration changed (Breaking)* - -2.x: `public ClusterHealthRequestParameters WaitForActiveShards(long wait_for_active_shards)` -5.x: `public ClusterHealthRequestParameters WaitForActiveShards(string wait_for_active_shards)` - -## Visibility changes - -These were types/methods/properties/constructors that were public but had no business being so. - -**public method Elasticsearch.Net.RequestData..ctor** *Visibility was changed from public to private (Breaking)* - -2.x -```csharp -[ObsoleteAttribute("This constructor is scheduled to become private in 5.0.0")] -public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestConfiguration local, IMemoryStreamFactory memoryStreamFactory) -``` - -5.x -```csharp -private .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestConfiguration local, IMemoryStreamFactory memoryStreamFactory) -``` - -**public property Elasticsearch.Net.Transport<TConnectionSettings>.DateTimeProvider** *Visibility was changed from public to private (Breaking)* - -2.x: `public IDateTimeProvider DateTimeProvider { get; }` -5.x: `private IDateTimeProvider DateTimeProvider { get; }` - -**public property Elasticsearch.Net.Transport<TConnectionSettings>.MemoryStreamFactory** *Visibility was changed from public to private (Breaking)* - -2.x: `public IMemoryStreamFactory MemoryStreamFactory { get; }` -5.x: `private IMemoryStreamFactory MemoryStreamFactory { get; }` - -**public property Elasticsearch.Net.Transport<TConnectionSettings>.PipelineProvider** *Visibility was changed from public to private (Breaking)* - -2.x: `public IRequestPipelineFactory PipelineProvider { get; }` -5.x: `private IRequestPipelineFactory PipelineProvider { get; }` - - - -## Rename of API related methods - -Impact low, these have been renamed to match their Method name equivalents - - -**public method Elasticsearch.Net.ElasticLowLevelClient.CatNodeattrs<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse CatNodeattrs(Func requestParameters)` -5.x: `public ElasticsearchResponse CatNodeattrs(Func requestParameters)` - -**public method Elasticsearch.Net.ElasticLowLevelClient.TasksCancel<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` -5.x: `public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` - -**public method Elasticsearch.Net.ElasticLowLevelClient.TasksCancel<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksCancel(Func requestParameters)` -5.x: `public ElasticsearchResponse TasksCancel(Func requestParameters)` - -**public method Elasticsearch.Net.ElasticLowLevelClient.TasksList<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksList(Func requestParameters)` -5.x: `public ElasticsearchResponse TasksList(Func requestParameters)` - -**public method Elasticsearch.Net.IElasticLowLevelClient.CatNodeattrs<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse CatNodeattrs(Func requestParameters)` -5.x: `public ElasticsearchResponse CatNodeattrs(Func requestParameters)` - -**public method Elasticsearch.Net.IElasticLowLevelClient.TasksCancel<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` -5.x: `public ElasticsearchResponse TasksCancel(string task_id, Func requestParameters)` - -**public method Elasticsearch.Net.IElasticLowLevelClient.TasksCancel<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksCancel(Func requestParameters)` -5.x: `public ElasticsearchResponse TasksCancel(Func requestParameters)` - -**public method Elasticsearch.Net.IElasticLowLevelClient.TasksList<T>** *Declaration changed (Breaking)* - -2.x: `public ElasticsearchResponse TasksList(Func requestParameters)` -5.x: `public ElasticsearchResponse TasksList(Func requestParameters)` - - -## Rest spec updates - -These are breaking changes due to the Elasticsearch 5.0 rest spec changing - -**public method Elasticsearch.Net.DeleteByQueryRequestParameters.Routing** *Declaration changed (Breaking)* - -2.x: `public DeleteByQueryRequestParameters Routing(string routing)` -5.x: `public DeleteByQueryRequestParameters Routing(String[] routing)` - -**public method Elasticsearch.Net.ReindexOnServerRequestParameters.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public ReindexOnServerRequestParameters RequestsPerSecond(Single requests_per_second)` -5.x: `public ReindexOnServerRequestParameters RequestsPerSecond(long requests_per_second)` - -**public method Elasticsearch.Net.ReindexRethrottleRequestParameters.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public ReindexRethrottleRequestParameters RequestsPerSecond(Single requests_per_second)` -5.x: `public ReindexRethrottleRequestParameters RequestsPerSecond(long requests_per_second)` - -**public method Elasticsearch.Net.UpdateByQueryRequestParameters.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public UpdateByQueryRequestParameters RequestsPerSecond(Single requests_per_second)` -5.x: `public UpdateByQueryRequestParameters RequestsPerSecond(long requests_per_second)` - - -## Removed in 5.x after obsolete period - -These are types/properties/methods marked obsolete in NEST 2.x that have now been removed. - - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Analyzer** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the analyzer to use in the body of the request.")] -public AnalyzeRequestParameters Analyzer(string analyzer) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.CharFilter** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the char filters to use in the body of the request.")] -public AnalyzeRequestParameters CharFilter(String[] char_filter) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.CharFilters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the char filters to use in the body of the request.")] -public AnalyzeRequestParameters CharFilters(String[] char_filters) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Field** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the field to use in the body of the request.")] -public AnalyzeRequestParameters Field(string field) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Filter** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the filters to use in the body of the request.")] -public AnalyzeRequestParameters Filter(String[] filter) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Filters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the filters to use in the body of the request.")] -public AnalyzeRequestParameters Filters(String[] filters) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Text** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the text to use in the body of the request.")] -public AnalyzeRequestParameters Text(String[] text) -``` - -**public method Elasticsearch.Net.AnalyzeRequestParameters.Tokenizer** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Specify the tokenizer to use in the body of the request.")] -public AnalyzeRequestParameters Tokenizer(string tokenizer) -``` - -**public property Elasticsearch.Net.BasicAuthenticationCredentials.UserName** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use Username instead, note the lowercase n")] -[CLSCompliantAttribute(False)] -public string UserName { get; set; } -``` - -**public method Elasticsearch.Net.RequestData..ctor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IMemoryStreamFactory memoryStreamFactory) -``` - -# Now IReadOnlyCollection - -**public property Elasticsearch.Net.Error.RootCause** - -# CancellationToken - -Async methods now expose CancellationToken directly in the method signature, you no longer have to set this on `RequestConfiguration` - -**Elasticsearch.Net.ElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatAliasesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatAliasesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatAllocationAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatAllocationAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatCountAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatCountAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatFielddataAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatFielddataAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatHealthAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatHelpAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatIndicesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatIndicesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatMasterAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatNodeattrsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatNodesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatPendingTasksAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatPluginsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatRecoveryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatRecoveryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatRepositoriesAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatSegmentsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatSegmentsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatShardsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatShardsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatSnapshotsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CatThreadPoolAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClearScrollAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterGetSettingsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterHealthAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterHealthAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterPendingTasksAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterPutSettingsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterRerouteAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ClusterStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountPercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountPercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountPercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.CountPercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DeleteAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DeleteByQueryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DeleteByQueryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DeleteScriptAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DeleteTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.DoRequestAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ExistsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ExplainAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ExplainGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.FieldStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.FieldStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.FieldStatsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.FieldStatsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.GetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.GetScriptAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.GetSourceAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.GetTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndexAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndexAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndexPutAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndexPutAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesAnalyzeGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesClearCacheGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesCloseAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesCreateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteTemplateForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAliasForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsTemplateForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesExistsTypeAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesFlushSyncedGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetFieldMappingForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetMappingForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetSettingsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetTemplateForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetTemplateForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetUpgradeAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesGetUpgradeForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesOpenAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutAliasAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutAliasPostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingPostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutMappingPostForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutSettingsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutSettingsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutTemplateForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesPutTemplatePostForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRecoveryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRecoveryForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesRefreshGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesSegmentsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesSegmentsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesShardStoresAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesShardStoresForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesStatsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesUpdateAliasesForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesUpgradeAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesUpgradeForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.IndicesValidateQueryGetForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.InfoAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesHotThreadsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesHotThreadsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesInfoAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesInfoAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesInfoForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesInfoForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PercolateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PercolateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PingAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PutScriptAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PutScriptPostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PutTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.PutTemplatePostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ReindexAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ReindexRethrottleAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.RenderSearchTemplateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ScrollAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.ScrollGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreatePostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateRepositoryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotCreateRepositoryPostAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotDeleteAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotDeleteRepositoryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetRepositoryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotGetRepositoryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotRestoreAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SnapshotVerifyRepositoryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SuggestAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SuggestAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SuggestGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.SuggestGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TasksCancelAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TasksCancelAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TasksListAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TermvectorsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TermvectorsAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TermvectorsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.TermvectorsGetAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.UpdateAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.UpdateByQueryAsync<T>** -**Elasticsearch.Net.ElasticLowLevelClient.UpdateByQueryAsync<T>** -**Elasticsearch.Net.HttpConnection.RequestAsync<TReturn>** -**Elasticsearch.Net.IConnection.RequestAsync<TReturn>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.BulkPutAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatAliasesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatAliasesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatAllocationAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatAllocationAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatCountAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatCountAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatFielddataAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatFielddataAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatHealthAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatHelpAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatIndicesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatIndicesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatMasterAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatNodeattrsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatNodesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatPendingTasksAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatPluginsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatRecoveryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatRecoveryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatRepositoriesAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatSegmentsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatSegmentsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatShardsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatShardsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatSnapshotsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CatThreadPoolAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClearScrollAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterGetSettingsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterHealthAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterHealthAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterPendingTasksAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterPutSettingsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterRerouteAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterStateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ClusterStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountPercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountPercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountPercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.CountPercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DeleteAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DeleteByQueryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DeleteByQueryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DeleteScriptAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DeleteTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.DoRequestAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ExistsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ExplainAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ExplainGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.FieldStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.FieldStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.FieldStatsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.FieldStatsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.GetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.GetScriptAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.GetSourceAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.GetTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndexAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndexAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndexPutAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndexPutAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesAnalyzeGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesClearCacheGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesCloseAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesCreateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteTemplateForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAliasForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsTemplateForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesExistsTypeAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesFlushSyncedGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetFieldMappingForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetMappingForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetSettingsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetTemplateForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetTemplateForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetUpgradeAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesGetUpgradeForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesOpenAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutAliasAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutAliasPostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingPostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutMappingPostForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutSettingsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutSettingsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutTemplateForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesPutTemplatePostForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRecoveryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRecoveryForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesRefreshGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesSegmentsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesSegmentsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesShardStoresAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesShardStoresForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesStatsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesUpdateAliasesForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesUpgradeAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesUpgradeForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.IndicesValidateQueryGetForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.InfoAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MgetGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MpercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MsearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.MtermvectorsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesHotThreadsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesHotThreadsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesInfoAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesInfoAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesInfoForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesInfoForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.NodesStatsForAllAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PercolateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PercolateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PingAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PutScriptAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PutScriptPostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PutTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.PutTemplatePostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ReindexAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ReindexRethrottleAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.RenderSearchTemplateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ScrollAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.ScrollGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchShardsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SearchTemplateGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreatePostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateRepositoryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotCreateRepositoryPostAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotDeleteAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotDeleteRepositoryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetRepositoryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotGetRepositoryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotRestoreAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotStatusAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SnapshotVerifyRepositoryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SuggestAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SuggestAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SuggestGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.SuggestGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TasksCancelAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TasksCancelAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TasksListAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TermvectorsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TermvectorsAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TermvectorsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.TermvectorsGetAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.UpdateAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.UpdateByQueryAsync<T>** -**Elasticsearch.Net.IElasticLowLevelClient.UpdateByQueryAsync<T>** -**Elasticsearch.Net.InMemoryConnection.RequestAsync<TReturn>** -**Elasticsearch.Net.IRequestPipeline.CallElasticsearchAsync<TReturn>** -**Elasticsearch.Net.IRequestPipeline.FirstPoolUsageAsync** -**Elasticsearch.Net.IRequestPipeline.PingAsync** -**Elasticsearch.Net.IRequestPipeline.SniffAsync** -**Elasticsearch.Net.IRequestPipeline.SniffOnConnectionFailureAsync** -**Elasticsearch.Net.IRequestPipeline.SniffOnStaleClusterAsync** -**Elasticsearch.Net.ITransport<TConnectionSettings>.RequestAsync<T>** -**Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync<TReturn>** -**Elasticsearch.Net.RequestPipeline.FirstPoolUsageAsync** -**Elasticsearch.Net.RequestPipeline.PingAsync** -**Elasticsearch.Net.RequestPipeline.SniffAsync** -**Elasticsearch.Net.RequestPipeline.SniffOnConnectionFailureAsync** -**Elasticsearch.Net.RequestPipeline.SniffOnStaleClusterAsync** -**Elasticsearch.Net.ResponseBuilder<TReturn>..ctor** -**Elasticsearch.Net.Transport<TConnectionSettings>.RequestAsync<TReturn>** - -# Removed in 5.x - -These no longer exist in 5.x, either they have been renamed or are part of previous mentioned changes - -**public method Elasticsearch.Net.BulkRequestParameters.Consistency** *Removed (Breaking)* -**public class Elasticsearch.Net.CatNodeattrsRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.CatThreadPoolRequestParameters.FullId** *Removed (Breaking)* -**public method Elasticsearch.Net.ClusterHealthRequestParameters.WaitForRelocatingShards** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteRequestParameters.Consistency** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteScriptRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteScriptRequestParameters.VersionType** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteSearchTemplateRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteSearchTemplateRequestParameters.VersionType** *Removed (Breaking)* -**public class Elasticsearch.Net.DeleteWarmerRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.DeleteWatchRequestParameters.Force** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExplore<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExplore<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.GraphExploreGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesCreatePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesCreatePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesDeleteWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesForcemergeGetForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliases<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliases<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetAliasesForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesGetWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimize<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesOptimizeGetForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.IndicesPutWarmerPostForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicenseDelete<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicenseDeleteAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicenseGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicenseGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicensePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.LicensePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldAuthenticate<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldAuthenticateAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRealms<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRealmsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRoles<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesPut<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldClearCachedRolesPutAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldDeleteUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldGetUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRolePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutRolePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.ShieldPutUserPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.TasksList<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.TasksListAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherAckWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherActivateWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeactivateWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeleteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherDeleteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherExecuteWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherGetWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherGetWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherInfo<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherInfoAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherPutWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherRestart<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherRestartAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStart<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStartAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStats<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStats<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStatsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStatsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStop<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ElasticLowLevelClient.WatcherStopAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.ExplainRequestParameters.Fields** *Removed (Breaking)* -**public class Elasticsearch.Net.GetAliasesRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.GetRequestParameters.Fields** *Removed (Breaking)* -**public method Elasticsearch.Net.GetScriptRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.GetScriptRequestParameters.VersionType** *Removed (Breaking)* -**public method Elasticsearch.Net.GetSearchTemplateRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.GetSearchTemplateRequestParameters.VersionType** *Removed (Breaking)* -**public class Elasticsearch.Net.GetWarmerRequestParameters** *Removed (Breaking)* -**public property Elasticsearch.Net.IBodyWithApiCallDetails.CallDetails** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExplore<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExplore<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.GraphExploreGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesCreatePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesCreatePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesDeleteWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesForcemergeGetForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliases<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliases<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetAliasesForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesGetWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimize<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesOptimizeGetForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmer<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostForAll<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.IndicesPutWarmerPostForAllAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicenseDelete<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicenseDeleteAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicenseGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicenseGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicensePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.LicensePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExists<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGet<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.SearchExistsGetAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldAuthenticate<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldAuthenticateAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRealms<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRealmsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRoles<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesPut<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldClearCachedRolesPutAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldDeleteUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldGetUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRole<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRoleAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRolePost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutRolePostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUser<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.ShieldPutUserPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.TasksList<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.TasksListAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherAckWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherActivateWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeactivateWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeleteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherDeleteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherExecuteWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherGetWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherGetWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherInfo<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherInfoAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatch<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchPost<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherPutWatchPostAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherRestart<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherRestartAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStart<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStartAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStats<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStats<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStatsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStatsAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStop<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IElasticLowLevelClient.WatcherStopAsync<T>** *Removed (Breaking)* -**public method Elasticsearch.Net.IndexRequestParameters.Consistency** *Removed (Breaking)* -**public property Elasticsearch.Net.IRequestConfiguration.CancellationToken** *Removed (Breaking)* -**public method Elasticsearch.Net.MultiGetRequestParameters.Fields** *Removed (Breaking)* -**public class Elasticsearch.Net.OptimizeRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.PutScriptRequestParameters.OpType** *Removed (Breaking)* -**public method Elasticsearch.Net.PutScriptRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.PutScriptRequestParameters.VersionType** *Removed (Breaking)* -**public method Elasticsearch.Net.PutSearchTemplateRequestParameters.OpType** *Removed (Breaking)* -**public method Elasticsearch.Net.PutSearchTemplateRequestParameters.Version** *Removed (Breaking)* -**public method Elasticsearch.Net.PutSearchTemplateRequestParameters.VersionType** *Removed (Breaking)* -**public class Elasticsearch.Net.PutWarmerRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.ReindexOnServerRequestParameters.Consistency** *Removed (Breaking)* -**public method Elasticsearch.Net.RequestConfigurationDescriptor.AcceptContentType** *Removed (Breaking)* -**public method Elasticsearch.Net.RequestConfigurationDescriptor.CancellationToken** *Removed (Breaking)* -**public property Elasticsearch.Net.RequestData.CancellationToken** *Removed (Breaking)* -**public class Elasticsearch.Net.SearchExistsRequestParameters** *Removed (Breaking)* -**public class Elasticsearch.Net.TasksCancelRequestParameters** *Removed (Breaking)* -**public class Elasticsearch.Net.TasksListRequestParameters** *Removed (Breaking)* -**public method Elasticsearch.Net.TermVectorsRequestParameters.Dfs** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateByQueryRequestParameters.Consistency** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateByQueryRequestParameters.Fields** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateRequestParameters.Consistency** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateRequestParameters.Script** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateRequestParameters.ScriptedUpsert** *Removed (Breaking)* -**public method Elasticsearch.Net.UpdateRequestParameters.ScriptId** *Removed (Breaking)* -**public method Elasticsearch.Net.UpgradeRequestParameters.AllowNoIndices** *Removed (Breaking)* -**public class Elasticsearch.Net.WatcherInfoRequestParameters** *Removed (Breaking)* diff --git a/docs/5.0-breaking-changes/nest-breaking-changes.asciidoc b/docs/5.0-breaking-changes/nest-breaking-changes.asciidoc deleted file mode 100644 index e05856a916c..00000000000 --- a/docs/5.0-breaking-changes/nest-breaking-changes.asciidoc +++ /dev/null @@ -1,4361 +0,0 @@ -[[nest-breaking-changes]] -== NEST Breaking Changes - -Oh my goodness, this looks like a lot of breaking changes! This is true -but please take note that this list is very extensive and includes -*every* single _binary_ breaking change. In a lot of cases, these will not -necessarily equate to compiler errors nor changes in your codebase. - -[float] -[[statsaggregator-renamed-to-statsaggregation]] -=== StatsAggregator renamed to StatsAggregation - -`IStatsAggregator` not named correctly all aggregation requests objects -need to end with `Aggregation` - -*public property Nest.IAggregationContainer.Stats* _Declaration changed -(Breaking)_ - -2.x: `public IStatsAggregator Stats { get; set; }` + -5.x: `public IStatsAggregation Stats { get; set; }` - -*public method Nest.AggregationContainerDescriptor.Stats* -_Declaration changed (Breaking)_ - -2.x: -`public AggregationContainerDescriptor Stats(string name, Func, IStatsAggregator> selector)` + -5.x: -`public AggregationContainerDescriptor Stats(string name, Func, IStatsAggregation> selector)` - -*public interface Nest.IStatsAggregator* _Removed (Breaking)_ - -[float] -[[keyedbucket-is-now-generic]] -=== KeyedBucket is now generic - -No longer always reads the key as string -See https://github.com/elastic/elasticsearch-net/issues/2336[github issue 2336] - -*public method Nest.AggregationsHelper.GeoHash* _Declaration changed -(Breaking)_ - -2.x: `public MultiBucketAggregate GeoHash(string key)` + -5.x: -`public MultiBucketAggregate> GeoHash(string key)` - -*public method Nest.AggregationsHelper.Histogram* _Declaration changed -(Breaking)_ - -2.x: -`public MultiBucketAggregate Histogram(string key)` + -5.x: -`public MultiBucketAggregate> Histogram(string key)` - -*public method Nest.AggregationsHelper.Terms* _Declaration changed -(Breaking)_ - -2.x: `public TermsAggregate Terms(string key)` + -5.x: `public TermsAggregate Terms(string key)` - -[float] -[[string-property-mapping-is-obsolete]] -=== String Property Mapping is obsolete - -See also: -https://www.elastic.co/guide/en/elasticsearch/reference/5.6/breaking_50_mapping_changes.html#_literal_string_literal_fields_replaced_by_literal_text_literal_literal_keyword_literal_fields[the Elasticsearch breaking changes documentation] - -This is also reflected in the attachment mappings - -*public property Nest.AttachmentProperty.AuthorField* _Declaration -changed (Breaking)_ - -2.x: `public IStringProperty AuthorField { get; set; }` + -5.x: `public ITextProperty AuthorField { get; set; }` - -*public property Nest.AttachmentProperty.ContentTypeField* _Declaration -changed (Breaking)_ + -*public property Nest.AttachmentProperty.KeywordsField* _Declaration -changed (Breaking)_ + -*public property Nest.AttachmentProperty.LanguageField* _Declaration -changed (Breaking)_ + -*public property Nest.AttachmentProperty.NameField* _Declaration changed -(Breaking)_ + -*public property Nest.AttachmentProperty.TitleField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.AuthorField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.ContentTypeField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.KeywordsField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.LanguageField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.NameField* _Declaration -changed (Breaking)_ + -*public property Nest.IAttachmentProperty.TitleField* _Declaration -changed (Breaking)_ - -*public method Nest.AttachmentPropertyDescriptor.ContentTypeField* -_Declaration changed (Breaking)_ - -2.x: -`public AttachmentPropertyDescriptor ContentTypeField(Func, IStringProperty> selector)` + -5.x: -`public AttachmentPropertyDescriptor ContentTypeField(Func, ITextProperty> selector)` - -*public method Nest.AttachmentPropertyDescriptor.AuthorField* -_Declaration changed (Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.FileField* -_Declaration changed (Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.KeywordsField* -_Declaration changed (Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.LanguageField* -_Declaration changed (Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.NameField* -_Declaration changed (Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.TitleField* -_Declaration changed (Breaking)_ - -[float] -[[nonstringindexoption-no-longer-valid]] -=== NonStringIndexOption no longer valid - -See also: -https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_mapping_changes.html#_literal_index_literal_property[the Elasticsearch breaking changes documentation] - -*public enum Nest.NonStringIndexOption* _Removed (Breaking)_ - -*public property Nest.BooleanAttribute.Index* _Declaration changed -(Breaking)_ - -2.x: `public NonStringIndexOption Index { get; set; }` + -5.x: `public bool Index { get; set; }` - -*public property Nest.BooleanProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.DateAttribute.Index* _Declaration changed -(Breaking)_ + -*public property Nest.DateProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.IBooleanProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.IDateProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.IIpProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.INumberProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.IpAttribute.Index* _Declaration changed -(Breaking)_ + -*public property Nest.IpProperty.Index* _Declaration changed -(Breaking)_ + -*public property Nest.NumberAttribute.Index* _Declaration changed -(Breaking)_ + -*public property Nest.NumberProperty.Index* _Declaration changed -(Breaking)_ - -*public method Nest.BooleanPropertyDescriptor.Index* _Declaration -changed (Breaking)_ - -2.x: -`public BooleanPropertyDescriptor Index(NonStringIndexOption index = 0)` + -5.x: `public BooleanPropertyDescriptor Index(bool index)` - -*public method Nest.DatePropertyDescriptor.Index* _Declaration -changed (Breaking)_ + -*public method Nest.IpPropertyDescriptor.Index* _Declaration changed -(Breaking)_ + -*public method Nest.NumberPropertyDescriptorBase.Index* _Declaration changed (Breaking)_ - -[float] -[[refresh-no-longer-a-simple-boolean]] -=== Refresh no longer a simple boolean - -As it now also accepts a `wait_for` parameter - -See also: -https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docs-refresh.html[the Elasticsearch refresh documentation] - -*public method Nest.BulkAllDescriptor.Refresh* _Declaration changed -(Breaking)_ - -2.x: `public BulkAllDescriptor Refresh(bool refresh = True)` + -5.x: `public BulkAllDescriptor Refresh(Refresh refresh)` - -*public method Nest.BulkDescriptor.Refresh* _Declaration changed -(Breaking)_ + -*public method Nest.DeleteDescriptor.Refresh* _Declaration changed -(Breaking)_ + -*public method Nest.IndexDescriptor.Refresh* _Declaration -changed (Breaking)_ + -*public method Nest.UpdateDescriptor.Refresh* _Declaration changed (Breaking)_ - -*public property Nest.BulkAllRequest.Refresh* _Declaration changed -(Breaking)_ - -2.x: `public bool? Refresh { get; set; }` + -5.x: `public Nullable Refresh { get; set; }` - -*public property Nest.BulkRequest.Refresh* _Declaration changed -(Breaking)_ + -*public property Nest.DeleteRequest.Refresh* _Declaration changed -(Breaking)_ + -*public property Nest.DeleteRequest.Refresh* _Declaration changed -(Breaking)_ + -*public property Nest.IBulkAllRequest.Refresh* _Declaration changed -(Breaking)_ + -*public property Nest.IndexRequest.Refresh* _Declaration -changed (Breaking)_ + -*public property Nest.UpdateRequest.Refresh* _Declaration changed (Breaking)_ - -[float] -[[script-changes]] -=== Script changes - -The default language is now painless! Also we no longer support the -`1.x` inline syntax for scripts. -https://www.elastic.co/guide/en/elasticsearch/reference/5.6/breaking_50_scripting.html#_removed_1_x_script_and_template_syntax[the Elasticsearch breaking changes documentation] - -*public method Nest.BulkUpdateDescriptor.Script* _Declaration changed (Breaking)_ - -2.x: -`public BulkUpdateDescriptor Script(string script)` + -5.x: -`public BulkUpdateDescriptor Script(Func scriptSelector)` - -*public method Nest.UpdateDescriptor.Script* _Declaration changed (Breaking)_ - -*public property Nest.BulkUpdateOperation.Script* _Declaration changed (Breaking)_ - -2.x: `public string Script { get; set; }` + -5.x: `public IScript Script { get; set; }` - -*public property Nest.IUpdateRequest.Script* _Declaration changed (Breaking)_ + -*public property Nest.IBulkUpdateOperation.Script* _Declaration changed (Breaking)_ + -*public property Nest.UpdateRequest.Script* -_Declaration changed (Breaking)_ - -In some cases we abused IScript to send template queries this is now -fixed - -*public property Nest.PhraseSuggestCollate.Query* _Declaration changed -(Breaking)_ - -2.x: `public IScript Query { get; set; }` + -5.x: `public ITemplateQuery Query { get; set; }` - -*public property Nest.IPhraseSuggestCollate.Query* _Declaration changed -(Breaking)_ + -*public method Nest.PhraseSuggestCollateDescriptor.Query* _Removed -(Breaking)_ - -*public method Nest.PhraseSuggestCollateDescriptor.Query* -_Declaration changed (Breaking)_ - -2.x: `public PhraseSuggestCollateDescriptor Query(string script)` + -5.x: -`public PhraseSuggestCollateDescriptor Query(Func, ITemplateQuery> selector)` - -Properties supporting the obsoleted and removed syntax have been removed - -*public method Nest.BulkUpdateDescriptor.ScriptFile* _Removed (Breaking)_ + -*public method Nest.BulkUpdateDescriptor.ScriptId* _Removed (Breaking)_ + -*public property Nest.BulkUpdateOperation.Lang* _Removed (Breaking)_ + -*public property Nest.BulkUpdateOperation.Params* _Removed (Breaking)_ + -*public property Nest.BulkUpdateOperation.ScriptFile* _Removed (Breaking)_ + -*public property Nest.BulkUpdateOperation.ScriptId* _Removed (Breaking)_ + -*public property Nest.IBulkUpdateOperation.Lang* _Removed (Breaking)_ + -*public property Nest.IBulkUpdateOperation.Params* _Removed (Breaking)_ + -*public property Nest.IBulkUpdateOperation.ScriptFile* _Removed (Breaking)_ + -*public property Nest.IBulkUpdateOperation.ScriptId* _Removed (Breaking)_ + -*public property Nest.IUpdateRequest.Language* _Removed (Breaking)_ + -*public property Nest.IUpdateRequest.Params* _Removed (Breaking)_ + -*public property Nest.IUpdateRequest.ScriptFile* _Removed (Breaking)_ + -*public property Nest.IUpdateRequest.ScriptId* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.Language* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.Params* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.ScriptedUpsert* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.ScriptFile* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.ScriptId* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor.ScriptQueryString* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.Language* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.Params* -_Removed (Breaking)_ + -*public property Nest.UpdateRequest.ScriptedUpsert* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.ScriptFile* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.ScriptId* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.ScriptQueryString* _Removed (Breaking)_ - -[float] -[[ioperation-on-bulk-is-now-ibulkoperation]] -=== `I*Operation` on bulk is now `IBulk*Operation` - -Impact is low unless you have casting code in your application - -*public method Nest.BulkDescriptor.Index* _Declaration changed -(Breaking)_ - -2.x: -`public BulkDescriptor Index(Func, IIndexOperation> bulkIndexSelector)` + -5.x: -`public BulkDescriptor Index(Func, IBulkIndexOperation> bulkIndexSelector)` - -*public method Nest.BulkDescriptor.IndexMany* _Declaration changed -(Breaking)_ - -2.x: -`public BulkDescriptor IndexMany(IEnumerable objects, Func, T, IIndexOperation> bulkIndexSelector)` + -5.x: -`public BulkDescriptor IndexMany(IEnumerable objects, Func, T, IBulkIndexOperation> bulkIndexSelector)` - -*public interface Nest.IIndexOperation* _Renamed (Breaking)_ - -[float] -[[cat-threadpool-changes]] -=== Cat Threadpool changes - -Cat threadpool underwent a complete makeover in core: -https://github.com/elastic/elasticsearch/pull/19721[github PR 1972] - -*public property Nest.CatThreadPoolRecord.Port* _Declaration changed -(Breaking)_ - -2.x: `public string Port { get; set; }` 5.x: -`public int Port { get; set; }` - -*public class Nest.CatThreadPool* _Removed (Breaking)_ + -*public method Nest.CatThreadPoolDescriptor.FullId* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Bulk* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Flush* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Generic* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Get* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Id* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Index* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Management* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Merge* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Optimize* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Percolate* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Pid* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Refresh* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Search* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRecord.Snapshot* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Suggest* _Removed -(Breaking)_ + -*public property Nest.CatThreadPoolRecord.Warmer* _Removed (Breaking)_ + -*public property Nest.CatThreadPoolRequest.FullId* _Removed (Breaking)_ - -[float] -[[waitforactiveshards-is-now-a-string]] -=== WaitForActiveShards is now a string - -See also: https://github.com/elastic/elasticsearch/pull/20186[github PR 20186] - -*public method Nest.ClusterHealthDescriptor.WaitForActiveShards* -_Declaration changed (Breaking)_ - -2.x: -`public ClusterHealthDescriptor WaitForActiveShards(long wait_for_active_shards)` + -5.x: -`public ClusterHealthDescriptor WaitForActiveShards(string wait_for_active_shards)` - -*public property Nest.ClusterHealthRequest.WaitForActiveShards* -_Declaration changed (Breaking)_ - -2.x: `public long WaitForActiveShards { get; set; }` + -5.x: `public string WaitForActiveShards { get; set; }` - -[float] -[[autoexpandreplicas-is-now-an-actual-type]] -=== AutoExpandReplicas is now an actual type - -Binary break only, still implicitly converts from string - -*public property Nest.IDynamicIndexSettings.AutoExpandReplicas* -_Declaration changed (Breaking)_ + -*public property Nest.DynamicIndexSettings.AutoExpandReplicas* -_Declaration changed (Breaking)_ - -2.x: `public string AutoExpandReplicas { get; set; }` + -5.x: `public AutoExpandReplicas AutoExpandReplicas { get; set; }` - -*public method Nest.DynamicIndexSettingsDescriptorBase.AutoExpandReplicas* _Declaration changed (Breaking)_ - -2.x: -`public TDescriptor AutoExpandReplicas(string AutoExpandReplicas)` + -5.x: -`public TDescriptor AutoExpandReplicas(AutoExpandReplicas autoExpandReplicas)` - -[float] -[[dslprettyprintvisitor-methods-are-now-virtual]] -=== DslPrettyPrintVisitor methods are now virtual - -This change means that you only need to override the methods that you wish to change the implementation for. - -[float] -[[nest-visitors-should-be-bound-to-interface]] -=== Nest visitors should be bound to interface - -The visitors should be passed interfaces not concrete types see: -https://github.com/elastic/elasticsearch-net/pull/2320 - -[float] -[[deprecated-queries-are-now-removed]] -=== Deprecated queries are now removed - -See also: -https://www.elastic.co/guide/en/elasticsearch/reference/5.6/breaking_50_search_changes.html#_deprecated_queries_removed[the Elasticsearch breaking changes documentation] - -*public property Nest.IQueryContainer.Missing* _Removed (Breaking)_ + -*public method Nest.Query.Missing* _Removed (Breaking)_ + -*public interface Nest.IMissingQuery* _Removed (Breaking)_ + -*public class Nest.MissingQuery* _Removed (Breaking)_ + -*public class Nest.MissingQueryDescriptor* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Missing* _Removed -(Breaking)_ + -*public property Nest.IQueryContainer.And* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Filtered* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Limit* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Not* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Or* _Removed (Breaking)_ + -*public class Nest.FilteredQuery* _Removed (Breaking)_ + -*public class Nest.FilteredQueryDescriptor* _Removed (Breaking)_ + -*public interface Nest.IFilteredQuery* _Removed (Breaking)_ + -*public method Nest.Query.And* _Removed (Breaking)_ + -*public method Nest.Query.Filtered* _Removed (Breaking)_ + -*public method Nest.Query.Limit* _Removed (Breaking)_ + -*public method Nest.Query.Not* _Removed (Breaking)_ + -*public method Nest.Query.Or* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.And* _Removed -(Breaking)_ + -*public method Nest.QueryContainerDescriptor.Filtered* _Removed -(Breaking)_ + -*public method Nest.QueryContainerDescriptor.Not* _Removed -(Breaking)_ + -*public method Nest.QueryContainerDescriptor.Or* _Removed -(Breaking)_ + -*public class Nest.AndQuery* _Removed (Breaking)_ + -*public class Nest.AndQueryDescriptor* _Removed (Breaking)_ + -*public interface Nest.IAndQuery* _Removed (Breaking)_ + -*public interface Nest.IOrQuery* _Removed (Breaking)_ + -*public class Nest.OrQuery* _Removed (Breaking)_ + -*public class Nest.OrQueryDescriptor* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Limit* _Removed -(Breaking)_ + -*public interface Nest.ILimitQuery* _Removed (Breaking)_ + -*public class Nest.LimitQuery* _Removed (Breaking)_ + -*public class Nest.LimitQueryDescriptor* _Removed (Breaking)_ + -*public interface Nest.INotQuery* _Removed (Breaking)_ + -*public class Nest.NotQuery* _Removed (Breaking)_ + -*public class Nest.NotQueryDescriptor* _Removed (Breaking)_ - -[float] -[[dynamic-mapping-now-sends-truefalse]] -=== Dynamic mapping now sends true/false - -So is now a union of `bool` and `DynamicMapping` - -*public enum Nest.DynamicMapping* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Nest.DynamicMappingJsonConverter)] -public enum DynamicMapping -{ - Allow = 0, - Ignore = 1, - Strict = 2 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum DynamicMapping -{ - Strict = 0 -} ----- - -*public property Nest.IObjectProperty.Dynamic* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -[JsonPropertyAttribute("dynamic")] -public Nullable Dynamic { get; set; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("dynamic")] -public Union Dynamic { get; set; } ----- - -*public property Nest.PutMappingRequest.Dynamic* _Declaration changed -(Breaking)_ + -*public property Nest.PutMappingRequest.Dynamic* _Declaration changed -(Breaking)_ + -*public property Nest.TypeMapping.Dynamic* _Declaration changed -(Breaking)_ + -*public property Nest.ObjectProperty.Dynamic* _Declaration changed -(Breaking)_ + -*public method Nest.ObjectPropertyDescriptorBase.Dynamic* _Declaration changed (Breaking)_ - -2.x: `public TDescriptor Dynamic(DynamicMapping dynamic)` + -5.x: `public TDescriptor Dynamic(Union dynamic)` - -*public method Nest.PutMappingDescriptor.Dynamic* _Declaration -changed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.Dynamic* _Declaration -changed (Breaking)_ - -[float] -[[codestandards-changes]] -=== CodeStandards changes - -Impact low, various binary breaking changes of code that did not adhere -to our coding conventions - -*public method Nest.BoolQueryDescriptor.DisableCoord* _Declaration -changed (Breaking)_ - -2.x: `public BoolQueryDescriptor DisableCoord()` + -5.x: -`public BoolQueryDescriptor DisableCoord(bool? disableCoord = True)` - -*public method Nest.ExtendedStatsBucketAggregationDescriptor.Sigma* -_Declaration changed (Breaking)_ - -2.x: -`public ExtendedStatsBucketAggregationDescriptor Sigma(double? sigma)` + -5.x: -`public ExtendedStatsBucketAggregationDescriptor Sigma(double sigma)` - -*public method Nest.StringPropertyDescriptor.PositionIncrementGap* -_Declaration changed (Breaking)_ - -2.x: -`public StringPropertyDescriptor PositionIncrementGap(int? positionIncrementGap)` + -5.x: -`public StringPropertyDescriptor PositionIncrementGap(int positionIncrementGap)` - -In some cases we exposed `FluentDictionary` as property which is not -useful - -*public property Nest.TypeMapping.Meta* _Declaration changed -(Breaking)_ + -*public property Nest.PutMappingRequest.Meta* _Declaration changed -(Breaking)_ *public property Nest.ITypeMapping.Meta* _Declaration -changed (Breaking)_ *public property Nest.PutMappingRequest.Meta* -_Declaration changed (Breaking)_ - -2.x: `public FluentDictionary Meta { get; set; }` + -5.x: `public IDictionary Meta { get; set; }` - -[float] -[[nest-visibility-changes]] -=== Visibility changes - -Impact low, these are types/methods/constructors that were never -supposed to be public. - -*public class Nest.BucketsPathJsonConverter* _Visibility was changed -from public to internal (Breaking)_ + -*public class Nest.DictionaryResponseJsonConverter* _Visibility was changed from public to internal (Breaking)_ + -*public method Nest.CreateIndexRequest..ctor* _Visibility was changed -from public to internal (Breaking)_ + -*public method Nest.NumberPropertyDescriptorBase..ctor* _Visibility was changed from public to protected -(Breaking)_ + -*public method Nest.ObjectPropertyDescriptorBase..ctor* _Visibility was changed from public -to protected (Breaking)_ + -*public class Nest.PercentileRanksAggregationJsonConverter* _Visibility -was changed from public to internal (Breaking)_ + -*public class Nest.PercentilesAggregationJsonConverter* _Visibility was -changed from public to internal (Breaking)_ + -*public class Nest.PropertyNameExtensions* _Visibility was changed from -public to internal (Breaking)_ + -*public class Nest.ReindexRoutingJsonConverter* _Visibility was changed -from public to internal (Breaking)_ + -*public property Nest.ResponseBase.ApiCall* _Visibility was changed from -public to protected (Breaking)_ + -*public class Nest.ScoreFunctionJsonConverter* _Visibility was changed -from public to internal (Breaking)_ + -*public class Nest.ScriptJsonConverter* _Visibility was changed from -public to internal (Breaking)_ + -*public property Nest.SearchResponse.ApiCall* _Visibility was changed -from public to protected (Breaking)_ + -*public class Nest.SimpleQueryStringFlagsJsonConverter* _Visibility was -changed from public to internal (Breaking)_ + -*public class Nest.SourceFilterJsonConverter* _Visibility was changed -from public to internal (Breaking)_ + -*public class Nest.TypeNameExtensions* _Visibility was changed from -public to internal (Breaking)_ + -*public method Nest.AggregationsHelper..ctor* _Visibility was changed -from public to protected (Breaking)_ - -[float] -[[response-properties-should-not-have-setters]] -=== Response properties should not have setters - -These properties had public setters which made no sense (readonly), -impact low. - -*public property Nest.ClusterRerouteResponse.State* _Visibility changed -(Breaking)_ + -*public property Nest.ClusterStatsResponse.ClusterName* _Visibility -changed (Breaking)_ + -*public property Nest.ClusterStatsResponse.Indices* _Visibility changed -(Breaking)_ + -*public property Nest.ClusterStatsResponse.Nodes* _Visibility changed -(Breaking)_ + -*public property Nest.ClusterStatsResponse.Status* _Visibility changed -(Breaking)_ + -*public property Nest.ClusterStatsResponse.Timestamp* _Visibility -changed (Breaking)_ + -*public property Nest.FieldMapping.FullName* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.Density* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.DocCount* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.MaxDoc* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.MaxValue* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.MinValue* _Visibility changed -(Breaking)_ + -*public property Nest.FieldStatsField.SumDocumentFrequency* _Visibility -changed (Breaking)_ + -*public property Nest.FieldStatsField.SumTotalTermFrequency* _Visibility -changed (Breaking)_ + -*public property Nest.FieldStatsResponse.Shards* _Visibility changed -(Breaking)_ + -*public property Nest.GetSearchTemplateResponse.Template* _Visibility -changed (Breaking)_ + -*public property Nest.HotThreadInformation.NodeId* _Visibility changed -(Breaking)_ + -*public property Nest.HotThreadInformation.NodeName* _Visibility changed -(Breaking)_ + -*public property Nest.IndexHealthStats.ActivePrimaryShards* _Visibility -changed (Breaking)_ + -*public property Nest.IndexHealthStats.ActiveShards* _Visibility changed -(Breaking)_ + -*public property Nest.IndexHealthStats.InitializingShards* _Visibility -changed (Breaking)_ + -*public property Nest.IndexHealthStats.NumberOfReplicas* _Visibility -changed (Breaking)_ + -*public property Nest.IndexHealthStats.NumberOfShards* _Visibility -changed (Breaking)_ + -*public property Nest.IndexHealthStats.RelocatingShards* _Visibility -changed (Breaking)_ + -*public property Nest.IndexHealthStats.Status* _Visibility changed -(Breaking)_ + -*public property Nest.IndexHealthStats.UnassignedShards* _Visibility -changed (Breaking)_ + -*public property Nest.IndicesStatsResponse.Stats* _Visibility changed -(Breaking)_ + -*public property Nest.PendingTask.InsertOrder* _Visibility changed -(Breaking)_ + -*public property Nest.PendingTask.Priority* _Visibility changed -(Breaking)_ + -*public property Nest.PendingTask.Source* _Visibility changed -(Breaking)_ + -*public property Nest.PendingTask.TimeInQueue* _Visibility changed -(Breaking)_ + -*public property Nest.PendingTask.TimeInQueueMilliseconds* _Visibility -changed (Breaking)_ + -*public property Nest.PercolateCountResponse.Took* _Declaration changed -(Breaking)_ + -*public property Nest.PercolatorMatch.Id* _Visibility changed -(Breaking)_ + -*public property Nest.PercolatorMatch.Index* _Visibility changed -(Breaking)_ + -*public property Nest.PercolatorMatch.Score* _Visibility changed -(Breaking)_ + -*public property Nest.InstantGet.Fields* _Visibility changed -(Breaking)_ + -*public property Nest.SearchNode.Name* _Visibility changed (Breaking)_ + -*public property Nest.SearchNode.TransportAddress* _Visibility changed -(Breaking)_ + -*public property Nest.SearchResponse.Took* _Declaration changed -(Breaking)_ + -*public property Nest.SearchShard.Index* _Visibility changed -(Breaking)_ + -*public property Nest.SearchShard.Node* _Visibility changed -(Breaking)_ + -*public property Nest.SearchShard.Primary* _Visibility changed -(Breaking)_ + -*public property Nest.SearchShard.RelocatingNode* _Visibility changed -(Breaking)_ + -*public property Nest.SearchShard.Shard* _Visibility changed -(Breaking)_ + -*public property Nest.SearchShard.State* _Visibility changed -(Breaking)_ + -*public property Nest.ShardHealthStats.ActiveShards* _Visibility changed -(Breaking)_ + -*public property Nest.ShardHealthStats.InitializingShards* _Visibility -changed (Breaking)_ + -*public property Nest.ShardHealthStats.PrimaryActive* _Visibility -changed (Breaking)_ + -*public property Nest.ShardHealthStats.RelocatingShards* _Visibility -changed (Breaking)_ + -*public property Nest.ShardHealthStats.Status* _Visibility changed -(Breaking)_ + -*public property Nest.ShardHealthStats.UnassignedShards* _Visibility -changed (Breaking)_ + -*public property Nest.ShardStore.Allocation* _Visibility changed -(Breaking)_ + -*public property Nest.ShardStore.Id* __Visibility changed (Breaking) + -*public property Nest.ShardStore.Name* __Visibility changed -(Breaking)* + -*public property Nest.ShardStore.StoreException* _Visibility changed -(Breaking)_ + -*public property Nest.ShardStore.TransportAddress* _Visibility changed -(Breaking)_ + -*public property Nest.ShardStoreException.Reason* _Visibility changed -(Breaking)_ + -*public property Nest.ShardStoreException.Type* _Visibility changed -(Breaking)_ + -*public property Nest.UpgradeResponse.Shards* _Visibility changed -(Breaking)_ + -*public property Nest.UpgradeStatusResponse.SizeInBytes* _Visibility -changed (Breaking)_ + -*public property Nest.UpgradeStatusResponse.SizeToUpgradeAncientInBytes* -_Visibility changed (Breaking)_ + -*public property Nest.UpgradeStatusResponse.SizeToUpgradeInBytes* -_Visibility changed (Breaking)_ - -[float] -[[setters-on-interfaces]] -=== Setters on interfaces - -*public property Nest.IClusterRerouteResponse.State* _Declaration -changed (Breaking)_ + -*public property Nest.IClusterStatsResponse.ClusterName* _Declaration -changed (Breaking)_ + -*public property Nest.IClusterStatsResponse.Indices* _Declaration -changed (Breaking)_ + -*public property Nest.IClusterStatsResponse.Nodes* _Declaration changed -(Breaking)_ + -*public property Nest.IClusterStatsResponse.Status* _Declaration changed -(Breaking)_ + -*public property Nest.IClusterStatsResponse.Timestamp* _Declaration -changed (Breaking)_ + -*public property Nest.IFieldStatsResponse.Shards* _Declaration changed -(Breaking)_ + -*public property Nest.IGetSearchTemplateResponse.Template* _Declaration -changed (Breaking)_ + -*public property Nest.IUpgradeStatusResponse.SizeInBytes* _Declaration -changed (Breaking)_ + -*public property -Nest.IUpgradeStatusResponse.SizeToUpgradeAncientInBytes* _Declaration -changed (Breaking)_ + -*public property Nest.IUpgradeStatusResponse.SizeToUpgradeInBytes* -_Declaration changed (Breaking)_ + -*public property Nest.IUpgradeResponse.Shards* _Declaration changed -(Breaking)_ - -[float] -[[no-id-type-on-response]] -=== No Id type on response - -Several response properties were of type `Id` which is not all that -useful to consumers. Now `string`. - -*public property Nest.ExecuteWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.GetWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.IExecuteWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.IGetWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.IndexActionResult.Id* _Declaration changed -(Breaking)_ + -*public property Nest.IndexActionResultIndexResponse.Id* _Declaration -changed (Breaking)_ + -*public property Nest.IPutWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.PutWatchResponse.Id* _Declaration changed -(Breaking)_ + -*public property Nest.WatchRecord.WatchId* _Declaration changed -(Breaking)_ + -*public property Nest.WatchRecordQueuedStats.WatchId* _Declaration -changed (Breaking)_ + -*public property Nest.WatchRecordQueuedStats.WatchRecordId* _Declaration -changed (Breaking)_ - -[float] -[[methods-taking-field-as-string]] -=== Methods taking Field as string - -Some methods were taking a Field as string which should take `Field` -instead. impact minimal since string still implicitly converts to -`Field` - -*public method Nest.Field.And* _Declaration changed (Breaking)_ + -*public method Nest.GeoDistanceAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.GeoHashGridAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.HistogramAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.InnerHitsDescriptor.FielddataFields* _Declaration -changed (Breaking)_ + -*public method Nest.IpRangeAggregationDescriptor.Field* _Declaration -changed (Breaking)_ + -*public method Nest.MetricAggregationDescriptorBase.Field* _Declaration changed -(Breaking)_ + -*public method Nest.MissingAggregationDescriptor.Field* _Declaration -changed (Breaking)_ + -*public method Nest.NestedAggregationDescriptor.Path* _Declaration -changed (Breaking)_ + -*public method Nest.DateHistogramAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.DateRangeAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.DecayFunctionDescriptorBase.Field* _Declaration changed (Breaking)_ + -*public method Nest.Query.Prefix* _Declaration changed (Breaking)_ + -*public method Nest.Query.Term* _Declaration changed (Breaking)_ + -*public method Nest.Query.Wildcard* _Declaration changed -(Breaking)_ + -*public method Nest.QueryContainerDescriptor.Prefix* _Declaration -changed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Term* _Declaration -changed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Wildcard* _Declaration -changed (Breaking)_ + -*public method Nest.RangeAggregationDescriptor.Field* _Declaration -changed (Breaking)_ + -*public method Nest.SignificantTermsAggregationDescriptor.Field* -_Declaration changed (Breaking)_ + -*public method Nest.TermsAggregationDescriptor.Field* _Declaration -changed (Breaking)_ + -*public method Nest.ReverseNestedAggregationDescriptor.Path* -_Declaration changed (Breaking)_ - -[float] -[[norms-now-takes-a-boolean-instead-of-an-object]] -=== Norms now takes a boolean instead of an object - -See: https://github.com/elastic/elasticsearch-net/issues/2004[github issue 2004] - -*public method Nest.GenericPropertyDescriptor.Norms* _Declaration -changed (Breaking)_ - -2.x: -`public GenericPropertyDescriptor Norms(Func selector)` + -5.x: `public GenericPropertyDescriptor Norms(bool enabled = True)` - -*public property Nest.GenericProperty.Norms* _Declaration changed -(Breaking)_ - -2.x: `public INorms Norms { get; set; }` + -5.x: `public bool? Norms { get; set; }` - -*public property Nest.IGenericProperty.Norms* _Declaration changed -(Breaking)_ + -*public property Nest.IStringProperty.Norms* _Declaration changed -(Breaking)_ + -*public property Nest.StringProperty.Norms* _Declaration changed -(Breaking)_ + -*public method Nest.StringPropertyDescriptor.Norms* _Declaration -changed (Breaking)_ + -*public interface Nest.INorms* _Removed (Breaking)_ + -*public class Nest.Norms* _Removed (Breaking)_ + -*public class Nest.NormsDescriptor* _Removed (Breaking)_ + -*public enum Nest.NormsLoading* _Removed (Breaking)_ - -[float] -[[score-is-now-nullable-on-hit]] -=== Score is now nullable on hit - -See: https://github.com/elastic/elasticsearch-net/pull/2365[github PR 2365] - -*public property Nest.Hit.Score* _Declaration changed (Breaking)_ -*public property Nest.IHit.Score* _Declaration changed (Breaking)_ - -[float] -[[can-now-take-multiple-rescores]] -=== Can now take multiple rescores - -2.x can as well but in 5.x we do it in a straightforward way without -custom json converters. - -*public property Nest.SearchRequest.Rescore* _Declaration changed -(Breaking)_ + -*public property Nest.SearchRequest.Rescore* _Declaration changed -(Breaking)_ + -*public property Nest.ISearchRequest.Rescore* _Declaration changed -(Breaking)_ - -2.x: `public IRescore Rescore { get; set; }` + -5.x: `public IList Rescore { get; set; }` - -*public method Nest.SearchDescriptor.Rescore* _Declaration changed -(Breaking)_ - -2.x: -`public SearchDescriptor Rescore(Func, IRescore> rescoreSelector)` + -5.x: -`public SearchDescriptor Rescore(Func, IPromise>> rescoreSelector)` - -*public class Nest.MultiRescore* _Removed (Breaking)_ + -*public class Nest.RescoreConverter* _Removed (Breaking)_ - -[float] -[[retries-on-reindex-task-status-now-object]] -=== Retries on reindex task status now object - -Used to return only long, now tells you how bulk and search retries were -necessary - -*public property Nest.IReindexOnServerResponse.Retries* _Declaration -changed (Breaking)_ + -*public property Nest.IUpdateByQueryResponse.Retries* _Declaration -changed (Breaking)_ + -*public property Nest.ReindexOnServerResponse.Retries* _Declaration -changed (Breaking)_ + -*public property Nest.ReindexStatus.Retries* _Declaration changed -(Breaking)_ + -*public property Nest.UpdateByQueryResponse.Retries* _Declaration -changed (Breaking)_ - -2.x: `public long Retries { get; internal set; }` + -5.x: `public Retries Retries { get; internal set; }` - -[float] -[[took-should-always-be-a-long]] -=== Took should always be a long - -*public property Nest.BulkResponse.Took* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -[ObsoleteAttribute("returned value may be larger than int. In this case, value will be int.MaxValue and TookAsLong field can be checked. Took is long in 5.0.0")] -[JsonIgnoreAttribute] -public int Took { get; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("took")] -public long Took { get; internal set; } ----- - -*public property Nest.IBulkResponse.Took* _Declaration changed -(Breaking)_ + -*public property Nest.IPercolateCountResponse.Took* _Declaration changed -(Breaking)_ + -*public property Nest.ISearchResponse.Took* _Declaration changed -(Breaking)_ + -*public property Nest.TermVectorsResponse.Took* _Declaration changed -(Breaking)_ - -also the hacks from 2.x have been removed - -*public property Nest.BulkResponse.TookAsLong* _Removed (Breaking)_ + -*public property Nest.IBulkResponse.TookAsLong* _Removed (Breaking)_ + -*public property Nest.IPercolateCountResponse.TookAsLong* _Removed -(Breaking)_ + -*public property Nest.ISearchResponse.TookAsLong* _Removed -(Breaking)_ + -*public property Nest.ITermVectorsResponse.TookAsLong* _Removed -(Breaking)_ + -*public property Nest.PercolateCountResponse.TookAsLong* _Removed -(Breaking)_ + -*public property Nest.SearchResponse.TookAsLong* _Removed -(Breaking)_ + -*public property Nest.TermVectorsResponse.TookAsLong* _Removed -(Breaking)_ - -[float] -[[allow-source-filter-to-send-false]] -=== Allow source filter to send false - -In NEST 2.x we would always send Source.Exclude as -`_source: { exclude: [""] }`. in 5.x, we now use a union of `bool` and -`ISourceFiler`, so NEST can send and receive `_source: false`. Which -should short circuit some routines on the server - -See also: https://github.com/elastic/elasticsearch-net/pull/2200[github PR 2200] - -*public property Nest.InnerHits.Source* _Declaration changed (Breaking)_ - -2.x: `public ISourceFilter Source { get; set; }` + -5.x: `public Union Source { get; set; }` - -*public property Nest.IInnerHits.Source* _Declaration changed -(Breaking)_ + -*public property Nest.ISearchRequest.Source* _Declaration changed -(Breaking)_ + -*public property Nest.ITopHitsAggregation.Source* _Declaration changed -(Breaking)_ + -*public property Nest.SearchRequest.Source* _Declaration changed -(Breaking)_ + -*public property Nest.SearchRequest.Source* _Declaration changed -(Breaking)_ + -*public property Nest.TopHitsAggregation.Source* _Declaration changed -(Breaking)_ - -`Exclude` and `Include` are now plural on `ISourceFilter` in line with -the change in Elasticsearch 5.0 - -*public property Nest.SourceFilter.Disable* _Removed (Breaking)_ + -*public property Nest.SourceFilter.Exclude* _Removed (Breaking)_ + -*public property Nest.SourceFilter.Include* _Removed (Breaking)_ + -*public method Nest.SourceFilterDescriptor.Disable* _Removed -(Breaking)_ + -*public method Nest.SourceFilterDescriptor.Exclude* _Removed -(Breaking)_ + -*public method Nest.SourceFilterDescriptor.Include* _Removed -(Breaking)_ + -*public property Nest.ISourceFilter.Disable* _Removed (Breaking)_ + -*public property Nest.ISourceFilter.Exclude* _Removed (Breaking)_ + -*public property Nest.ISourceFilter.Include* _Removed (Breaking)_ - -[float] -[[bulk-index-failure-now-returns-its-metadata]] -=== Bulk index failure now returns its metadata - -*public property Nest.BulkIndexByScrollFailure.Cause* _Declaration -changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonPropertyAttribute("cause")] -public Throwable Cause { get; internal set; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("cause")] -public BulkIndexFailureCause Cause { get; set; } ----- - -[float] -[[getaliases-api-removed]] -=== GetAliases API removed - -GetAlias API now returns `GetAlias*` named types not `GetAliases*` - -*public class Nest.GetAliasesDescriptor* _Removed (Breaking)_ + -*public class Nest.GetAliasesRequest* _Removed (Breaking)_ + -*public class Nest.GetAliasesResponse* _Removed (Breaking)_ + -*public interface Nest.IGetAliasesRequest* _Removed (Breaking)_ + -*public interface Nest.IGetAliasesResponse* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetAliases* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetAliases* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetAliasesAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.GetAliasesAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.GetAliases* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetAliases* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetAliasesAsync* _Removed (Breaking)_ - -*public method Nest.ElasticClient.GetAlias* _Declaration changed -(Breaking)_ - -2.x: `public IGetAliasesResponse GetAlias(IGetAliasRequest request)` + -5.x: `public IGetAliasResponse GetAlias(IGetAliasRequest request)` - -*public method Nest.ElasticClient.GetAlias* _Declaration changed -(Breaking)_ + -*public method Nest.IElasticClient.GetAlias* _Declaration changed -(Breaking)_ + -*public method Nest.IElasticClient.GetAlias* _Declaration changed -(Breaking)_ - -[float] -[[suggest-is-bound-over-t]] -=== Suggest is bound over T - -See: https://github.com/elastic/elasticsearch-net/pull/2370[github PR 2370] - -*public method Nest.IElasticClient.Suggest* _Declaration changed -(Breaking)_ - -2.x: -`public ISuggestResponse Suggest(Func, ISuggestRequest> selector)` + -5.x: -`public ISuggestResponse Suggest(Func, ISuggestRequest> selector)` - -[float] -[[ielasticclient-changes]] -=== IElasticClient changes - -Make sure all methods favor types over strings - -*public method Nest.DeleteManyExtensions.DeleteMany* _Declaration -changed (Breaking)_ - -2.x - -[source,csharp] ----- -public static IBulkResponse DeleteMany(IElasticClient client, IEnumerable objects, string index, string type) ----- - -5.x - -[source,csharp] ----- -public static IBulkResponse DeleteMany(IElasticClient client, IEnumerable objects, IndexName index, TypeName type) ----- - -*public method Nest.GetManyExtensions.GetMany* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, string index, string type) ----- - -5.x - -[source,csharp] ----- -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, IndexName index, TypeName type) ----- - -*public method Nest.GetManyExtensions.GetMany* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, string index, string type) ----- - -5.x - -[source,csharp] ----- -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, IndexName index, TypeName type) ----- - -*public method Nest.IElasticClient.DeleteByQuery* _Declaration -changed (Breaking)_ - -2.x: -`public IDeleteByQueryResponse DeleteByQuery(Indices indices, Types types, Func, IDeleteByQueryRequest> selector)` + -5.x: -`public IDeleteByQueryResponse DeleteByQuery(Func, IDeleteByQueryRequest> selector)` - -*public method Nest.IndexManyExtensions.IndexMany* _Declaration -changed (Breaking)_ - -2.x - -[source,csharp] ----- -public static IBulkResponse IndexMany(IElasticClient client, IEnumerable objects, string index, string type) ----- - -5.x - -[source,csharp] ----- -public static IBulkResponse IndexMany(IElasticClient client, IEnumerable objects, IndexName index, TypeName type) ----- - -*public method -Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAlias* -_Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -public static IList GetIndicesPointingToAlias(IElasticClient client, string aliasName) ----- - -5.x - -[source,csharp] ----- -public static IEnumerable GetIndicesPointingToAlias(IElasticClient client, Names alias) ----- - -*public method -Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAliasAsync* -_Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -public static Task> GetIndicesPointingToAliasAsync(IElasticClient client, string aliasName) ----- - -5.x - -[source,csharp] ----- -public static Task> GetIndicesPointingToAliasAsync(IElasticClient client, Names alias) ----- - -*public method Nest.ElasticClient.DeleteByQuery* _Declaration changed -(Breaking)_ - -2.x: -`public IDeleteByQueryResponse DeleteByQuery(Indices indices, Types types, Func, IDeleteByQueryRequest> selector)` + -5.x: -`public IDeleteByQueryResponse DeleteByQuery(Func, IDeleteByQueryRequest> selector)` - -[float] -[[enum-changes]] -=== Enum Changes - -Impact low - -*public enum Nest.LicenseStatus* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum LicenseStatus -{ - Active = 0, - Invalid = 1, - Expired = 2 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum LicenseStatus -{ - Active = 0, - Valid = 1, - Invalid = 2, - Expired = 3 -} ----- - -*public enum Nest.NestedScoreMode* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NestedScoreMode -{ - Average = 0, - Total = 1, - Min = 2, - Max = 3, - None = 4 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NestedScoreMode -{ - Average = 0, - Sum = 1, - Min = 2, - Max = 3, - None = 4 -} ----- - -*public enum Nest.NumberType* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumberType -{ - Default = 0, - Float = 1, - Double = 2, - Integer = 3, - Long = 4, - Short = 5, - Byte = 6 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumberType -{ - Float = 0, - HalfFloat = 1, - ScaledFloat = 2, - Double = 3, - Integer = 4, - Long = 5, - Short = 6, - Byte = 7 -} ----- - -*public enum Nest.NumericFielddataFormat* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumericFielddataFormat -{ - Array = 0, - DocValues = 1, - Disabled = 2 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumericFielddataFormat -{ - Array = 0, - Disabled = 1 -} ----- - -*public enum Nest.ScoreMode* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum ScoreMode -{ - Average = 0, - First = 1, - Max = 2, - Min = 3, - Multiply = 4, - Total = 5, - Sum = 6 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum ScoreMode -{ - Average = 0, - Max = 1, - Min = 2, - Multiply = 3, - Total = 4 -} ----- - -*public enum Nest.SimilarityOption* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum SimilarityOption -{ - Default = 0, - BM25 = 1 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum SimilarityOption -{ - Classic = 0, - BM25 = 1 -} ----- - -*public enum Nest.StringFielddataFormat* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum StringFielddataFormat -{ - PagedBytes = 0, - DocValues = 1, - Disabled = 2 -} ----- - -5.x - -[source,csharp] ----- -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum StringFielddataFormat -{ - PagedBytes = 0, - Disabled = 1 -} ----- - -[float] -[[uncategorized]] -=== Uncategorized - -Miscellaneous changes that are yet to be categorized. Please open an issue if -you are bitten by any of these and feel it warrants an explanation. - -*public method Nest.DeleteByQueryDescriptor.Routing* _Declaration -changed (Breaking)_ - -2.x: `public DeleteByQueryDescriptor Routing(string routing)` + -5.x: `public DeleteByQueryDescriptor Routing(String[] routing)` - -*public property Nest.DeleteByQueryRequest.Routing* _Declaration changed -(Breaking)_ - -2.x: `public string Routing { get; set; }` + -5.x: `public String[] Routing { get; set; }` - -*public property Nest.DeleteByQueryRequest.Routing* _Declaration -changed (Breaking)_ - -2.x: `public string Routing { get; set; }` + -5.x: `public String[] Routing { get; set; }` - -*public method Nest.Field..ctor* _Declaration changed (Breaking)_ - -2.x: `public .ctor()` + -5.x: `public .ctor(string name, double? boost)` - -*public method Nest.Field.And* _Declaration changed (Breaking)_ - -2.x: `public Fields And(Expression> field)` + -5.x: -`public Fields And(Expression> field, double? boost)` - -*public property Nest.Field.Expression* _Declaration changed (Breaking)_ - -2.x: `public Expression Expression { get; set; }` + -5.x: `public Expression Expression { get; }` - -*public property Nest.Field.Name* _Declaration changed (Breaking)_ - -2.x: `public string Name { get; set; }` + -5.x: `public string Name { get; }` - -*public property Nest.Field.Property* _Declaration changed (Breaking)_ - -2.x: `public PropertyInfo Property { get; set; }` + -5.x: `public PropertyInfo Property { get; }` - -*public class Nest.GeoShapeQueryDescriptorBase* _Declaration changed (Breaking)_ - -2.x: -`public abstract class GeoShapeQueryDescriptorBase : FieldNameQueryDescriptorBase, IDescriptor, IQuery, IFieldNameQuery, IGeoShapeQuery where TDescriptor : FieldNameQueryDescriptorBase, TInterface where TInterface : class, IGeoShapeQuery` + -5.x: -`public abstract class GeoShapeQueryDescriptorBase : FieldNameQueryDescriptorBase, IDescriptor, IQuery, IFieldNameQuery, IGeoShapeQuery where TDescriptor : GeoShapeQueryDescriptorBase, TInterface where TInterface : class, IGeoShapeQuery` - -*public property Nest.HighlightField.Type* _Declaration changed -(Breaking)_ - -2.x: `public Nullable Type { get; set; }` + -5.x: `public Union Type { get; set; }` - -*public method Nest.HighlightFieldDescriptor.PostTags* _Declaration -changed (Breaking)_ - -2.x: `public HighlightFieldDescriptor PostTags(string postTags)` + -5.x: `public HighlightFieldDescriptor PostTags(String[] postTags)` - -*public method Nest.HighlightFieldDescriptor.PreTags* _Declaration -changed (Breaking)_ - -2.x: `public HighlightFieldDescriptor PreTags(string preTags)` + -5.x: `public HighlightFieldDescriptor PreTags(String[] preTags)` - -*public property Nest.IHighlightField.Type* _Declaration changed -(Breaking)_ - -2.x - -[source,csharp] ----- -public Nullable Type { get; set; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("type")] -public Union Type { get; set; } ----- - -*public property Nest.IndexActionResultIndexResponse.Result* -_Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonPropertyAttribute("result")] -public string Result { get; set; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("result")] -public Result Result { get; set; } ----- - -*public method Nest.PropertyName..ctor* _Declaration changed (Breaking)_ - -2.x: `public .ctor()` + -5.x: `public .ctor(string name)` - -*public property Nest.PropertyName.Expression* _Declaration changed -(Breaking)_ - -2.x: `public Expression Expression { get; set; }` + -5.x: `public Expression Expression { get; }` - -*public property Nest.PropertyName.Name* _Declaration changed -(Breaking)_ - -2.x: `public string Name { get; set; }` + -5.x: `public string Name { get; }` - -*public property Nest.PropertyName.Property* _Declaration changed -(Breaking)_ - -2.x: `public PropertyInfo Property { get; set; }` + -5.x: `public PropertyInfo Property { get; }` - -*public method Nest.ReindexDescriptor..ctor* _Declaration changed -(Breaking)_ - -2.x: `public .ctor(IndexName from, IndexName to)` + -5.x: `public .ctor()` - -*public method Nest.ReindexObservable.Subscribe* _Declaration changed -(Breaking)_ - -2.x: -`public IDisposable Subscribe(IObserver> observer)` + -5.x: `public IDisposable Subscribe(ReindexObserver observer)` - -*public method Nest.ReindexObserver..ctor* _Declaration changed -(Breaking)_ - -2.x: -`public .ctor(Action> onNext, Action onError, Action completed)` + -5.x: -`public .ctor(Action onNext, Action onError, Action onCompleted)` - -*public method Nest.ReindexOnServerDescriptor.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public ReindexOnServerDescriptor RequestsPerSecond(Single requests_per_second)` + -5.x: -`public ReindexOnServerDescriptor RequestsPerSecond(long requests_per_second)` - -*public property Nest.ReindexOnServerRequest.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: `public Single RequestsPerSecond { get; set; }` + -5.x: `public long RequestsPerSecond { get; set; }` - -*public method Nest.ReindexRethrottleDescriptor.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public ReindexRethrottleDescriptor RequestsPerSecond(Single requests_per_second)` + -5.x: -`public ReindexRethrottleDescriptor RequestsPerSecond(long requests_per_second)` - -*public property Nest.ReindexRethrottleRequest.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: `public Single RequestsPerSecond { get; set; }` + -5.x: `public long RequestsPerSecond { get; set; }` - -*public property Nest.Time.Milliseconds* _Declaration changed -(Breaking)_ - -2.x: `public double Milliseconds { get; private set; }` + -5.x: `public double? Milliseconds { get; private set; }` - -*public method Nest.UpdateByQueryDescriptor.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: -`public UpdateByQueryDescriptor RequestsPerSecond(Single requests_per_second)` + -5.x: -`public UpdateByQueryDescriptor RequestsPerSecond(long requests_per_second)` - -*public property Nest.UpdateByQueryRequest.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: `public Single RequestsPerSecond { get; set; }` + -5.x: `public long RequestsPerSecond { get; set; }` - -*public property Nest.UpdateByQueryRequest.RequestsPerSecond* -_Declaration changed (Breaking)_ - -2.x: `public Single RequestsPerSecond { get; set; }` + -5.x: `public long RequestsPerSecond { get; set; }` - -*public property Nest.Watch.Actions* _Declaration changed (Breaking)_ - -2.x - -[source,csharp] ----- -[JsonPropertyAttribute("actions")] -[JsonConverterAttribute(Nest.ActionsJsonConverter)] -public IDictionary Actions { get; internal set; } ----- - -5.x - -[source,csharp] ----- -[JsonPropertyAttribute("actions")] -[JsonConverterAttribute(Nest.ActionsJsonConverter)] -public Actions Actions { get; internal set; } ----- - -[float] -[[read-only-data-types-on-responses.]] -=== Read only data types on responses. - - -Responses now favor `IReadOnlyDictionary` and -`IReadOnlyCollection` which are initialized as empty. - -[float] -[[now-ireadonlydictionary]] -=== Now IReadOnlyDictionary - -*public property Nest.ActivationStatus.Actions* + -*public property Nest.AggregationsHelper.Aggregations* + -*public property Nest.AuthenticateResponse.Metadata* + -*public property Nest.BucketAggregate.Meta* + -*public property Nest.BucketAggregateBase.Meta* + -*public property Nest.ClearCachedRealmsResponse.Nodes* + -*public property Nest.ClearCachedRolesResponse.Nodes* + -*public property Nest.ClusterGetSettingsResponse.Persistent* + -*public property Nest.ClusterGetSettingsResponse.Transient* + -*public property Nest.ClusterHealthResponse.Indices* + -*public property Nest.ClusterPutSettingsResponse.Persistent* + -*public property Nest.ClusterPutSettingsResponse.Transient* + -*public property Nest.ClusterRerouteState.Nodes* + -*public property Nest.ClusterStateResponse.Nodes* + -*public property Nest.ExecutionResultInput.Payload* + -*public property Nest.FieldMapping.Mapping* + -*public property Nest.FieldStats.Fields* + -*public property Nest.FieldStatsResponse.Indices* + -*public property Nest.GetFieldMappingResponse.Indices* + -*public property Nest.GetIndexResponse.Indices* + -*public property Nest.GetIndexSettingsResponse.Indices* + -*public property Nest.GetIndexTemplateResponse.TemplateMappings* + -*public property Nest.GetMappingResponse.Mappings* + -*public property Nest.GetRepositoryResponse.Repositories* + -*public property Nest.GetRoleResponse.Roles* + -*public property Nest.GetUserResponse.Users* + -*public property Nest.Hit.InnerHits* + -*public property Nest.IAggregate.Meta* + -*public property Nest.IAuthenticateResponse.Metadata* + -*public property Nest.IClearCachedRealmsResponse.Nodes* + -*public property Nest.IClearCachedRolesResponse.Nodes* + -*public property Nest.IClusterGetSettingsResponse.Persistent* + -*public property Nest.IClusterGetSettingsResponse.Transient* + -*public property Nest.IClusterHealthResponse.Indices* + -*public property Nest.IClusterPutSettingsResponse.Persistent* + -*public property Nest.IClusterPutSettingsResponse.Transient* + -*public property Nest.IClusterStateResponse.Nodes* + -*public property Nest.IDictionaryResponse.BackingDictionary* + -*public property Nest.IFieldStatsResponse.Indices* + -*public property Nest.IGetFieldMappingResponse.Indices* + -*public property Nest.IGetIndexResponse.Indices* + -*public property Nest.IGetIndexSettingsResponse.Indices* + -*public property Nest.IGetIndexTemplateResponse.TemplateMappings* + -*public property Nest.IGetMappingResponse.Mappings* + -*public property Nest.IGetRepositoryResponse.Repositories* + -*public property Nest.IGetRoleResponse.Roles* + -*public property Nest.IGetUserResponse.Users* + -*public property Nest.IHit.InnerHits* + -*public property Nest.IIndicesShardStoresResponse.Indices* + -*public property Nest.IIndicesStatsResponse.Indices* + -*public property Nest.IndexHealthStats.Shards* + -*public property Nest.IndexingStats.Types* + -*public property Nest.IndexRoutingTable.Shards* + -*public property Nest.IndexSegment.Shards* + -*public property Nest.IndicesShardStores.Shards* + -*public property Nest.IndicesShardStoresResponse.Indices* + -*public property Nest.IndicesStatsResponse.Indices* + -*public property Nest.INodesInfoResponse.Nodes* + -*public property Nest.INodesStatsResponse.Nodes* + -*public property Nest.IRecoveryStatusResponse.Indices* + -*public property Nest.IReindexRethrottleResponse.Nodes* + -*public property Nest.ISearchResponse.Aggregations* + -*public property Nest.ISearchResponse.Suggest* + -*public property Nest.ISearchShardsResponse.Nodes* + -*public property Nest.ISegmentsResponse.Indices* + -*public property Nest.IUpgradeStatusResponse.Upgrades* + -*public property Nest.IVerifyRepositoryResponse.Nodes* + -*public property Nest.MetadataState.Indices* + -*public property Nest.MetadataState.Templates* + -*public property Nest.MetricAggregateBase.Meta* + -*public property Nest.NodesInfoResponse.Nodes* + -*public property Nest.NodesStatsResponse.Nodes* + -*public property Nest.PercolatorMatch.Highlight* + -*public property Nest.RecoveryStatusResponse.Indices* + -*public property Nest.ReindexNode.Attributes* + -*public property Nest.ReindexNode.Tasks* + -*public property Nest.ReindexRethrottleResponse.Nodes* + -*public property Nest.RoutingNodesState.Nodes* + -*public property Nest.RoutingTableState.Indices* + -*public property Nest.SearchResponse.Aggregations* + -*public property Nest.SearchResponse.Suggest* + -*public property Nest.SearchShardsResponse.Nodes* + -*public property Nest.SegmentsResponse.Indices* + -*public property Nest.ShardsSegment.Segments* + -*public property Nest.ShardStore.Attributes* + -*public property Nest.SnapshotIndexStats.Shards* + -*public property Nest.SnapshotStatus.Indices* + -*public property Nest.TaskExecutingNode.Tasks* + -*public property Nest.TermVector.Terms* + -*public property Nest.TermVectorsResponse.TermVectors* + -*public property Nest.TypeFieldMappings.Mappings* + -*public property Nest.UpgradeStatusResponse.Upgrades* + -*public property Nest.VerifyRepositoryResponse.Nodes* + -*public property Nest.Watch.Meta* + -*public property Nest.WatchRecord.Metadata* + -*public property Nest.WatchStatus.Actions* - -[float] -[[nest-now-ireadonlycollection]] -=== Now IReadOnlyCollection - -*public property Nest.AnalyzeResponse.Tokens* + -*public property Nest.AuthenticateResponse.Roles* + -*public property Nest.BucketAggregate.Items* + -*public property Nest.BulkResponse.Items* + -*public property Nest.CatResponse.Records* + -*public property Nest.ClusterJvm.Versions* + -*public property Nest.ClusterNodesStats.Plugins* + -*public property Nest.ClusterNodesStats.Versions* + -*public property Nest.ClusterOperatingSystemStats.Names* + -*public property Nest.ClusterPendingTasksResponse.Tasks* + -*public property Nest.ClusterRerouteResponse.Explanations* + -*public property Nest.Collector.Children* + -*public property Nest.ExecutionResult.Actions* + -*public property Nest.Explanation.Details* + -*public property Nest.ExplanationDetail.Details* + -*public property Nest.GetSnapshotResponse.Snapshots* + -*public property Nest.GraphExploreResponse.Connections* + -*public property Nest.GraphExploreResponse.Failures* + -*public property Nest.GraphExploreResponse.Vertices* + -*public property Nest.HighlightHit.Highlights* + -*public property Nest.Hit.MatchedQueries* + -*public property Nest.Hit.Sorts* + -*public property Nest.HitsMetaData.Hits* + -*public property Nest.HotThreadInformation.Hosts* + -*public property Nest.HotThreadInformation.Threads* + -*public property Nest.IAnalyzeResponse.Tokens* + -*public property Nest.IAuthenticateResponse.Roles* + -*public property Nest.IBulkResponse.Items* + -*public property Nest.ICatResponse.Records* + -*public property Nest.IClusterPendingTasksResponse.Tasks* + -*public property Nest.IClusterRerouteResponse.Explanations* + -*public property Nest.IGetSnapshotResponse.Snapshots* + -*public property Nest.IGraphExploreResponse.Connections* + -*public property Nest.IGraphExploreResponse.Failures* + -*public property Nest.IGraphExploreResponse.Vertices* + -*public property Nest.IHit.MatchedQueries* + -*public property Nest.IHit.Sorts* + -*public property Nest.IMultiGetResponse.Documents* + -*public property Nest.IMultiTermVectorsResponse.Documents* + -*public property Nest.INodesHotThreadsResponse.HotThreads* + -*public property Nest.IPercolateResponse.Matches* + -*public property Nest.IReindexOnServerResponse.Failures* + -*public property Nest.ISearchResponse.Documents* + -*public property Nest.ISearchResponse.Fields* + -*public property Nest.ISearchResponse.Hits* + -*public property Nest.ISearchShardsResponse.Shards* + -*public property Nest.ISnapshotStatusResponse.Snapshots* + -*public property Nest.IUpdateByQueryResponse.Failures* + -*public property Nest.IValidateQueryResponse.Explanations* + -*public property Nest.IWatcherStatsResponse.CurrentWatches* + -*public property Nest.IWatcherStatsResponse.QueuedWatches* + -*public property Nest.LicenseAcknowledgement.License* + -*public property Nest.MultiBucketAggregate.Buckets* + -*public property Nest.MultiGetResponse.Documents* + -*public property Nest.MultiTermVectorsResponse.Documents* + -*public property Nest.NodesHotThreadsResponse.HotThreads* + -*public property Nest.PercolateResponse.Matches* + -*public property Nest.Profile.Shards* + -*public property Nest.RecoveryStatus.Shards* + -*public property Nest.ReindexOnServerResponse.Failures* + -*public property Nest.RoutingNodesState.Unassigned* + -*public property Nest.SearchProfile.Collector* + -*public property Nest.SearchProfile.Query* + -*public property Nest.SearchResponse.Documents* + -*public property Nest.SearchResponse.Fields* + -*public property Nest.SearchResponse.Hits* + -*public property Nest.SearchShardsResponse.Shards* + -*public property Nest.ShardProfile.Searches* + -*public property Nest.ShardsMetaData.Failures* + -*public property Nest.ShardStoreWrapper.Stores* + -*public property Nest.Snapshot.Failures* + -*public property Nest.Snapshot.Indices* + -*public property Nest.SnapshotRestore.Indices* + -*public property Nest.SnapshotStatusResponse.Snapshots* + -*public property Nest.TermVectorTerm.Tokens* + -*public method Nest.TopHitsAggregate.Documents* + -*public method Nest.TopHitsAggregate.Hits* + -*public property Nest.UpdateByQueryResponse.Failures* + -*public property Nest.ValidateQueryResponse.Explanations* + -*public property Nest.WatcherStatsResponse.CurrentWatches* + -*public property Nest.WatcherStatsResponse.QueuedWatches* + -*public property Nest.WatchRecord.Messages* - -[float] -[[nest-cancellationtoken]] -=== CancellationToken - -With NEST 2.x async methods, a cancellation token could be passed as -part of the `RequestConfiguration` on the request. This was not very discoverable and so -each async method now accepts an optional `CancellationToken` as an -argument, making the API more async idiomatic. - -*Nest.BulkAllObservable..ctor* + -*Nest.DeleteManyExtensions.DeleteManyAsync* + -*Nest.ElasticClient.AcknowledgeWatchAsync* + -*Nest.ElasticClient.AcknowledgeWatchAsync* + -*Nest.ElasticClient.ActivateWatchAsync* + -*Nest.ElasticClient.ActivateWatchAsync* + -*Nest.ElasticClient.AliasAsync* + -*Nest.ElasticClient.AliasAsync* + -*Nest.ElasticClient.AliasExistsAsync* + -*Nest.ElasticClient.AliasExistsAsync* + -*Nest.ElasticClient.AnalyzeAsync* + -*Nest.ElasticClient.AnalyzeAsync* + -*Nest.ElasticClient.AuthenticateAsync* + -*Nest.ElasticClient.AuthenticateAsync* + -*Nest.ElasticClient.BulkAsync* + -*Nest.ElasticClient.BulkAsync* + -*Nest.ElasticClient.CatAliasesAsync* + -*Nest.ElasticClient.CatAliasesAsync* + -*Nest.ElasticClient.CatAllocationAsync* + -*Nest.ElasticClient.CatAllocationAsync* + -*Nest.ElasticClient.CatCountAsync* + -*Nest.ElasticClient.CatCountAsync* + -*Nest.ElasticClient.CatFielddataAsync* + -*Nest.ElasticClient.CatFielddataAsync* + -*Nest.ElasticClient.CatHealthAsync* + -*Nest.ElasticClient.CatHealthAsync* + -*Nest.ElasticClient.CatHelpAsync* + -*Nest.ElasticClient.CatHelpAsync* + -*Nest.ElasticClient.CatIndicesAsync* + -*Nest.ElasticClient.CatIndicesAsync* + -*Nest.ElasticClient.CatMasterAsync* + -*Nest.ElasticClient.CatMasterAsync* + -*Nest.ElasticClient.CatNodeAttributesAsync* + -*Nest.ElasticClient.CatNodeAttributesAsync* + -*Nest.ElasticClient.CatNodesAsync* + -*Nest.ElasticClient.CatNodesAsync* + -*Nest.ElasticClient.CatPendingTasksAsync* + -*Nest.ElasticClient.CatPendingTasksAsync* + -*Nest.ElasticClient.CatPluginsAsync* + -*Nest.ElasticClient.CatPluginsAsync* + -*Nest.ElasticClient.CatRecoveryAsync* + -*Nest.ElasticClient.CatRecoveryAsync* + -*Nest.ElasticClient.CatRepositoriesAsync* + -*Nest.ElasticClient.CatRepositoriesAsync* + -*Nest.ElasticClient.CatSegmentsAsync* + -*Nest.ElasticClient.CatSegmentsAsync* + -*Nest.ElasticClient.CatShardsAsync* + -*Nest.ElasticClient.CatShardsAsync* + -*Nest.ElasticClient.CatSnapshotsAsync* + -*Nest.ElasticClient.CatSnapshotsAsync* + -*Nest.ElasticClient.CatThreadPoolAsync* + -*Nest.ElasticClient.CatThreadPoolAsync* + -*Nest.ElasticClient.ClearCacheAsync* + -*Nest.ElasticClient.ClearCacheAsync* + -*Nest.ElasticClient.ClearCachedRealmsAsync* + -*Nest.ElasticClient.ClearCachedRealmsAsync* + -*Nest.ElasticClient.ClearCachedRolesAsync* + -*Nest.ElasticClient.ClearCachedRolesAsync* + -*Nest.ElasticClient.ClearScrollAsync* + -*Nest.ElasticClient.ClearScrollAsync* + -*Nest.ElasticClient.CloseIndexAsync* + -*Nest.ElasticClient.CloseIndexAsync* + -*Nest.ElasticClient.ClusterGetSettingsAsync* + -*Nest.ElasticClient.ClusterGetSettingsAsync* + -*Nest.ElasticClient.ClusterHealthAsync* + -*Nest.ElasticClient.ClusterHealthAsync* + -*Nest.ElasticClient.ClusterPendingTasksAsync* + -*Nest.ElasticClient.ClusterPendingTasksAsync* + -*Nest.ElasticClient.ClusterPutSettingsAsync* + -*Nest.ElasticClient.ClusterPutSettingsAsync* + -*Nest.ElasticClient.ClusterRerouteAsync* + -*Nest.ElasticClient.ClusterRerouteAsync* + -*Nest.ElasticClient.ClusterStateAsync* + -*Nest.ElasticClient.ClusterStateAsync* + -*Nest.ElasticClient.ClusterStatsAsync* + -*Nest.ElasticClient.ClusterStatsAsync* + -*Nest.ElasticClient.CountAsync* + -*Nest.ElasticClient.CountAsync* + -*Nest.ElasticClient.CreateIndexAsync* + -*Nest.ElasticClient.CreateIndexAsync* + -*Nest.ElasticClient.CreateRepositoryAsync* + -*Nest.ElasticClient.CreateRepositoryAsync* + -*Nest.ElasticClient.DeactivateWatchAsync* + -*Nest.ElasticClient.DeactivateWatchAsync* + -*Nest.ElasticClient.DeleteAliasAsync* + -*Nest.ElasticClient.DeleteAliasAsync* + -*Nest.ElasticClient.DeleteAsync* + -*Nest.ElasticClient.DeleteAsync* + -*Nest.ElasticClient.DeleteByQueryAsync* + -*Nest.ElasticClient.DeleteByQueryAsync* + -*Nest.ElasticClient.DeleteIndexAsync* + -*Nest.ElasticClient.DeleteIndexAsync* + -*Nest.ElasticClient.DeleteIndexTemplateAsync* + -*Nest.ElasticClient.DeleteIndexTemplateAsync* + -*Nest.ElasticClient.DeleteLicenseAsync* + -*Nest.ElasticClient.DeleteLicenseAsync* + -*Nest.ElasticClient.DeleteRepositoryAsync* + -*Nest.ElasticClient.DeleteRepositoryAsync* + -*Nest.ElasticClient.DeleteRoleAsync* + -*Nest.ElasticClient.DeleteRoleAsync* + -*Nest.ElasticClient.DeleteScriptAsync* + -*Nest.ElasticClient.DeleteScriptAsync* + -*Nest.ElasticClient.DeleteSearchTemplateAsync* + -*Nest.ElasticClient.DeleteSearchTemplateAsync* + -*Nest.ElasticClient.DeleteSnapshotAsync* + -*Nest.ElasticClient.DeleteSnapshotAsync* + -*Nest.ElasticClient.DeleteUserAsync* + -*Nest.ElasticClient.DeleteUserAsync* + -*Nest.ElasticClient.DeleteWatchAsync* + -*Nest.ElasticClient.DeleteWatchAsync* + -*Nest.ElasticClient.DocumentExistsAsync* + -*Nest.ElasticClient.DocumentExistsAsync* + -*Nest.ElasticClient.ExecuteWatchAsync* + -*Nest.ElasticClient.ExecuteWatchAsync* + -*Nest.ElasticClient.ExplainAsync* + -*Nest.ElasticClient.ExplainAsync* + -*Nest.ElasticClient.FieldStatsAsync* + -*Nest.ElasticClient.FieldStatsAsync* + -*Nest.ElasticClient.FlushAsync* + -*Nest.ElasticClient.FlushAsync* + -*Nest.ElasticClient.ForceMergeAsync* + -*Nest.ElasticClient.ForceMergeAsync* + -*Nest.ElasticClient.GetAliasAsync* + -*Nest.ElasticClient.GetAliasAsync* + -*Nest.ElasticClient.GetAsync* + -*Nest.ElasticClient.GetAsync* + -*Nest.ElasticClient.GetFieldMappingAsync* + -*Nest.ElasticClient.GetFieldMappingAsync* + -*Nest.ElasticClient.GetIndexAsync* + -*Nest.ElasticClient.GetIndexAsync* + -*Nest.ElasticClient.GetIndexSettingsAsync* + -*Nest.ElasticClient.GetIndexSettingsAsync* + -*Nest.ElasticClient.GetIndexTemplateAsync* + -*Nest.ElasticClient.GetIndexTemplateAsync* + -*Nest.ElasticClient.GetLicenseAsync* + -*Nest.ElasticClient.GetLicenseAsync* + -*Nest.ElasticClient.GetMappingAsync* + -*Nest.ElasticClient.GetMappingAsync* + -*Nest.ElasticClient.GetRepositoryAsync* + -*Nest.ElasticClient.GetRepositoryAsync* + -*Nest.ElasticClient.GetRoleAsync* + -*Nest.ElasticClient.GetRoleAsync* + -*Nest.ElasticClient.GetScriptAsync* + -*Nest.ElasticClient.GetScriptAsync* + -*Nest.ElasticClient.GetSearchTemplateAsync* + -*Nest.ElasticClient.GetSearchTemplateAsync* + -*Nest.ElasticClient.GetSnapshotAsync* + -*Nest.ElasticClient.GetSnapshotAsync* + -*Nest.ElasticClient.GetUserAsync* + -*Nest.ElasticClient.GetUserAsync* + -*Nest.ElasticClient.GetWatchAsync* + -*Nest.ElasticClient.GetWatchAsync* + -*Nest.ElasticClient.GraphExploreAsync* + -*Nest.ElasticClient.GraphExploreAsync* + -*Nest.ElasticClient.IndexAsync* + -*Nest.ElasticClient.IndexAsync* + -*Nest.ElasticClient.IndexExistsAsync* + -*Nest.ElasticClient.IndexExistsAsync* + -*Nest.ElasticClient.IndexTemplateExistsAsync* + -*Nest.ElasticClient.IndexTemplateExistsAsync* + -*Nest.ElasticClient.IndicesShardStoresAsync* + -*Nest.ElasticClient.IndicesShardStoresAsync* + -*Nest.ElasticClient.IndicesStatsAsync* + -*Nest.ElasticClient.IndicesStatsAsync* + -*Nest.ElasticClient.MapAsync* + -*Nest.ElasticClient.MapAsync* + -*Nest.ElasticClient.MultiGetAsync* + -*Nest.ElasticClient.MultiGetAsync* + -*Nest.ElasticClient.MultiPercolateAsync* + -*Nest.ElasticClient.MultiPercolateAsync* + -*Nest.ElasticClient.MultiSearchAsync* + -*Nest.ElasticClient.MultiSearchAsync* + -*Nest.ElasticClient.MultiTermVectorsAsync* + -*Nest.ElasticClient.MultiTermVectorsAsync* + -*Nest.ElasticClient.NodesHotThreadsAsync* + -*Nest.ElasticClient.NodesHotThreadsAsync* + -*Nest.ElasticClient.NodesInfoAsync* + -*Nest.ElasticClient.NodesInfoAsync* + -*Nest.ElasticClient.NodesStatsAsync* + -*Nest.ElasticClient.NodesStatsAsync* + -*Nest.ElasticClient.OpenIndexAsync* + -*Nest.ElasticClient.OpenIndexAsync* + -*Nest.ElasticClient.PercolateAsync* + -*Nest.ElasticClient.PercolateAsync* + -*Nest.ElasticClient.PercolateCountAsync* + -*Nest.ElasticClient.PercolateCountAsync* + -*Nest.ElasticClient.PingAsync* + -*Nest.ElasticClient.PingAsync* + -*Nest.ElasticClient.PostLicenseAsync* + -*Nest.ElasticClient.PostLicenseAsync* + -*Nest.ElasticClient.PutAliasAsync* + -*Nest.ElasticClient.PutAliasAsync* + -*Nest.ElasticClient.PutIndexTemplateAsync* + -*Nest.ElasticClient.PutIndexTemplateAsync* + -*Nest.ElasticClient.PutRoleAsync* + -*Nest.ElasticClient.PutRoleAsync* + -*Nest.ElasticClient.PutScriptAsync* + -*Nest.ElasticClient.PutScriptAsync* + -*Nest.ElasticClient.PutSearchTemplateAsync* + -*Nest.ElasticClient.PutSearchTemplateAsync* + -*Nest.ElasticClient.PutUserAsync* + -*Nest.ElasticClient.PutUserAsync* + -*Nest.ElasticClient.PutWatchAsync* + -*Nest.ElasticClient.PutWatchAsync* + -*Nest.ElasticClient.RecoveryStatusAsync* + -*Nest.ElasticClient.RecoveryStatusAsync* + -*Nest.ElasticClient.RefreshAsync* + -*Nest.ElasticClient.RefreshAsync* + -*Nest.ElasticClient.RegisterPercolatorAsync* + -*Nest.ElasticClient.RegisterPercolatorAsync* + -*Nest.ElasticClient.Reindex* + -*Nest.ElasticClient.Reindex* + -*Nest.ElasticClient.ReindexOnServerAsync* + -*Nest.ElasticClient.ReindexOnServerAsync* + -*Nest.ElasticClient.RenderSearchTemplateAsync* + -*Nest.ElasticClient.RenderSearchTemplateAsync* + -*Nest.ElasticClient.RestartWatcherAsync* + -*Nest.ElasticClient.RestartWatcherAsync* + -*Nest.ElasticClient.RestoreAsync* + -*Nest.ElasticClient.RestoreAsync* + -*Nest.ElasticClient.RethrottleAsync* + -*Nest.ElasticClient.RethrottleAsync* + -*Nest.ElasticClient.RootNodeInfoAsync* + -*Nest.ElasticClient.RootNodeInfoAsync* + -*Nest.ElasticClient.ScrollAsync* + -*Nest.ElasticClient.ScrollAsync* + -*Nest.ElasticClient.SearchAsync* + -*Nest.ElasticClient.SearchAsync* + -*Nest.ElasticClient.SearchAsync* + -*Nest.ElasticClient.SearchAsync* + -*Nest.ElasticClient.SearchShardsAsync* + -*Nest.ElasticClient.SearchShardsAsync* + -*Nest.ElasticClient.SearchTemplateAsync* + -*Nest.ElasticClient.SearchTemplateAsync* + -*Nest.ElasticClient.SearchTemplateAsync* + -*Nest.ElasticClient.SearchTemplateAsync* + -*Nest.ElasticClient.SegmentsAsync* + -*Nest.ElasticClient.SegmentsAsync* + -*Nest.ElasticClient.SnapshotAsync* + -*Nest.ElasticClient.SnapshotAsync* + -*Nest.ElasticClient.SnapshotStatusAsync* + -*Nest.ElasticClient.SnapshotStatusAsync* + -*Nest.ElasticClient.SourceAsync* + -*Nest.ElasticClient.SourceAsync* + -*Nest.ElasticClient.StartWatcherAsync* + -*Nest.ElasticClient.StartWatcherAsync* + -*Nest.ElasticClient.StopWatcherAsync* + -*Nest.ElasticClient.StopWatcherAsync* + -*Nest.ElasticClient.SuggestAsync* + -*Nest.ElasticClient.SyncedFlushAsync* + -*Nest.ElasticClient.SyncedFlushAsync* + -*Nest.ElasticClient.TermVectorsAsync* + -*Nest.ElasticClient.TermVectorsAsync* + -*Nest.ElasticClient.TypeExistsAsync* + -*Nest.ElasticClient.TypeExistsAsync* + -*Nest.ElasticClient.UnregisterPercolatorAsync* + -*Nest.ElasticClient.UnregisterPercolatorAsync* + -*Nest.ElasticClient.UpdateAsync* + -*Nest.ElasticClient.UpdateAsync* + -*Nest.ElasticClient.UpdateAsync* + -*Nest.ElasticClient.UpdateAsync* + -*Nest.ElasticClient.UpdateByQueryAsync* + -*Nest.ElasticClient.UpdateByQueryAsync* + -*Nest.ElasticClient.UpdateIndexSettingsAsync* + -*Nest.ElasticClient.UpdateIndexSettingsAsync* + -*Nest.ElasticClient.UpgradeAsync* + -*Nest.ElasticClient.UpgradeAsync* + -*Nest.ElasticClient.UpgradeStatusAsync* + -*Nest.ElasticClient.UpgradeStatusAsync* + -*Nest.ElasticClient.ValidateQueryAsync* + -*Nest.ElasticClient.ValidateQueryAsync* + -*Nest.ElasticClient.VerifyRepositoryAsync* + -*Nest.ElasticClient.VerifyRepositoryAsync* + -*Nest.ElasticClient.WatcherStatsAsync* + -*Nest.ElasticClient.WatcherStatsAsync* + -*Nest.GetManyExtensions.GetManyAsync* + -*Nest.GetManyExtensions.GetManyAsync* + -*Nest.IElasticClient.AcknowledgeWatchAsync* + -*Nest.IElasticClient.AcknowledgeWatchAsync* + -*Nest.IElasticClient.ActivateWatchAsync* + -*Nest.IElasticClient.ActivateWatchAsync* + -*Nest.IElasticClient.AliasAsync* + -*Nest.IElasticClient.AliasAsync* + -*Nest.IElasticClient.AliasExistsAsync* + -*Nest.IElasticClient.AliasExistsAsync* + -*Nest.IElasticClient.AnalyzeAsync* + -*Nest.IElasticClient.AnalyzeAsync* + -*Nest.IElasticClient.AuthenticateAsync* + -*Nest.IElasticClient.AuthenticateAsync* + -*Nest.IElasticClient.BulkAsync* + -*Nest.IElasticClient.BulkAsync* + -*Nest.IElasticClient.CatAliasesAsync* + -*Nest.IElasticClient.CatAliasesAsync* + -*Nest.IElasticClient.CatAllocationAsync* + -*Nest.IElasticClient.CatAllocationAsync* + -*Nest.IElasticClient.CatCountAsync* + -*Nest.IElasticClient.CatCountAsync* + -*Nest.IElasticClient.CatFielddataAsync* + -*Nest.IElasticClient.CatFielddataAsync* + -*Nest.IElasticClient.CatHealthAsync* + -*Nest.IElasticClient.CatHealthAsync* + -*Nest.IElasticClient.CatHelpAsync* + -*Nest.IElasticClient.CatHelpAsync* + -*Nest.IElasticClient.CatIndicesAsync* + -*Nest.IElasticClient.CatIndicesAsync* + -*Nest.IElasticClient.CatMasterAsync* + -*Nest.IElasticClient.CatMasterAsync* + -*Nest.IElasticClient.CatNodeAttributesAsync* + -*Nest.IElasticClient.CatNodeAttributesAsync* + -*Nest.IElasticClient.CatNodesAsync* + -*Nest.IElasticClient.CatNodesAsync* + -*Nest.IElasticClient.CatPendingTasksAsync* + -*Nest.IElasticClient.CatPendingTasksAsync* + -*Nest.IElasticClient.CatPluginsAsync* + -*Nest.IElasticClient.CatPluginsAsync* + -*Nest.IElasticClient.CatRecoveryAsync* + -*Nest.IElasticClient.CatRecoveryAsync* + -*Nest.IElasticClient.CatRepositoriesAsync* + -*Nest.IElasticClient.CatRepositoriesAsync* + -*Nest.IElasticClient.CatSegmentsAsync* + -*Nest.IElasticClient.CatSegmentsAsync* + -*Nest.IElasticClient.CatShardsAsync* + -*Nest.IElasticClient.CatShardsAsync* + -*Nest.IElasticClient.CatSnapshotsAsync* + -*Nest.IElasticClient.CatSnapshotsAsync* + -*Nest.IElasticClient.CatThreadPoolAsync* + -*Nest.IElasticClient.CatThreadPoolAsync* + -*Nest.IElasticClient.ClearCacheAsync* + -*Nest.IElasticClient.ClearCacheAsync* + -*Nest.IElasticClient.ClearCachedRealmsAsync* + -*Nest.IElasticClient.ClearCachedRealmsAsync* + -*Nest.IElasticClient.ClearCachedRolesAsync* + -*Nest.IElasticClient.ClearCachedRolesAsync* + -*Nest.IElasticClient.ClearScrollAsync* + -*Nest.IElasticClient.ClearScrollAsync* + -*Nest.IElasticClient.CloseIndexAsync* + -*Nest.IElasticClient.CloseIndexAsync* + -*Nest.IElasticClient.ClusterGetSettingsAsync* + -*Nest.IElasticClient.ClusterGetSettingsAsync* + -*Nest.IElasticClient.ClusterHealthAsync* + -*Nest.IElasticClient.ClusterHealthAsync* + -*Nest.IElasticClient.ClusterPendingTasksAsync* + -*Nest.IElasticClient.ClusterPendingTasksAsync* + -*Nest.IElasticClient.ClusterPutSettingsAsync* + -*Nest.IElasticClient.ClusterPutSettingsAsync* + -*Nest.IElasticClient.ClusterRerouteAsync* + -*Nest.IElasticClient.ClusterRerouteAsync* + -*Nest.IElasticClient.ClusterStateAsync* + -*Nest.IElasticClient.ClusterStateAsync* + -*Nest.IElasticClient.ClusterStatsAsync* + -*Nest.IElasticClient.ClusterStatsAsync* + -*Nest.IElasticClient.CountAsync* + -*Nest.IElasticClient.CountAsync* + -*Nest.IElasticClient.CreateIndexAsync* + -*Nest.IElasticClient.CreateIndexAsync* + -*Nest.IElasticClient.CreateRepositoryAsync* + -*Nest.IElasticClient.CreateRepositoryAsync* + -*Nest.IElasticClient.DeactivateWatchAsync* + -*Nest.IElasticClient.DeactivateWatchAsync* + -*Nest.IElasticClient.DeleteAliasAsync* + -*Nest.IElasticClient.DeleteAliasAsync* + -*Nest.IElasticClient.DeleteAsync* + -*Nest.IElasticClient.DeleteAsync* + -*Nest.IElasticClient.DeleteByQueryAsync* + -*Nest.IElasticClient.DeleteByQueryAsync* + -*Nest.IElasticClient.DeleteIndexAsync* + -*Nest.IElasticClient.DeleteIndexAsync* + -*Nest.IElasticClient.DeleteIndexTemplateAsync* + -*Nest.IElasticClient.DeleteIndexTemplateAsync* + -*Nest.IElasticClient.DeleteLicenseAsync* + -*Nest.IElasticClient.DeleteLicenseAsync* + -*Nest.IElasticClient.DeleteRepositoryAsync* + -*Nest.IElasticClient.DeleteRepositoryAsync* + -*Nest.IElasticClient.DeleteRoleAsync* + -*Nest.IElasticClient.DeleteRoleAsync* + -*Nest.IElasticClient.DeleteScriptAsync* + -*Nest.IElasticClient.DeleteScriptAsync* + -*Nest.IElasticClient.DeleteSearchTemplateAsync* + -*Nest.IElasticClient.DeleteSearchTemplateAsync* + -*Nest.IElasticClient.DeleteSnapshotAsync* + -*Nest.IElasticClient.DeleteSnapshotAsync* + -*Nest.IElasticClient.DeleteUserAsync* + -*Nest.IElasticClient.DeleteUserAsync* + -*Nest.IElasticClient.DeleteWatchAsync* + -*Nest.IElasticClient.DeleteWatchAsync* + -*Nest.IElasticClient.DocumentExistsAsync* + -*Nest.IElasticClient.DocumentExistsAsync* + -*Nest.IElasticClient.ExecuteWatchAsync* + -*Nest.IElasticClient.ExecuteWatchAsync* + -*Nest.IElasticClient.ExplainAsync* + -*Nest.IElasticClient.ExplainAsync* + -*Nest.IElasticClient.FieldStatsAsync* + -*Nest.IElasticClient.FieldStatsAsync* + -*Nest.IElasticClient.FlushAsync* + -*Nest.IElasticClient.FlushAsync* + -*Nest.IElasticClient.ForceMergeAsync* + -*Nest.IElasticClient.ForceMergeAsync* + -*Nest.IElasticClient.GetAliasAsync* + -*Nest.IElasticClient.GetAliasAsync* + -*Nest.IElasticClient.GetAsync* + -*Nest.IElasticClient.GetAsync* + -*Nest.IElasticClient.GetFieldMappingAsync* + -*Nest.IElasticClient.GetFieldMappingAsync* + -*Nest.IElasticClient.GetIndexAsync* + -*Nest.IElasticClient.GetIndexAsync* + -*Nest.IElasticClient.GetIndexSettingsAsync* + -*Nest.IElasticClient.GetIndexSettingsAsync* + -*Nest.IElasticClient.GetIndexTemplateAsync* + -*Nest.IElasticClient.GetIndexTemplateAsync* + -*Nest.IElasticClient.GetLicenseAsync* + -*Nest.IElasticClient.GetLicenseAsync* + -*Nest.IElasticClient.GetMappingAsync* + -*Nest.IElasticClient.GetMappingAsync* + -*Nest.IElasticClient.GetRepositoryAsync* + -*Nest.IElasticClient.GetRepositoryAsync* + -*Nest.IElasticClient.GetRoleAsync* + -*Nest.IElasticClient.GetRoleAsync* + -*Nest.IElasticClient.GetScriptAsync* + -*Nest.IElasticClient.GetScriptAsync* + -*Nest.IElasticClient.GetSearchTemplateAsync* + -*Nest.IElasticClient.GetSearchTemplateAsync* + -*Nest.IElasticClient.GetSnapshotAsync* + -*Nest.IElasticClient.GetSnapshotAsync* + -*Nest.IElasticClient.GetUserAsync* + -*Nest.IElasticClient.GetUserAsync* + -*Nest.IElasticClient.GetWatchAsync* + -*Nest.IElasticClient.GetWatchAsync* + -*Nest.IElasticClient.GraphExploreAsync* + -*Nest.IElasticClient.GraphExploreAsync* + -*Nest.IElasticClient.IndexAsync* + -*Nest.IElasticClient.IndexAsync* + -*Nest.IElasticClient.IndexExistsAsync* + -*Nest.IElasticClient.IndexExistsAsync* + -*Nest.IElasticClient.IndexTemplateExistsAsync* + -*Nest.IElasticClient.IndexTemplateExistsAsync* + -*Nest.IElasticClient.IndicesShardStoresAsync* + -*Nest.IElasticClient.IndicesShardStoresAsync* + -*Nest.IElasticClient.IndicesStatsAsync* + -*Nest.IElasticClient.IndicesStatsAsync* + -*Nest.IElasticClient.MapAsync* + -*Nest.IElasticClient.MapAsync* + -*Nest.IElasticClient.MultiGetAsync* + -*Nest.IElasticClient.MultiGetAsync* + -*Nest.IElasticClient.MultiPercolateAsync* + -*Nest.IElasticClient.MultiPercolateAsync* + -*Nest.IElasticClient.MultiSearchAsync* + -*Nest.IElasticClient.MultiSearchAsync* + -*Nest.IElasticClient.MultiTermVectorsAsync* + -*Nest.IElasticClient.MultiTermVectorsAsync* + -*Nest.IElasticClient.NodesHotThreadsAsync* + -*Nest.IElasticClient.NodesHotThreadsAsync* + -*Nest.IElasticClient.NodesInfoAsync* + -*Nest.IElasticClient.NodesInfoAsync* + -*Nest.IElasticClient.NodesStatsAsync* + -*Nest.IElasticClient.NodesStatsAsync* + -*Nest.IElasticClient.OpenIndexAsync* + -*Nest.IElasticClient.OpenIndexAsync* + -*Nest.IElasticClient.PercolateAsync* + -*Nest.IElasticClient.PercolateAsync* + -*Nest.IElasticClient.PercolateCountAsync* + -*Nest.IElasticClient.PercolateCountAsync* + -*Nest.IElasticClient.PingAsync* + -*Nest.IElasticClient.PingAsync* + -*Nest.IElasticClient.PostLicenseAsync* + -*Nest.IElasticClient.PostLicenseAsync* + -*Nest.IElasticClient.PutAliasAsync* + -*Nest.IElasticClient.PutAliasAsync* + -*Nest.IElasticClient.PutIndexTemplateAsync* + -*Nest.IElasticClient.PutIndexTemplateAsync* + -*Nest.IElasticClient.PutRoleAsync* + -*Nest.IElasticClient.PutRoleAsync* + -*Nest.IElasticClient.PutScriptAsync* + -*Nest.IElasticClient.PutScriptAsync* + -*Nest.IElasticClient.PutSearchTemplateAsync* + -*Nest.IElasticClient.PutSearchTemplateAsync* + -*Nest.IElasticClient.PutUserAsync* + -*Nest.IElasticClient.PutUserAsync* + -*Nest.IElasticClient.PutWatchAsync* + -*Nest.IElasticClient.PutWatchAsync* + -*Nest.IElasticClient.RecoveryStatusAsync* + -*Nest.IElasticClient.RecoveryStatusAsync* + -*Nest.IElasticClient.RefreshAsync* + -*Nest.IElasticClient.RefreshAsync* + -*Nest.IElasticClient.RegisterPercolatorAsync* + -*Nest.IElasticClient.RegisterPercolatorAsync* + -*Nest.IElasticClient.Reindex* + -*Nest.IElasticClient.Reindex* + -*Nest.IElasticClient.ReindexOnServerAsync* + -*Nest.IElasticClient.ReindexOnServerAsync* + -*Nest.IElasticClient.RenderSearchTemplateAsync* + -*Nest.IElasticClient.RenderSearchTemplateAsync* + -*Nest.IElasticClient.RestartWatcherAsync* + -*Nest.IElasticClient.RestartWatcherAsync* + -*Nest.IElasticClient.RestoreAsync* + -*Nest.IElasticClient.RestoreAsync* + -*Nest.IElasticClient.RethrottleAsync* + -*Nest.IElasticClient.RethrottleAsync* + -*Nest.IElasticClient.RootNodeInfoAsync* + -*Nest.IElasticClient.RootNodeInfoAsync* + -*Nest.IElasticClient.ScrollAsync* + -*Nest.IElasticClient.ScrollAsync* + -*Nest.IElasticClient.SearchAsync* + -*Nest.IElasticClient.SearchAsync* + -*Nest.IElasticClient.SearchAsync* + -*Nest.IElasticClient.SearchAsync* + -*Nest.IElasticClient.SearchShardsAsync* + -*Nest.IElasticClient.SearchShardsAsync* + -*Nest.IElasticClient.SearchTemplateAsync* + -*Nest.IElasticClient.SearchTemplateAsync* + -*Nest.IElasticClient.SearchTemplateAsync* + -*Nest.IElasticClient.SearchTemplateAsync* + -*Nest.IElasticClient.SegmentsAsync* + -*Nest.IElasticClient.SegmentsAsync* + -*Nest.IElasticClient.SnapshotAsync* + -*Nest.IElasticClient.SnapshotAsync* + -*Nest.IElasticClient.SnapshotStatusAsync* + -*Nest.IElasticClient.SnapshotStatusAsync* + -*Nest.IElasticClient.SourceAsync* + -*Nest.IElasticClient.SourceAsync* + -*Nest.IElasticClient.StartWatcherAsync* + -*Nest.IElasticClient.StartWatcherAsync* + -*Nest.IElasticClient.StopWatcherAsync* + -*Nest.IElasticClient.StopWatcherAsync* + -*Nest.IElasticClient.SuggestAsync* + -*Nest.IElasticClient.SyncedFlushAsync* + -*Nest.IElasticClient.SyncedFlushAsync* + -*Nest.IElasticClient.TermVectorsAsync* + -*Nest.IElasticClient.TermVectorsAsync* + -*Nest.IElasticClient.TypeExistsAsync* + -*Nest.IElasticClient.TypeExistsAsync* + -*Nest.IElasticClient.UnregisterPercolatorAsync* + -*Nest.IElasticClient.UnregisterPercolatorAsync* + -*Nest.IElasticClient.UpdateAsync* + -*Nest.IElasticClient.UpdateAsync* + -*Nest.IElasticClient.UpdateAsync* + -*Nest.IElasticClient.UpdateAsync* + -*Nest.IElasticClient.UpdateByQueryAsync* + -*Nest.IElasticClient.UpdateByQueryAsync* + -*Nest.IElasticClient.UpdateIndexSettingsAsync* + -*Nest.IElasticClient.UpdateIndexSettingsAsync* + -*Nest.IElasticClient.UpgradeAsync* + -*Nest.IElasticClient.UpgradeAsync* + -*Nest.IElasticClient.UpgradeStatusAsync* + -*Nest.IElasticClient.UpgradeStatusAsync* + -*Nest.IElasticClient.ValidateQueryAsync* + -*Nest.IElasticClient.ValidateQueryAsync* + -*Nest.IElasticClient.VerifyRepositoryAsync* + -*Nest.IElasticClient.VerifyRepositoryAsync* + -*Nest.IElasticClient.WatcherStatsAsync* + -*Nest.IElasticClient.WatcherStatsAsync* + -*Nest.IHighLevelToLowLevelDispatcher.DispatchAsync* + -*Nest.IHighLevelToLowLevelDispatcher.DispatchAsync* + -*Nest.IndexManyExtensions.IndexManyAsync* + -*Nest.ReindexObservable..ctor* + -*Nest.SourceManyExtensions.SourceManyAsync* + -*Nest.SourceManyExtensions.SourceManyAsync* - -[float] -[[removed-in-5.0-after-being-obsoleted-in-2.0]] -=== Removed in 5.0 after being obsoleted in 2.0 - -These are the things we removed from 5.0 that we gave an advanced -warning for in the latest 2.x release of NEST. - -We will make sure to another release of NEST 2.x that flags as many -types/methods/properties that are going to be removed that we have not -convered yet - -*public property Nest.AnalyzeRequest.CharFilters* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use CharFilter instead")] -public String[] CharFilters { get; set; } ----- - -*public property Nest.AnalyzeRequest.Filters* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use Filter instead")] -public String[] Filters { get; set; } ----- - -*public method Nest.AttachmentPropertyDescriptor.ContentLengthField* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use ContentLengthField(Func, INumberProperty> selector)")] -public AttachmentPropertyDescriptor ContentLengthField(Func, IStringProperty> selector) ----- - -*public class Nest.CatNodeattrsDescriptor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use CatNodeAttributesDescriptor instead.")] -public class CatNodeattrsDescriptor : RequestDescriptorBase, IRequest, IRequest, IDescriptor, ICatNodeattrsRequest ----- - -*public class Nest.CatNodeattrsRequest* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use CatNodeAttributesRequest instead.")] -public class CatNodeattrsRequest : PlainRequestBase, IRequest, IRequest, ICatNodeattrsRequest ----- - -*public property Nest.DateAttribute.NumericResolution* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public NumericResolutionUnit NumericResolution { get; set; } ----- - -*public property Nest.DateAttribute.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } ----- - -*public property Nest.DateHistogramAggregation.Factor* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -public int? Factor { get; set; } ----- - -*public method Nest.DateHistogramAggregationDescriptor.Interval* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -public DateHistogramAggregationDescriptor Interval(int factor) ----- - -*public property Nest.DateProperty.NumericResolution* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public Nullable NumericResolution { get; set; } ----- - -*public method Nest.DatePropertyDescriptor.NumericResolution* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public DatePropertyDescriptor NumericResolution(NumericResolutionUnit unit) ----- - -*public method Nest.DatePropertyDescriptor.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public DatePropertyDescriptor PrecisionStep(int precisionStep) ----- - -*public property -Nest.ElasticsearchPropertyAttributeBase.CustomSimilarity* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } ----- - -*public property Nest.ElasticsearchPropertyAttributeBase.IndexName* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public string IndexName { get; set; } ----- - -*public property Nest.EmailAction.AttachData* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public Union AttachData { get; set; } ----- - -*public method Nest.EmailActionDescriptor.AttachData* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public EmailActionDescriptor AttachData(DataAttachmentFormat format) ----- - -*public method Nest.EmailActionDescriptor.AttachData* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public EmailActionDescriptor AttachData(bool attach = True) ----- - -*public property Nest.GeoPointAttribute.GeoHash* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool GeoHash { get; set; } ----- - -*public property Nest.GeoPointAttribute.GeoHashPrecision* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int GeoHashPrecision { get; set; } ----- - -*public property Nest.GeoPointAttribute.GeoHashPrefix* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool GeoHashPrefix { get; set; } ----- - -*public property Nest.GeoPointAttribute.LatLon* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool LatLon { get; set; } ----- - -*public property Nest.GeoPointAttribute.Normalize* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool Normalize { get; set; } ----- - -*public property Nest.GeoPointAttribute.NormalizeLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool NormalizeLatitude { get; set; } ----- - -*public property Nest.GeoPointAttribute.NormalizeLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool NormalizeLongitude { get; set; } ----- - -*public property Nest.GeoPointAttribute.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } ----- - -*public property Nest.GeoPointAttribute.Validate* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool Validate { get; set; } ----- - -*public property Nest.GeoPointAttribute.ValidateLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool ValidateLatitude { get; set; } ----- - -*public property Nest.GeoPointAttribute.ValidateLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool ValidateLongitude { get; set; } ----- - -*public property Nest.GeoPointProperty.Fielddata* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public IGeoPointFielddata Fielddata { get; set; } ----- - -*public property Nest.GeoPointProperty.GeoHash* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHash { get; set; } ----- - -*public property Nest.GeoPointProperty.GeoHashPrecision* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int? GeoHashPrecision { get; set; } ----- - -*public property Nest.GeoPointProperty.GeoHashPrefix* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHashPrefix { get; set; } ----- - -*public property Nest.GeoPointProperty.LatLon* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool? LatLon { get; set; } ----- - -*public property Nest.GeoPointProperty.Normalize* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? Normalize { get; set; } ----- - -*public property Nest.GeoPointProperty.NormalizeLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLatitude { get; set; } ----- - -*public property Nest.GeoPointProperty.NormalizeLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLongitude { get; set; } ----- - -*public property Nest.GeoPointProperty.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public property Nest.GeoPointProperty.Validate* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? Validate { get; set; } ----- - -*public property Nest.GeoPointProperty.ValidateLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLatitude { get; set; } ----- - -*public property Nest.GeoPointProperty.ValidateLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLongitude { get; set; } ----- - -*public method Nest.GeoPointPropertyDescriptor.Fielddata* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor Fielddata(Func selector) ----- - -*public method Nest.GeoPointPropertyDescriptor.GeoHash* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHash(bool geoHash = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.GeoHashPrecision* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHashPrecision(int geoHashPrecision) ----- - -*public method Nest.GeoPointPropertyDescriptor.GeoHashPrefix* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHashPrefix(bool geoHashPrefix = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.LatLon* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor LatLon(bool latLon = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.Normalize* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor Normalize(bool normalize = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.NormalizeLatitude* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor NormalizeLatitude(bool normalizeLatitude = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.NormalizeLongitude* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor NormalizeLongitude(bool normalizeLongitude = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.PrecisionStep* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor PrecisionStep(int precisionStep) ----- - -*public method Nest.GeoPointPropertyDescriptor.Validate* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor Validate(bool validate = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.ValidateLatitude* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor ValidateLatitude(bool validateLongitude = True) ----- - -*public method Nest.GeoPointPropertyDescriptor.ValidateLongitude* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor ValidateLongitude(bool validateLatitude = True) ----- - -*public method Nest.GetAliasDescriptor.Alias* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Use Name instead")] -public GetAliasDescriptor Alias(string alias) ----- - -*public property Nest.GetAliasRequest.Alias* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Use the GetAliasRequest(Names name) constructor instead")] -public string Alias { get; set; } ----- - -*public property Nest.HighlightField.BoundaryMaxSize* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use BoundaryMaxScan")] -public int? BoundaryMaxSize { get; set; } ----- - -*public method Nest.HighlightFieldDescriptor.BoundaryMaxSize* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use BoundaryMaxScan(int? boundaryMaxScan).")] -public HighlightFieldDescriptor BoundaryMaxSize(int? boundaryMaxSize) ----- - -*public property Nest.IAnalyzeRequest.CharFilters* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use CharFilter instead")] -[JsonIgnoreAttribute] -public String[] CharFilters { get; set; } ----- - -*public property Nest.IAnalyzeRequest.Filters* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use Filter instead")] -[JsonIgnoreAttribute] -public String[] Filters { get; set; } ----- - -*public interface Nest.ICatNodeattrsRequest* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use ICatNodeAttributesRequest instead.")] -[JsonObjectAttribute] -public interface ICatNodeattrsRequest : IRequest, IRequest ----- - -*public property Nest.IDateHistogramAggregation.Factor* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -[JsonPropertyAttribute("factor")] -public int? Factor { get; set; } ----- - -*public property Nest.IDateProperty.NumericResolution* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("numeric_resolution")] -[ObsoleteAttribute("Removed in 5.0.0")] -public Nullable NumericResolution { get; set; } ----- - -*public property Nest.IDateProperty.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public property Nest.IEmailAction.AttachData* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("attach_data")] -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public Union AttachData { get; set; } ----- - -*public property Nest.IGeoPointProperty.Fielddata* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("fielddata")] -[ObsoleteAttribute("Removed in 5.0.0")] -public IGeoPointFielddata Fielddata { get; set; } ----- - -*public property Nest.IGeoPointProperty.GeoHash* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("geohash")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHash { get; set; } ----- - -*public property Nest.IGeoPointProperty.GeoHashPrecision* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("geohash_precision")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int? GeoHashPrecision { get; set; } ----- - -*public property Nest.IGeoPointProperty.GeoHashPrefix* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("geohash_prefix")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHashPrefix { get; set; } ----- - -*public property Nest.IGeoPointProperty.LatLon* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("lat_lon")] -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool? LatLon { get; set; } ----- - -*public property Nest.IGeoPointProperty.Normalize* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("normalize")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? Normalize { get; set; } ----- - -*public property Nest.IGeoPointProperty.NormalizeLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("normalize_lat")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLatitude { get; set; } ----- - -*public property Nest.IGeoPointProperty.NormalizeLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("normalize_lon")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLongitude { get; set; } ----- - -*public property Nest.IGeoPointProperty.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public property Nest.IGeoPointProperty.Validate* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("validate")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? Validate { get; set; } ----- - -*public property Nest.IGeoPointProperty.ValidateLatitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("validate_lat")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLatitude { get; set; } ----- - -*public property Nest.IGeoPointProperty.ValidateLongitude* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("validate_lon")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLongitude { get; set; } ----- - -*public property Nest.IGetAliasRequest.Alias* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated. Use Name instead")] -[JsonIgnoreAttribute] -public string Alias { get; set; } ----- - -*public property Nest.IHighlightField.BoundaryMaxSize* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use BoundaryMaxScan")] -public int? BoundaryMaxSize { get; set; } ----- - -*public property Nest.IHighlightField.CustomType* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("type")] -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to make sure you can specify any custom highlighter type in 2.0.0. Removed in 5.0.0.")] -public string CustomType { get; set; } ----- - -*public property Nest.IIpProperty.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public interface Nest.IMappingTransform* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.MappingTransform])] -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public interface IMappingTransform ----- - -*public property Nest.INumberProperty.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public property Nest.IObjectProperty.Path* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("path")] -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } ----- - -*public property Nest.IpAttribute.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } ----- - -*public property Nest.IpProperty.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public method Nest.IpPropertyDescriptor.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public IpPropertyDescriptor PrecisionStep(int precisionStep) ----- - -*public property Nest.IProperty.CustomSimilarity* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("similarity")] -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } ----- - -*public property Nest.IProperty.IndexName* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("index_name")] -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public string IndexName { get; set; } ----- - -*public property Nest.IStringProperty.PositionOffsetGap* _Removed -(Breaking)_ - -[source,csharp] ----- -[JsonIgnoreAttribute] -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int? PositionOffsetGap { get; set; } ----- - -*public property Nest.ITermsQuery.DisableCoord* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public bool? DisableCoord { get; set; } ----- - -*public property Nest.ITermsQuery.MinimumShouldMatch* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public MinimumShouldMatch MinimumShouldMatch { get; set; } ----- - -*public property Nest.ITermVectorsResponse.Took* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("returned value may be larger than int. In this case, value will be int.MaxValue and TookAsLong field can be checked. Took is long in 5.0.0")] -public int Took { get; } ----- - -*public interface Nest.ITimestampField* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.TimestampField])] -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public interface ITimestampField : IFieldMapping ----- - -*public interface Nest.ITtlField* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.TtlField])] -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public interface ITtlField : IFieldMapping ----- - -*public property Nest.ITypeMapping.TimestampField* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("_timestamp")] -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } ----- - -*public property Nest.ITypeMapping.Transform* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("transform")] -[JsonConverterAttribute(Nest.MappingTransformCollectionJsonConverter)] -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } ----- - -*public property Nest.ITypeMapping.TtlField* _Removed (Breaking)_ - -[source,csharp] ----- -[JsonPropertyAttribute("_ttl")] -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } ----- - -*public class Nest.MappingTransform* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransform : IMappingTransform ----- - -*public class Nest.MappingTransformDescriptor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransformDescriptor : DescriptorBase, IDescriptor, IMappingTransform ----- - -*public class Nest.MappingTransformsDescriptor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransformsDescriptor : DescriptorPromiseBase>, IDescriptor, IPromise> ----- - -*public property Nest.NumberAttribute.PrecisionStep* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } ----- - -*public property Nest.NumberProperty.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } ----- - -*public method Nest.NumberPropertyDescriptorBase.PrecisionStep* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0")] -public TDescriptor PrecisionStep(int precisionStep) ----- - -*public property Nest.ObjectAttribute.Path* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } ----- - -*public property Nest.ObjectProperty.Path* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } ----- - -*public method Nest.ObjectPropertyDescriptorBase.Path* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public TDescriptor Path(string path) ----- - -*public property Nest.PropertyBase.CustomSimilarity* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } ----- - -*public method Nest.PropertyDescriptorBase.IndexName* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public TDescriptor IndexName(string indexName) ----- - -*public method Nest.PutMappingDescriptor.TimestampField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public PutMappingDescriptor TimestampField(Func, ITimestampField> timestampFieldSelector) ----- - -*public method Nest.PutMappingDescriptor.Transform* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public PutMappingDescriptor Transform(Func>> selector) ----- - -*public method Nest.PutMappingDescriptor.Transform* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public PutMappingDescriptor Transform(IEnumerable transforms) ----- - -*public method Nest.PutMappingDescriptor.TtlField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public PutMappingDescriptor TtlField(Func ttlFieldSelector) ----- - -*public property Nest.PutMappingRequest.TimestampField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } ----- - -*public property Nest.PutMappingRequest.Transform* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } ----- - -*public property Nest.PutMappingRequest.TtlField* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } ----- - -*public property Nest.PutMappingRequest.TimestampField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } ----- - -*public property Nest.PutMappingRequest.Transform* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0. Removed in 5.0.0")] -public IList Transform { get; set; } ----- - -*public property Nest.PutMappingRequest.TtlField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } ----- - -*public method Nest.Query.Strict* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Strict() at the container level is a noop and must be set on each individual query.")] -public static QueryContainerDescriptor Strict(bool strict = True) ----- - -*public method Nest.QueryContainerDescriptor.Strict* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Strict() at the container level does is a noop and must be set on each individual query.")] -public QueryContainerDescriptor Strict(bool strict = True) ----- - -*public method Nest.QueryContainerDescriptor.Verbatim* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Verbatim() at the container level is a noop and must be set on each individual query.")] -public QueryContainerDescriptor Verbatim(bool verbatim = True) ----- - -*public method Nest.QueryStringQueryDescriptor.Fuziness* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use Fuzziness(Fuzziness fuzziness)")] -public QueryStringQueryDescriptor Fuziness(Fuzziness fuzziness) ----- - -*public property Nest.SearchResponse.Highlights* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("This highlights by document id dictionary is the wrong abstraction in cases where a search can yield the same ids, for example, different types in the same index or a search across multiple indices. Removed in 5.0.0.")] -public HighlightDocumentDictionary Highlights { get; } ----- - -*public property Nest.StringAttribute.PositionOffsetGap* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int PositionOffsetGap { get; set; } ----- - -*public property Nest.StringProperty.PositionOffsetGap* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int? PositionOffsetGap { get; set; } ----- - -*public method Nest.StringPropertyDescriptor.PositionOffsetGap* -_Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap() instead.")] -public StringPropertyDescriptor PositionOffsetGap(int positionOffsetGap) ----- - -*public method Nest.SuggestContextDescriptorBase.Field* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use Path() instead.")] -public TDescriptor Field(Expression> objectPath) ----- - -*public method Nest.SuggestContextDescriptorBase.Field* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use Path() instead.")] -public TDescriptor Field(Field field) ----- - -*public property Nest.TermsQuery.DisableCoord* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public bool? DisableCoord { get; set; } ----- - -*public property Nest.TermsQuery.MinimumShouldMatch* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public MinimumShouldMatch MinimumShouldMatch { get; set; } ----- - -*public method Nest.TermsQueryDescriptor.DisableCoord* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public TermsQueryDescriptor DisableCoord(bool? disable = True) ----- - -*public method Nest.TermsQueryDescriptor.MinimumShouldMatch* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public TermsQueryDescriptor MinimumShouldMatch(MinimumShouldMatch minMatch) ----- - -*public class Nest.TimestampField* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public class TimestampField : ITimestampField, IFieldMapping ----- - -*public class Nest.TimestampFieldDescriptor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public class TimestampFieldDescriptor : DescriptorBase, ITimestampField>, IDescriptor, ITimestampField, IFieldMapping ----- - -*public class Nest.TtlField* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public class TtlField : ITtlField, IFieldMapping ----- - -*public class Nest.TtlFieldDescriptor* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public class TtlFieldDescriptor : DescriptorBase, IDescriptor, ITtlField, IFieldMapping ----- - -*public property Nest.TypeMapping.TimestampField* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } ----- - -*public property Nest.TypeMapping.Transform* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } ----- - -*public property Nest.TypeMapping.TtlField* _Removed (Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } ----- - -*public method Nest.TypeMappingDescriptor.TimestampField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public TypeMappingDescriptor TimestampField(Func, ITimestampField> timestampFieldSelector) ----- - -*public method Nest.TypeMappingDescriptor.Transform* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public TypeMappingDescriptor Transform(Func>> selector) ----- - -*public method Nest.TypeMappingDescriptor.Transform* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public TypeMappingDescriptor Transform(IEnumerable transforms) ----- - -*public method Nest.TypeMappingDescriptor.TtlField* _Removed -(Breaking)_ - -[source,csharp] ----- -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public TypeMappingDescriptor TtlField(Func ttlFieldSelector) ----- - -[float] -[[removed-in-nest-5.x]] -=== Removed in 5.x - -This is the complete list of removed types, properties, methods. We will -retro actively mark them as obsolete in an upcomming `2.x` release and -update this documentation. - -*public class Nest.AllocateClusterRerouteCommand* _Removed (Breaking)_ + -*public class Nest.AllocateClusterRerouteCommandDescriptor* _Removed -(Breaking)_ + -*public class Nest.AttachData* _Removed (Breaking)_ + -*public property Nest.AttachmentProperty.FileField* _Removed -(Breaking)_ + -*public method Nest.AttachmentPropertyDescriptor.LanguageField* -_Removed (Breaking)_ + -*public property Nest.BulkAllRequest.Consistency* _Removed -(Breaking)_ + -*public method Nest.BulkDescriptor.Consistency* _Removed (Breaking)_ + -*public property Nest.BulkIndexByScrollFailure.CausedBy* _Removed -(Breaking)_ + -*public property Nest.BulkIndexByScrollFailure.Node* _Removed -(Breaking)_ + -*public property Nest.BulkIndexByScrollFailure.Reason* _Removed -(Breaking)_ + -*public property Nest.BulkIndexByScrollFailure.Shard* _Removed -(Breaking)_ + -*public property Nest.BulkRequest.Consistency* _Removed (Breaking)_ + -*public method Nest.BulkUpdateDescriptor.Lang* _Removed (Breaking)_ + -*public method Nest.BulkUpdateDescriptor.Params* _Removed (Breaking)_ + -*public property Nest.BulkUpdateOperation.InferFrom* _Removed (Breaking)_ + -*public property Nest.CategorySuggestContext.Default* _Removed -(Breaking)_ + -*public method Nest.CategorySuggestContextDescriptor.Default* -_Removed (Breaking)_ + -*public method Nest.CategorySuggestContextDescriptor.Default* -_Removed (Breaking)_ + -*public property Nest.CatFielddataRecord.FieldSizes* _Removed -(Breaking)_ + -*public property Nest.CatFielddataRecord.Total* _Removed (Breaking)_ + -*public property Nest.CatNodesRecord.Host* _Removed (Breaking)_ + -*public property Nest.CatNodesRecord.Load* _Removed (Breaking)_ + -*public property Nest.CatRecoveryRecord.TotalTranslog* _Removed -(Breaking)_ + -*public property Nest.CatRecoveryRecord.Translog* _Removed (Breaking)_ + -*public property Nest.CatRecoveryRecord.TranslogPercent* _Removed -(Breaking)_ + -*public method Nest.ClusterHealthDescriptor.WaitForRelocatingShards* -_Removed (Breaking)_ + -*public property Nest.ClusterHealthRequest.WaitForRelocatingShards* -_Removed (Breaking)_ + -*public property Nest.ClusterIndicesStats.Percolate* _Removed -(Breaking)_ + -*public property Nest.ClusterNodeCount.Client* _Removed (Breaking)_ + -*public property Nest.ClusterNodeCount.DataOnly* _Removed (Breaking)_ + -*public property Nest.ClusterNodeCount.MasterData* _Removed -(Breaking)_ + -*public property Nest.ClusterNodeCount.MasterOnly* _Removed -(Breaking)_ + -*public class Nest.ClusterOperatingSystemMemory* _Removed (Breaking)_ + -*public property Nest.ClusterOperatingSystemStats.Memory* _Removed -(Breaking)_ + -*public method Nest.ClusterRerouteDescriptor.Allocate* _Removed -(Breaking)_ + -*public property Nest.ClusterRerouteResponse.Version* _Removed -(Breaking)_ + -*public property Nest.CompletionAttribute.Payloads* _Removed -(Breaking)_ + -*public class Nest.CompletionField* _Removed (Breaking)_ + -*public property Nest.CompletionProperty.Context* _Removed (Breaking)_ + -*public property Nest.CompletionProperty.Payloads* _Removed -(Breaking)_ + -*public method Nest.CompletionPropertyDescriptor.Context* _Removed -(Breaking)_ + -*public method Nest.CompletionPropertyDescriptor.Payloads* _Removed -(Breaking)_ + -*public property Nest.CompletionSuggester.Context* _Removed -(Breaking)_ + -*public method Nest.CompletionSuggesterDescriptor.Context* _Removed -(Breaking)_ + -*public method Nest.CreateIndexDescriptor.Warmers* _Removed -(Breaking)_ + -*public property Nest.CreateIndexRequest.Warmers* _Removed (Breaking)_ + -*public class Nest.DeleteByQueryIndicesResult* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryResponse.Indices* _Removed -(Breaking)_ + -*public method Nest.DeleteDescriptor.Consistency* _Removed -(Breaking)_ + -*public property Nest.DeleteRequest.Consistency* _Removed (Breaking)_ + -*public property Nest.DeleteRequest.Consistency* _Removed -(Breaking)_ + -*public method Nest.DeleteScriptDescriptor.Version* _Removed -(Breaking)_ + -*public method Nest.DeleteScriptDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.DeleteScriptRequest.Version* _Removed -(Breaking)_ + -*public property Nest.DeleteScriptRequest.VersionType* _Removed -(Breaking)_ + -*public method Nest.DeleteSearchTemplateDescriptor.Version* _Removed -(Breaking)_ + -*public method Nest.DeleteSearchTemplateDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.DeleteSearchTemplateRequest.Version* _Removed -(Breaking)_ + -*public property Nest.DeleteSearchTemplateRequest.VersionType* _Removed -(Breaking)_ + -*public class Nest.DeleteWarmerDescriptor* _Removed (Breaking)_ + -*public class Nest.DeleteWarmerRequest* _Removed (Breaking)_ + -*public class Nest.DeleteWarmerResponse* _Removed (Breaking)_ + -*public method Nest.DeleteWatchDescriptor.Force* _Removed (Breaking)_ + -*public property Nest.DeleteWatchRequest.Force* _Removed (Breaking)_ + -*public property Nest.DirectGenerator.MinWordLen* _Removed (Breaking)_ + -*public property Nest.DirectGenerator.PrefixLen* _Removed (Breaking)_ + -*public method Nest.DynamicIndexSettings..ctor* _Removed (Breaking)_ + -*public property Nest.DynamicIndexSettings.RequestCacheEnabled* _Removed -(Breaking)_ + -*public property Nest.DynamicIndexSettings.WarmersEnabled* _Removed -(Breaking)_ + -*public method Nest.DynamicIndexSettingsDescriptorBase.RequestCacheEnabled* _Removed (Breaking)_ + -*public method Nest.DynamicIndexSettingsDescriptorBase.WarmersEnabled* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.DeleteWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.GetWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetWarmerAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetWarmerAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Optimize* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Optimize* _Removed (Breaking)_ + -*public method Nest.ElasticClient.OptimizeAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.OptimizeAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutWarmer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutWarmerAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutWarmerAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.SearchExists* _Removed (Breaking)_ + -*public method Nest.ElasticClient.SearchExists* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.SearchExistsAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.SearchExistsAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.ElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksCancel* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksCancel* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksCancelAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.TasksCancelAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.TasksList* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksList* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksListAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.TasksListAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.UpdateByQuery* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.UpdateByQueryAsync* _Removed -(Breaking)_ + -*public method Nest.ElasticClient.WatcherInfo* _Removed (Breaking)_ + -*public method Nest.ElasticClient.WatcherInfo* _Removed (Breaking)_ + -*public method Nest.ElasticClient.WatcherInfoAsync* _Removed (Breaking)_ -*public method Nest.ElasticClient.WatcherInfoAsync* _Removed -(Breaking)_ + -*public property Nest.ElasticsearchPropertyAttributeBase.DocValues* -_Removed (Breaking)_ + -*public property Nest.ElasticsearchPropertyAttributeBase.Similarity* -_Removed (Breaking)_ + -*public property Nest.ElasticsearchPropertyAttributeBase.Store* _Removed -(Breaking)_ + -*public method Nest.ExplainDescriptor.Fields* _Removed -(Breaking)_ + -*public method Nest.ExplainDescriptor.Fields* _Removed -(Breaking)_ + -*public property Nest.ExplainRequest.Fields* _Removed -(Breaking)_ + -*public property Nest.Field.CacheableExpression* _Removed (Breaking)_ + -*public method Nest.Field.Create* _Removed (Breaking)_ + -*public method Nest.Field.Create* _Removed (Breaking)_ + -*public class Nest.GeoLocationSuggestContext* _Removed (Breaking)_ + -*public class Nest.GeoLocationSuggestContextDescriptor* _Removed -(Breaking)_ + -*public method Nest.GetDescriptor.Fields* _Removed (Breaking)_ + -*public method Nest.GetDescriptor.Fields* _Removed (Breaking)_ + -*public property Nest.GetMappingResponse.IndexTypeMappings* _Removed -(Breaking)_ + -*public property Nest.GetRequest.Fields* _Removed (Breaking)_ + -*public property Nest.GetRequest.Fields* _Removed (Breaking)_ + -*public method Nest.GetScriptDescriptor.Version* _Removed (Breaking)_ + -*public method Nest.GetScriptDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.GetScriptRequest.Version* _Removed (Breaking)_ + -*public property Nest.GetScriptRequest.VersionType* _Removed -(Breaking)_ + -*public method Nest.GetSearchTemplateDescriptor.Version* _Removed -(Breaking)_ + -*public method Nest.GetSearchTemplateDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.GetSearchTemplateRequest.Version* _Removed -(Breaking)_ + -*public property Nest.GetSearchTemplateRequest.VersionType* _Removed -(Breaking)_ + -*public class Nest.GetWarmerDescriptor* _Removed (Breaking)_ + -*public class Nest.GetWarmerRequest* _Removed (Breaking)_ + -*public class Nest.GetWarmerResponse* _Removed (Breaking)_ + -*public class Nest.GlobalInnerHit* _Removed (Breaking)_ + -*public class Nest.GlobalInnerHitDescriptor* _Removed (Breaking)_ + -*public property Nest.HasParentQuery.ScoreMode* _Removed (Breaking)_ + -*public method Nest.HasParentQueryDescriptor.ScoreMode* _Removed -(Breaking)_ + -*public class Nest.HighlightDocumentDictionary* _Removed (Breaking)_ + -*public property Nest.HighlightField.CustomType* _Removed (Breaking)_ + -*public method Nest.HighlightFieldDescriptor.OnAll* _Removed -(Breaking)_ + -*public class Nest.HistogramBucket* _Removed (Breaking)_ + -*public property Nest.IAllocateClusterRerouteCommand.AllowPrimary* -_Removed (Breaking)_ + -*public property Nest.IAttachmentProperty.FileField* _Removed -(Breaking)_ + -*public property Nest.IBoolQuery.CreatedByBoolDsl* _Removed -(Breaking)_ + -*public property Nest.IBulkAllRequest.Consistency* _Removed -(Breaking)_ + -*public property Nest.IBulkUpdateOperation.InferFrom* _Removed (Breaking)_ + -*public property Nest.ICategorySuggestContext.Default* _Removed -(Breaking)_ + -*public property Nest.ICompletionProperty.Context* _Removed -(Breaking)_ + -*public property Nest.ICompletionProperty.Payloads* _Removed -(Breaking)_ + -*public property Nest.ICompletionSuggester.Context* _Removed -(Breaking)_ + -*public property Nest.IDeleteByQueryResponse.Indices* _Removed -(Breaking)_ + -*public interface Nest.IDeleteWarmerRequest* _Removed (Breaking)_ + -*public interface Nest.IDeleteWarmerResponse* _Removed (Breaking)_ + -*public property Nest.IDirectGenerator.MinWordLen* _Removed -(Breaking)_ + -*public property Nest.IDirectGenerator.PrefixLen* _Removed (Breaking)_ + -*public property Nest.IDynamicIndexSettings.RequestCacheEnabled* -_Removed (Breaking)_ + -*public property Nest.IDynamicIndexSettings.WarmersEnabled* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.DeleteWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.DeleteWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.GetWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.GetWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.Optimize* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Optimize* _Removed (Breaking)_ + -*public method Nest.IElasticClient.OptimizeAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.OptimizeAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutWarmer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.PutWarmerAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.SearchExists* _Removed (Breaking)_ + -*public method Nest.IElasticClient.SearchExists* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.SearchExistsAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.SearchExistsAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.IElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.TasksCancel* _Removed (Breaking)_ + -*public method Nest.IElasticClient.TasksCancel* _Removed (Breaking)_ + -*public method Nest.IElasticClient.TasksCancelAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.TasksCancelAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.TasksList* _Removed (Breaking)_ + -*public method Nest.IElasticClient.TasksList* _Removed (Breaking)_ + -*public method Nest.IElasticClient.TasksListAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.TasksListAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.UpdateByQuery* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.UpdateByQueryAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.WatcherInfo* _Removed (Breaking)_ + -*public method Nest.IElasticClient.WatcherInfo* _Removed (Breaking)_ + -*public method Nest.IElasticClient.WatcherInfoAsync* _Removed -(Breaking)_ + -*public method Nest.IElasticClient.WatcherInfoAsync* _Removed -(Breaking)_ + -*public interface Nest.IGeoLocationSuggestContext* _Removed -(Breaking)_ + -*public property Nest.IGetMappingResponse.IndexTypeMappings* _Removed -(Breaking)_ + -*public interface Nest.IGetWarmerRequest* _Removed (Breaking)_ + -*public interface Nest.IGetWarmerResponse* _Removed (Breaking)_ + -*public interface Nest.IGlobalInnerHit* _Removed (Breaking)_ + -*public property Nest.IHasParentQuery.ScoreMode* _Removed (Breaking)_ + -*public property Nest.IIndexRequest.UntypedDocument* _Removed -(Breaking)_ + -*public property Nest.IIndexState.Warmers* _Removed (Breaking)_ + -*public property Nest.IIndicesPrivileges.Fields* _Removed (Breaking)_ + -*public interface Nest.IInnerHitsContainer* _Removed (Breaking)_ + -*public property Nest.IMultiGetOperation.Fields* _Removed (Breaking)_ + -*public property Nest.IMultiTermVectorOperation.Fields* _Removed -(Breaking)_ + -*public interface Nest.INamedInnerHits* _Removed (Breaking)_ + -*public method Nest.IndexDescriptor.Consistency* _Removed -(Breaking)_ + -*public class Nest.IndexFieldMappings* _Removed (Breaking)_ + -*public property Nest.IndexRequest.Consistency* _Removed -(Breaking)_ + -*public method Nest.IndexSettings..ctor* _Removed (Breaking)_ + -*public property Nest.IndexState.Warmers* _Removed (Breaking)_ + -*public property Nest.IndexStats.Percolate* _Removed (Breaking)_ + -*public property Nest.IndexStats.Suggest* _Removed (Breaking)_ + -*public property Nest.IndicesPrivileges.Fields* _Removed (Breaking)_ + -*public method Nest.IndicesPrivilegesDescriptor.Fields* _Removed -(Breaking)_ + -*public method Nest.IndicesPrivilegesDescriptor.Fields* _Removed -(Breaking)_ + -*public method Nest.Infer.Fields* _Removed (Breaking)_ + -*public class Nest.InnerHitsContainer* _Removed (Breaking)_ + -*public class Nest.InnerHitsContainerDescriptor* _Removed -(Breaking)_ + -*public interface Nest.IOptimizeRequest* _Removed (Breaking)_ + -*public interface Nest.IOptimizeResponse* _Removed (Breaking)_ + -*public interface Nest.IPathInnerHit* _Removed (Breaking)_ + -*public property Nest.IProperty.CopyTo* _Removed (Breaking)_ + -*public property Nest.IProperty.DocValues* _Removed (Breaking)_ + -*public property Nest.IProperty.Fields* _Removed (Breaking)_ + -*public property Nest.IProperty.Similarity* _Removed (Breaking)_ + -*public property Nest.IProperty.Store* _Removed (Breaking)_ + -*public interface Nest.IPutWarmerRequest* _Removed (Breaking)_ + -*public interface Nest.IPutWarmerResponse* _Removed (Breaking)_ + -*public interface Nest.IReindexRequest* _Removed (Breaking)_ + -*public interface Nest.IReindexResponse* _Removed (Breaking)_ + -*public property Nest.IResponse.ApiCall* _Removed (Breaking)_ + -*public property Nest.ISamplerAggregation.Field* _Removed (Breaking)_ + -*public interface Nest.ISearchExistsRequest* _Removed (Breaking)_ + -*public interface Nest.ISearchExistsRequest* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.Fields* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.InnerHits* _Removed (Breaking)_ + -*public property Nest.ISearchResponse.Highlights* _Removed -(Breaking)_ + -*public property Nest.ISearchTemplateRequest.Template* _Removed -(Breaking)_ *public interface Nest.ISuggestContextMapping* _Removed -(Breaking)_ + -*public property Nest.ISuggester.ShardSize* _Removed (Breaking)_ + -*public property Nest.ISuggester.Text* _Removed (Breaking)_ + -*public interface Nest.ISuggestResponse* _Removed (Breaking)_ + -*public interface Nest.ITasksCancelRequest* _Removed (Breaking)_ + -*public interface Nest.ITasksCancelResponse* _Removed (Breaking)_ + -*public interface Nest.ITasksListRequest* _Removed (Breaking)_ + -*public interface Nest.ITasksListResponse* _Removed (Breaking)_ + -*public property Nest.ITemplateMapping.Warmers* _Removed (Breaking)_ + -*public property Nest.ITermsAggregation.ShowTermDocumentCountError* -_Removed (Breaking)_ + -*public property Nest.ITermSuggester.MinWordLen* _Removed (Breaking)_ + -*public property Nest.ITermSuggester.PrefixLen* _Removed (Breaking)_ + -*public property Nest.ITermVectorsResponse.Found* _Removed (Breaking)_ + -*public property Nest.ITermVectorsResponse.Id* _Removed (Breaking)_ + -*public property Nest.ITermVectorsResponse.Index* _Removed (Breaking)_ + -*public property Nest.ITermVectorsResponse.TermVectors* _Removed -(Breaking)_ + -*public property Nest.ITermVectorsResponse.Type* _Removed (Breaking)_ + -*public property Nest.ITermVectorsResponse.Version* _Removed -(Breaking)_ + -*public property Nest.ITranslogFlushSettings.ThresholdOps* _Removed -(Breaking)_ + -*public property Nest.ITranslogSettings.FileSystemType* _Removed -(Breaking)_ + -*public interface Nest.ITypeInnerHit* _Removed (Breaking)_ + -*public interface Nest.IWarmer* _Removed (Breaking)_ + -*public interface Nest.IWarmers* _Removed (Breaking)_ + -*public interface Nest.IWatcherInfoRequest* _Removed (Breaking)_ + -*public interface Nest.IWatcherInfoResponse* _Removed (Breaking)_ + -*public method Nest.MultiGetDescriptor.Fields* _Removed (Breaking)_ + -*public method Nest.MultiGetDescriptor.Fields* _Removed (Breaking)_ + -*public property Nest.MultiGetOperation.Fields* _Removed -(Breaking)_ + -*public method Nest.MultiGetOperationDescriptor.Fields* _Removed -(Breaking)_ + -*public method Nest.MultiGetOperationDescriptor.Fields* _Removed -(Breaking)_ + -*public property Nest.MultiGetRequest.Fields* _Removed (Breaking)_ + -*public property Nest.MultiTermVectorOperation.Fields* _Removed -(Breaking)_ + -*public method Nest.MultiTermVectorOperationDescriptor.Fields* -_Removed (Breaking)_ + -*public method Nest.MultiTermVectorOperationDescriptor.Fields* -_Removed (Breaking)_ + -*public class Nest.NamedInnerHits* _Removed (Breaking)_ + -*public class Nest.NamedInnerHitsDescriptor* _Removed (Breaking)_ + -*public property Nest.NodeInfo.Build* _Removed (Breaking)_ + -*public property Nest.NodeInfo.Hostname* _Removed (Breaking)_ + -*public property Nest.NodeInfo.HttpAddress* _Removed (Breaking)_ + -*public property Nest.NodeProcessInfo.RefreshInterval* _Removed -(Breaking)_ + -*public enum Nest.NumericResolutionUnit* _Removed (Breaking)_ + -*public property Nest.ObjectAttribute.Dynamic* _Removed (Breaking)_ + -*public property Nest.OperatingSystemStats.CpuPercent* _Removed -(Breaking)_ + -*public property Nest.OperatingSystemStats.LoadAverage* _Removed -(Breaking)_ + -*public class Nest.OptimizeDescriptor* _Removed (Breaking)_ + -*public class Nest.OptimizeRequest* _Removed (Breaking)_ + -*public class Nest.OptimizeResponse* _Removed (Breaking)_ + -*public enum Nest.ParentScoreMode* _Removed (Breaking)_ + -*public class Nest.PathInnerHit* _Removed (Breaking)_ + -*public class Nest.PathInnerHit* _Removed (Breaking)_ + -*public class Nest.PathInnerHitDescriptor* _Removed (Breaking)_ + -*public class Nest.PercolateStats* _Removed (Breaking)_ + -*public property Nest.PropertyBase.CopyTo* _Removed (Breaking)_ + -*public property Nest.PropertyBase.DocValues* _Removed (Breaking)_ + -*public property Nest.PropertyBase.Fields* _Removed (Breaking)_ + -*public property Nest.PropertyBase.IndexName* _Removed (Breaking)_ + -*public property Nest.PropertyBase.Similarity* _Removed (Breaking)_ + -*public property Nest.PropertyBase.Store* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.CopyTo* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.DocValues* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.Fields* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.Similarity* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.Similarity* _Removed (Breaking)_ + -*public method Nest.PropertyDescriptorBase.Store* _Removed (Breaking)_ + -*public method Nest.PutIndexTemplateDescriptor.Warmers* _Removed -(Breaking)_ + -*public property Nest.PutIndexTemplateRequest.Warmers* _Removed -(Breaking)_ + -*public method Nest.PutMappingDescriptor.Parent* _Removed -(Breaking)_ + -*public method Nest.PutScriptDescriptor.OpType* _Removed (Breaking)_ + -*public method Nest.PutScriptDescriptor.Version* _Removed (Breaking)_ + -*public method Nest.PutScriptDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.PutScriptRequest.OpType* _Removed (Breaking)_ + -*public property Nest.PutScriptRequest.Version* _Removed (Breaking)_ + -*public property Nest.PutScriptRequest.VersionType* _Removed -(Breaking)_ + -*public method Nest.PutSearchTemplateDescriptor.OpType* _Removed -(Breaking)_ + -*public method Nest.PutSearchTemplateDescriptor.Version* _Removed -(Breaking)_ + -*public method Nest.PutSearchTemplateDescriptor.VersionType* _Removed -(Breaking)_ + -*public property Nest.PutSearchTemplateRequest.OpType* _Removed -(Breaking)_ + -*public property Nest.PutSearchTemplateRequest.Version* _Removed -(Breaking)_ + -*public property Nest.PutSearchTemplateRequest.VersionType* _Removed -(Breaking)_ + -*public class Nest.PutWarmerDescriptor* _Removed (Breaking)_ + -*public class Nest.PutWarmerRequest* _Removed (Breaking)_ + -*public class Nest.PutWarmerResponse* _Removed (Breaking)_ + -*public property Nest.QueryProfile.Lucene* _Removed (Breaking)_ + -*public property Nest.QueryProfile.QueryType* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.AllTypes* _Removed -(Breaking)_ + -*public method Nest.ReindexDescriptor.CreateIndex* _Removed -(Breaking)_ + -*public method Nest.ReindexDescriptor.Query* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.Query* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.Scroll* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.Size* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.Take* _Removed (Breaking)_ + -*public method Nest.ReindexDescriptor.Type* _Removed (Breaking)_ + -*public method Nest.ReindexObservable.IndexSearchResults* _Removed -(Breaking)_ + -*public method Nest.ReindexOnServerDescriptor.Consistency* _Removed -(Breaking)_ + -*public property Nest.ReindexOnServerRequest.Consistency* _Removed -(Breaking)_ + -*public class Nest.ReindexRequest* _Removed (Breaking)_ + -*public class Nest.ReindexResponse* _Removed (Breaking)_ + -*public class Nest.Role* _Removed (Breaking)_ + -*public property Nest.RoutingShard.Version* _Removed (Breaking)_ + -*public property Nest.SamplerAggregation.Field* _Removed (Breaking)_ + -*public method Nest.SamplerAggregationDescriptor.Field* _Removed -(Breaking)_ + -*public method Nest.SamplerAggregationDescriptor.Field* _Removed -(Breaking)_ + -*public method Nest.SearchDescriptor.Fields* _Removed (Breaking)_ -*public method Nest.SearchDescriptor.Fields* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.InnerHits* _Removed -(Breaking)_ + -*public class Nest.SearchExistsDescriptor* _Removed (Breaking)_ + -*public class Nest.SearchExistsRequest* _Removed (Breaking)_ + -*public class Nest.SearchExistsRequest* _Removed (Breaking)_ + -*public property Nest.SearchRequest.Fields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.InnerHits* _Removed (Breaking)_ + -*public property Nest.SearchRequest.Fields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.InnerHits* _Removed (Breaking)_ + -*public property Nest.SearchStats.FetchTime* _Removed (Breaking)_ + -*public property Nest.SearchStats.QueryTime* _Removed (Breaking)_ + -*public property Nest.SearchStats.ScrollTime* _Removed (Breaking)_ + -*public method Nest.SearchTemplateDescriptor.Template* _Removed -(Breaking)_ + -*public property Nest.SearchTemplateRequest.Template* _Removed -(Breaking)_ + -*public property Nest.ShardStore.Version* _Removed (Breaking)_ + -*public class Nest.ShieldNode* _Removed (Breaking)_ + -*public class Nest.ShieldNodeStatus* _Removed (Breaking)_ + -*public property Nest.Snapshot.ShardFailures* _Removed (Breaking)_ + -*public class Nest.Suggest* _Removed (Breaking)_ + -*public class Nest.SuggestContextMapping* _Removed (Breaking)_ + -*public class Nest.SuggestContextMappingDescriptor* _Removed -(Breaking)_ + -*public method Nest.SuggestDescriptorBase.ShardSize* _Removed (Breaking)_ + -*public method Nest.SuggestDescriptorBase.Text* _Removed (Breaking)_ + -*public property Nest.SuggesterBase.ShardSize* _Removed (Breaking)_ + -*public property Nest.SuggesterBase.Text* _Removed (Breaking)_ + -*public class Nest.SuggestOption* _Removed (Breaking)_ + -*public class Nest.SuggestOptionJsonConverter* _Removed (Breaking)_ + -*public class Nest.SuggestResponse* _Removed (Breaking)_ + -*public class Nest.SuggestStats* _Removed (Breaking)_ + -*public class Nest.TasksCancelDescriptor* _Removed (Breaking)_ + -*public class Nest.TasksCancelRequest* _Removed (Breaking)_ + -*public class Nest.TasksCancelResponse* _Removed (Breaking)_ + -*public class Nest.TasksListDescriptor* _Removed (Breaking)_ + -*public class Nest.TasksListRequest* _Removed (Breaking)_ + -*public class Nest.TasksListResponse* _Removed (Breaking)_ + -*public property Nest.TemplateMapping.Warmers* _Removed (Breaking)_ + -*public property Nest.TermsAggregation.ShowTermDocumentCountError* -_Removed (Breaking)_ + -*public method -Nest.TermsAggregationDescriptor.ShowTermDocumentCountError* _Removed -(Breaking)_ + -*public property Nest.TermSuggester.MinWordLen* _Removed (Breaking)_ + -*public property Nest.TermSuggester.PrefixLen* _Removed (Breaking)_ + -*public method Nest.TermVectorsDescriptor.Dfs* _Removed -(Breaking)_ + -*public property Nest.TermVectorsRequest.Dfs* _Removed -(Breaking)_ + -*public property Nest.TranslogFlushSettings.ThresholdOps* _Removed -(Breaking)_ + -*public method Nest.TranslogFlushSettingsDescriptor.ThresholdOps* -_Removed (Breaking)_ *public property -Nest.TranslogSettings.FileSystemType* _Removed (Breaking)_ + -*public method Nest.TranslogSettingsDescriptor.FileSystemType* _Removed -(Breaking)_ + -*public enum Nest.TranslogWriteMode* _Removed (Breaking)_ + -*public class Nest.TypeInnerHit* _Removed (Breaking)_ + -*public class Nest.TypeInnerHit* _Removed (Breaking)_ + -*public class Nest.TypeInnerHitDescriptor* _Removed (Breaking)_ + -*public field Nest.UpdatableIndexSettings.RequestCacheEnable* _Removed -(Breaking)_ + -*public field Nest.UpdatableIndexSettings.TranslogFlushTreshHoldOps* -_Removed (Breaking)_ + -*public field Nest.UpdatableIndexSettings.TranslogFsType* _Removed -(Breaking)_ + -*public field Nest.UpdatableIndexSettings.TranslogInterval* _Removed -(Breaking)_ + -*public field Nest.UpdatableIndexSettings.WarmersEnabled* _Removed -(Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.Consistency* _Removed -(Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.Fields* _Removed -(Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.Fields* _Removed -(Breaking)_ + -*public property Nest.UpdateByQueryRequest.Consistency* _Removed -(Breaking)_ + -*public property Nest.UpdateByQueryRequest.Fields* _Removed -(Breaking)_ + -*public property Nest.UpdateByQueryRequest.Consistency* _Removed -(Breaking)_ + -*public property Nest.UpdateByQueryRequest.Fields* _Removed -(Breaking)_ + -*public method Nest.UpdateDescriptor.Consistency* _Removed (Breaking)_ + -*public property Nest.UpdateRequest.Consistency* _Removed (Breaking)_ + -*public method Nest.UpgradeDescriptor.AllowNoIndices* _Removed -(Breaking)_ + -*public property Nest.UpgradeRequest.AllowNoIndices* _Removed -(Breaking)_ + -*public class Nest.User* _Removed (Breaking)_ + -*public class Nest.Warmer* _Removed (Breaking)_ + -*public class Nest.WarmerDescriptor* _Removed (Breaking)_ + -*public class Nest.Warmers* _Removed (Breaking)_ + -*public class Nest.WarmersDescriptor* _Removed (Breaking)_ + -*public class Nest.WatcherInfoDescriptor* _Removed (Breaking)_ + -*public class Nest.WatcherInfoRequest* _Removed (Breaking)_ + -*public class Nest.WatcherInfoResponse* _Removed (Breaking)_ + -*public class Nest.WatcherVersion* _Removed (Breaking)_ diff --git a/docs/5.0-breaking-changes/nest-breaking-changes.md b/docs/5.0-breaking-changes/nest-breaking-changes.md deleted file mode 100644 index 3b8b3e0c444..00000000000 --- a/docs/5.0-breaking-changes/nest-breaking-changes.md +++ /dev/null @@ -1,3409 +0,0 @@ -# Breaking Changes - -Oh my goodness, this looks like a lot of breaking changes! This is true but please take note that this list is very very extensive -It includes every single *binary* breaking change. In a lot of cases these will not necessarily equate to compiler errors. - -## StatsAggregator renamed to StatsAggregation - -`IStatsAggregator` not named correctly all aggregation requests objects need to end with `Aggregation` - -**public property Nest.IAggregationContainer.Stats** *Declaration changed (Breaking)* - -2.x: `public IStatsAggregator Stats { get; set; }` -5.x: `public IStatsAggregation Stats { get; set; }` - -**public method Nest.AggregationContainerDescriptor<T>.Stats** *Declaration changed (Breaking)* - -2.x: `public AggregationContainerDescriptor Stats(string name, Func, IStatsAggregator> selector)` -5.x: `public AggregationContainerDescriptor Stats(string name, Func, IStatsAggregation> selector)` - -**public interface Nest.IStatsAggregator** *Removed (Breaking)* - - -## KeyedBucket is now generic - -No longer always reads the key as string https://github.com/elastic/elasticsearch-net/issues/2336 - -**public method Nest.AggregationsHelper.GeoHash** *Declaration changed (Breaking)* - -2.x: `public MultiBucketAggregate GeoHash(string key)` -5.x: `public MultiBucketAggregate> GeoHash(string key)` - -**public method Nest.AggregationsHelper.Histogram** *Declaration changed (Breaking)* - -2.x: `public MultiBucketAggregate Histogram(string key)` -5.x: `public MultiBucketAggregate> Histogram(string key)` - -**public method Nest.AggregationsHelper.Terms** *Declaration changed (Breaking)* - -2.x: `public TermsAggregate Terms(string key)` -5.x: `public TermsAggregate Terms(string key)` - -## String Property Mapping is obsolete - -See also: https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_mapping_changes.html#_literal_string_literal_fields_replaced_by_literal_text_literal_literal_keyword_literal_fields - -This is also reflected in the attachment mappings - -**public property Nest.AttachmentProperty.AuthorField** *Declaration changed (Breaking)* - -2.x: `public IStringProperty AuthorField { get; set; }` -5.x: `public ITextProperty AuthorField { get; set; }` - -**public property Nest.AttachmentProperty.ContentTypeField** *Declaration changed (Breaking)* -**public property Nest.AttachmentProperty.KeywordsField** *Declaration changed (Breaking)* -**public property Nest.AttachmentProperty.LanguageField** *Declaration changed (Breaking)* -**public property Nest.AttachmentProperty.NameField** *Declaration changed (Breaking)* -**public property Nest.AttachmentProperty.TitleField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.AuthorField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.ContentTypeField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.KeywordsField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.LanguageField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.NameField** *Declaration changed (Breaking)* -**public property Nest.IAttachmentProperty.TitleField** *Declaration changed (Breaking)* - -**public method Nest.AttachmentPropertyDescriptor<T>.ContentTypeField** *Declaration changed (Breaking)* - -2.x: `public AttachmentPropertyDescriptor ContentTypeField(Func, IStringProperty> selector)` -5.x: `public AttachmentPropertyDescriptor ContentTypeField(Func, ITextProperty> selector)` - -**public method Nest.AttachmentPropertyDescriptor<T>.AuthorField** *Declaration changed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.FileField** *Declaration changed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.KeywordsField** *Declaration changed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.LanguageField** *Declaration changed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.NameField** *Declaration changed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.TitleField** *Declaration changed (Breaking)* - - -## NonStringIndexOption no longer valid - -See also: https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_mapping_changes.html#_literal_index_literal_property - -**public enum Nest.NonStringIndexOption** *Removed (Breaking)* - -**public property Nest.BooleanAttribute.Index** *Declaration changed (Breaking)* - -2.x: `public NonStringIndexOption Index { get; set; }` -5.x: `public bool Index { get; set; }` - -**public property Nest.BooleanProperty.Index** *Declaration changed (Breaking)* -**public property Nest.DateAttribute.Index** *Declaration changed (Breaking)* -**public property Nest.DateProperty.Index** *Declaration changed (Breaking)* -**public property Nest.IBooleanProperty.Index** *Declaration changed (Breaking)* -**public property Nest.IDateProperty.Index** *Declaration changed (Breaking)* -**public property Nest.IIpProperty.Index** *Declaration changed (Breaking)* -**public property Nest.INumberProperty.Index** *Declaration changed (Breaking)* -**public property Nest.IpAttribute.Index** *Declaration changed (Breaking)* -**public property Nest.IpProperty.Index** *Declaration changed (Breaking)* -**public property Nest.NumberAttribute.Index** *Declaration changed (Breaking)* -**public property Nest.NumberProperty.Index** *Declaration changed (Breaking)* - -**public method Nest.BooleanPropertyDescriptor<T>.Index** *Declaration changed (Breaking)* - -2.x: `public BooleanPropertyDescriptor Index(NonStringIndexOption index = 0)` -5.x: `public BooleanPropertyDescriptor Index(bool index)` - -**public method Nest.DatePropertyDescriptor<T>.Index** *Declaration changed (Breaking)* -**public method Nest.IpPropertyDescriptor<T>.Index** *Declaration changed (Breaking)* -**public method Nest.NumberPropertyDescriptorBase<TDescriptor, TInterface, T>.Index** *Declaration changed (Breaking)* - -## Refresh no longer a simple boolean - -As it now also accepts a `wait_for` parameter - -See also: https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docs-refresh.html - -**public method Nest.BulkAllDescriptor<T>.Refresh** *Declaration changed (Breaking)* - -2.x: `public BulkAllDescriptor Refresh(bool refresh = True)` -5.x: `public BulkAllDescriptor Refresh(Refresh refresh)` - -**public method Nest.BulkDescriptor.Refresh** *Declaration changed (Breaking)* -**public method Nest.DeleteDescriptor<T>.Refresh** *Declaration changed (Breaking)* -**public method Nest.IndexDescriptor<TDocument>.Refresh** *Declaration changed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Refresh** *Declaration changed (Breaking)* - -**public property Nest.BulkAllRequest<T>.Refresh** *Declaration changed (Breaking)* - -2.x: `public bool? Refresh { get; set; }` -5.x: `public Nullable Refresh { get; set; }` - -**public property Nest.BulkRequest.Refresh** *Declaration changed (Breaking)* -**public property Nest.DeleteRequest.Refresh** *Declaration changed (Breaking)* -**public property Nest.DeleteRequest<T>.Refresh** *Declaration changed (Breaking)* -**public property Nest.IBulkAllRequest<T>.Refresh** *Declaration changed (Breaking)* -**public property Nest.IndexRequest<TDocument>.Refresh** *Declaration changed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.Refresh** *Declaration changed (Breaking)* - -## Script changes - -The default language is now painless! Also we no longer support the `1.x` inline syntax for scripts. -https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_scripting.html#_removed_1_x_script_and_template_syntax - -**public method Nest.BulkUpdateDescriptor<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* - -2.x: `public BulkUpdateDescriptor Script(string script)` -5.x: `public BulkUpdateDescriptor Script(Func scriptSelector)` - -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* - -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* - -2.x: `public string Script { get; set; }` -5.x: `public IScript Script { get; set; }` - -**public property Nest.IUpdateRequest<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.Script** *Declaration changed (Breaking)* - -In some cases we abused IScript to send template queries this is now fixed - -**public property Nest.PhraseSuggestCollate.Query** *Declaration changed (Breaking)* - -2.x: `public IScript Query { get; set; }` -5.x: `public ITemplateQuery Query { get; set; }` - -**public property Nest.IPhraseSuggestCollate.Query** *Declaration changed (Breaking)* -**public method Nest.PhraseSuggestCollateDescriptor<T>.Query** *Removed (Breaking)* - -**public method Nest.PhraseSuggestCollateDescriptor<T>.Query** *Declaration changed (Breaking)* - -2.x: `public PhraseSuggestCollateDescriptor Query(string script)` -5.x: `public PhraseSuggestCollateDescriptor Query(Func, ITemplateQuery> selector)` - - -Properties supporting the obsoleted and removed syntax have been removed - -**public method Nest.BulkUpdateDescriptor<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public method Nest.BulkUpdateDescriptor<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.Lang** *Removed (Breaking)* -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.Lang** *Removed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public property Nest.IUpdateRequest<TDocument, TPartialDocument>.Language** *Removed (Breaking)* -**public property Nest.IUpdateRequest<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public property Nest.IUpdateRequest<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public property Nest.IUpdateRequest<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Language** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.ScriptedUpsert** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.ScriptQueryString** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.Language** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.ScriptedUpsert** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.ScriptFile** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.ScriptId** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.ScriptQueryString** *Removed (Breaking)* - - -## `I*Operation` on bulk is now `IBulk*Operation` - -Impact is low unless you have casting code in your application - -**public method Nest.BulkDescriptor.Index<T>** *Declaration changed (Breaking)* - -2.x: `public BulkDescriptor Index(Func, IIndexOperation> bulkIndexSelector)` -5.x: `public BulkDescriptor Index(Func, IBulkIndexOperation> bulkIndexSelector)` - -**public method Nest.BulkDescriptor.IndexMany<T>** *Declaration changed (Breaking)* - -2.x: `public BulkDescriptor IndexMany(IEnumerable objects, Func, T, IIndexOperation> bulkIndexSelector)` -5.x: `public BulkDescriptor IndexMany(IEnumerable objects, Func, T, IBulkIndexOperation> bulkIndexSelector)` - -**public interface Nest.IIndexOperation<T>** *Renamed (Breaking)* - - -## Cat Threadpool changes - -Cat threadpool underwent a complete makeover in core: https://github.com/elastic/elasticsearch/pull/19721 - -**public property Nest.CatThreadPoolRecord.Port** *Declaration changed (Breaking)* - -2.x: `public string Port { get; set; }` -5.x: `public int Port { get; set; }` - -**public class Nest.CatThreadPool** *Removed (Breaking)* -**public method Nest.CatThreadPoolDescriptor.FullId** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Bulk** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Flush** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Generic** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Get** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Id** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Index** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Management** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Merge** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Optimize** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Percolate** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Pid** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Refresh** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Search** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Snapshot** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Suggest** *Removed (Breaking)* -**public property Nest.CatThreadPoolRecord.Warmer** *Removed (Breaking)* -**public property Nest.CatThreadPoolRequest.FullId** *Removed (Breaking)* - -## WaitForActiveShards is now a string - -See also: https://github.com/elastic/elasticsearch/pull/20186 - -**public method Nest.ClusterHealthDescriptor.WaitForActiveShards** *Declaration changed (Breaking)* - -2.x: `public ClusterHealthDescriptor WaitForActiveShards(long wait_for_active_shards)` -5.x: `public ClusterHealthDescriptor WaitForActiveShards(string wait_for_active_shards)` - -**public property Nest.ClusterHealthRequest.WaitForActiveShards** *Declaration changed (Breaking)* - -2.x: `public long WaitForActiveShards { get; set; }` -5.x: `public string WaitForActiveShards { get; set; }` - -## AutoExpandReplicas is now an actual type - -Binary break only, still implicitly converts from string - -**public property Nest.IDynamicIndexSettings.AutoExpandReplicas** *Declaration changed (Breaking)* -**public property Nest.DynamicIndexSettings.AutoExpandReplicas** *Declaration changed (Breaking)* - -2.x: `public string AutoExpandReplicas { get; set; }` -5.x: `public AutoExpandReplicas AutoExpandReplicas { get; set; }` - -**public method Nest.DynamicIndexSettingsDescriptorBase<TDescriptor, TIndexSettings>.AutoExpandReplicas** *Declaration changed (Breaking)* - -2.x: `public TDescriptor AutoExpandReplicas(string AutoExpandReplicas)` -5.x: `public TDescriptor AutoExpandReplicas(AutoExpandReplicas autoExpandReplicas)` - -## DslPrettyPrintVisitor methods are now virtual - -## Nest visitors should be bound to interface - -The visitors should be passed interfaces not concrete types see: https://github.com/elastic/elasticsearch-net/pull/2320 - -## Deprecated queries are now removed - -See also: https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_50_search_changes.html#_deprecated_queries_removed - -**public property Nest.IQueryContainer.Missing** *Removed (Breaking)* -**public method Nest.Query<T>.Missing** *Removed (Breaking)* -**public interface Nest.IMissingQuery** *Removed (Breaking)* -**public class Nest.MissingQuery** *Removed (Breaking)* -**public class Nest.MissingQueryDescriptor<T>** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Missing** *Removed (Breaking)* -**public property Nest.IQueryContainer.And** *Removed (Breaking)* -**public property Nest.IQueryContainer.Filtered** *Removed (Breaking)* -**public property Nest.IQueryContainer.Limit** *Removed (Breaking)* -**public property Nest.IQueryContainer.Not** *Removed (Breaking)* -**public property Nest.IQueryContainer.Or** *Removed (Breaking)* -**public class Nest.FilteredQuery** *Removed (Breaking)* -**public class Nest.FilteredQueryDescriptor<T>** *Removed (Breaking)* -**public interface Nest.IFilteredQuery** *Removed (Breaking)* -**public method Nest.Query<T>.And** *Removed (Breaking)* -**public method Nest.Query<T>.Filtered** *Removed (Breaking)* -**public method Nest.Query<T>.Limit** *Removed (Breaking)* -**public method Nest.Query<T>.Not** *Removed (Breaking)* -**public method Nest.Query<T>.Or** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.And** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Filtered** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Not** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Or** *Removed (Breaking)* -**public class Nest.AndQuery** *Removed (Breaking)* -**public class Nest.AndQueryDescriptor<T>** *Removed (Breaking)* -**public interface Nest.IAndQuery** *Removed (Breaking)* -**public interface Nest.IOrQuery** *Removed (Breaking)* -**public class Nest.OrQuery** *Removed (Breaking)* -**public class Nest.OrQueryDescriptor<T>** *Removed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Limit** *Removed (Breaking)* -**public interface Nest.ILimitQuery** *Removed (Breaking)* -**public class Nest.LimitQuery** *Removed (Breaking)* -**public class Nest.LimitQueryDescriptor<T>** *Removed (Breaking)* -**public interface Nest.INotQuery** *Removed (Breaking)* -**public class Nest.NotQuery** *Removed (Breaking)* -**public class Nest.NotQueryDescriptor<T>** *Removed (Breaking)* - - -## Dynamic mapping now sends true/false - -So is now a union of `bool` and `DynamicMapping` - -**public enum Nest.DynamicMapping** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Nest.DynamicMappingJsonConverter)] -public enum DynamicMapping -{ -     Allow = 0, -     Ignore = 1, -     Strict = 2 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum DynamicMapping -{ -     Strict = 0 -} -``` - -**public property Nest.IObjectProperty.Dynamic** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonPropertyAttribute("dynamic")] -public Nullable Dynamic { get; set; } -``` - -5.x -```csharp -[JsonPropertyAttribute("dynamic")] -public Union Dynamic { get; set; } -``` -**public property Nest.PutMappingRequest.Dynamic** *Declaration changed (Breaking)* -**public property Nest.PutMappingRequest<T>.Dynamic** *Declaration changed (Breaking)* -**public property Nest.TypeMapping.Dynamic** *Declaration changed (Breaking)* -**public property Nest.ObjectProperty.Dynamic** *Declaration changed (Breaking)* -**public method Nest.ObjectPropertyDescriptorBase<TDescriptor, TInterface, TParent, TChild>.Dynamic** *Declaration changed (Breaking)* - -2.x: `public TDescriptor Dynamic(DynamicMapping dynamic)` -5.x: `public TDescriptor Dynamic(Union dynamic)` - -**public method Nest.PutMappingDescriptor<T>.Dynamic** *Declaration changed (Breaking)* -**public method Nest.TypeMappingDescriptor<T>.Dynamic** *Declaration changed (Breaking)* - -## CodeStandards changes - -Impact low, various binary breaking changes of code that did not adhere to our coding conventions - -**public method Nest.BoolQueryDescriptor<T>.DisableCoord** *Declaration changed (Breaking)* - -2.x: `public BoolQueryDescriptor DisableCoord()` -5.x: `public BoolQueryDescriptor DisableCoord(bool? disableCoord = True)` - -**public method Nest.ExtendedStatsBucketAggregationDescriptor.Sigma** *Declaration changed (Breaking)* - -2.x: `public ExtendedStatsBucketAggregationDescriptor Sigma(double? sigma)` -5.x: `public ExtendedStatsBucketAggregationDescriptor Sigma(double sigma)` - -**public method Nest.StringPropertyDescriptor<T>.PositionIncrementGap** *Declaration changed (Breaking)* - -2.x: `public StringPropertyDescriptor PositionIncrementGap(int? positionIncrementGap)` -5.x: `public StringPropertyDescriptor PositionIncrementGap(int positionIncrementGap)` - -In some cases we exposed `FluentDictionary` as property which is not useful - -**public property Nest.TypeMapping.Meta** *Declaration changed (Breaking)* -**public property Nest.PutMappingRequest<T>.Meta** *Declaration changed (Breaking)* -**public property Nest.ITypeMapping.Meta** *Declaration changed (Breaking)* -**public property Nest.PutMappingRequest.Meta** *Declaration changed (Breaking)* - -2.x: `public FluentDictionary Meta { get; set; }` -5.x: `public IDictionary Meta { get; set; }` - - -## Visibility changes - -Impact low, these are types/methods/constructors that were never supposed to be public. - -**public class Nest.BucketsPathJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.DictionaryResponseJsonConverter<TResponse, TKey, TValue>** *Visibility was changed from public to internal (Breaking)* -**public method Nest.CreateIndexRequest..ctor** *Visibility was changed from public to internal (Breaking)* -**public method Nest.NumberPropertyDescriptorBase<TDescriptor, TInterface, T>..ctor** *Visibility was changed from public to protected (Breaking)* -**public method Nest.ObjectPropertyDescriptorBase<TDescriptor, TInterface, TParent, TChild>..ctor** *Visibility was changed from public to protected (Breaking)* -**public class Nest.PercentileRanksAggregationJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.PercentilesAggregationJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.PropertyNameExtensions** *Visibility was changed from public to internal (Breaking)* -**public class Nest.ReindexRoutingJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public property Nest.ResponseBase.ApiCall** *Visibility was changed from public to protected (Breaking)* -**public class Nest.ScoreFunctionJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.ScriptJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public property Nest.SearchResponse<T>.ApiCall** *Visibility was changed from public to protected (Breaking)* -**public class Nest.SimpleQueryStringFlagsJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.SourceFilterJsonConverter** *Visibility was changed from public to internal (Breaking)* -**public class Nest.TypeNameExtensions** *Visibility was changed from public to internal (Breaking)* -**public method Nest.AggregationsHelper..ctor** *Visibility was changed from public to protected (Breaking)* - -## Response properties should not have setters - -These properties had public setters which made no sense (readonly), impact low. - -**public property Nest.ClusterRerouteResponse.State** *Visibility changed (Breaking)* -**public property Nest.ClusterStatsResponse.ClusterName** *Visibility changed (Breaking)* -**public property Nest.ClusterStatsResponse.Indices** *Visibility changed (Breaking)* -**public property Nest.ClusterStatsResponse.Nodes** *Visibility changed (Breaking)* -**public property Nest.ClusterStatsResponse.Status** *Visibility changed (Breaking)* -**public property Nest.ClusterStatsResponse.Timestamp** *Visibility changed (Breaking)* -**public property Nest.FieldMapping.FullName** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.Density** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.DocCount** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.MaxDoc** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.MaxValue** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.MinValue** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.SumDocumentFrequency** *Visibility changed (Breaking)* -**public property Nest.FieldStatsField.SumTotalTermFrequency** *Visibility changed (Breaking)* -**public property Nest.FieldStatsResponse.Shards** *Visibility changed (Breaking)* -**public property Nest.GetSearchTemplateResponse.Template** *Visibility changed (Breaking)* -**public property Nest.HotThreadInformation.NodeId** *Visibility changed (Breaking)* -**public property Nest.HotThreadInformation.NodeName** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.ActivePrimaryShards** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.ActiveShards** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.InitializingShards** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.NumberOfReplicas** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.NumberOfShards** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.RelocatingShards** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.Status** *Visibility changed (Breaking)* -**public property Nest.IndexHealthStats.UnassignedShards** *Visibility changed (Breaking)* -**public property Nest.IndicesStatsResponse.Stats** *Visibility changed (Breaking)* -**public property Nest.PendingTask.InsertOrder** *Visibility changed (Breaking)* -**public property Nest.PendingTask.Priority** *Visibility changed (Breaking)* -**public property Nest.PendingTask.Source** *Visibility changed (Breaking)* -**public property Nest.PendingTask.TimeInQueue** *Visibility changed (Breaking)* -**public property Nest.PendingTask.TimeInQueueMilliseconds** *Visibility changed (Breaking)* -**public property Nest.PercolateCountResponse.Took** *Declaration changed (Breaking)* -**public property Nest.PercolatorMatch.Id** *Visibility changed (Breaking)* -**public property Nest.PercolatorMatch.Index** *Visibility changed (Breaking)* -**public property Nest.PercolatorMatch.Score** *Visibility changed (Breaking)* -**public property Nest.InstantGet<T>.Fields** *Visibility changed (Breaking)* -**public property Nest.SearchNode.Name** *Visibility changed (Breaking)* -**public property Nest.SearchNode.TransportAddress** *Visibility changed (Breaking)* -**public property Nest.SearchResponse<T>.Took** *Declaration changed (Breaking)* -**public property Nest.SearchShard.Index** *Visibility changed (Breaking)* -**public property Nest.SearchShard.Node** *Visibility changed (Breaking)* -**public property Nest.SearchShard.Primary** *Visibility changed (Breaking)* -**public property Nest.SearchShard.RelocatingNode** *Visibility changed (Breaking)* -**public property Nest.SearchShard.Shard** *Visibility changed (Breaking)* -**public property Nest.SearchShard.State** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.ActiveShards** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.InitializingShards** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.PrimaryActive** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.RelocatingShards** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.Status** *Visibility changed (Breaking)* -**public property Nest.ShardHealthStats.UnassignedShards** *Visibility changed (Breaking)* -**public property Nest.ShardStore.Allocation** *Visibility changed (Breaking)* -**public property Nest.ShardStore.Id** *Visibility changed (Breaking) -**public property Nest.ShardStore.Name** *Visibility changed (Breaking)* -**public property Nest.ShardStore.StoreException** *Visibility changed (Breaking)* -**public property Nest.ShardStore.TransportAddress** *Visibility changed (Breaking)* -**public property Nest.ShardStoreException.Reason** *Visibility changed (Breaking)* -**public property Nest.ShardStoreException.Type** *Visibility changed (Breaking)* -**public property Nest.UpgradeResponse.Shards** *Visibility changed (Breaking)* -**public property Nest.UpgradeStatusResponse.SizeInBytes** *Visibility changed (Breaking)* -**public property Nest.UpgradeStatusResponse.SizeToUpgradeAncientInBytes** *Visibility changed (Breaking)* -**public property Nest.UpgradeStatusResponse.SizeToUpgradeInBytes** *Visibility changed (Breaking)* - - -## Setters on interfaces - -**public property Nest.IClusterRerouteResponse.State** *Declaration changed (Breaking)* -**public property Nest.IClusterStatsResponse.ClusterName** *Declaration changed (Breaking)* -**public property Nest.IClusterStatsResponse.Indices** *Declaration changed (Breaking)* -**public property Nest.IClusterStatsResponse.Nodes** *Declaration changed (Breaking)* -**public property Nest.IClusterStatsResponse.Status** *Declaration changed (Breaking)* -**public property Nest.IClusterStatsResponse.Timestamp** *Declaration changed (Breaking)* -**public property Nest.IFieldStatsResponse.Shards** *Declaration changed (Breaking)* -**public property Nest.IGetSearchTemplateResponse.Template** *Declaration changed (Breaking)* -**public property Nest.IUpgradeStatusResponse.SizeInBytes** *Declaration changed (Breaking)* -**public property Nest.IUpgradeStatusResponse.SizeToUpgradeAncientInBytes** *Declaration changed (Breaking)* -**public property Nest.IUpgradeStatusResponse.SizeToUpgradeInBytes** *Declaration changed (Breaking)* -**public property Nest.IUpgradeResponse.Shards** *Declaration changed (Breaking)* - -## No Id type on response - -Several response properties were of type `Id` which is not all that useful to consumers. Now `string`. - -**public property Nest.ExecuteWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.GetWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.IExecuteWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.IGetWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.IndexActionResult.Id** *Declaration changed (Breaking)* -**public property Nest.IndexActionResultIndexResponse.Id** *Declaration changed (Breaking)* -**public property Nest.IPutWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.PutWatchResponse.Id** *Declaration changed (Breaking)* -**public property Nest.WatchRecord.WatchId** *Declaration changed (Breaking)* -**public property Nest.WatchRecordQueuedStats.WatchId** *Declaration changed (Breaking)* -**public property Nest.WatchRecordQueuedStats.WatchRecordId** *Declaration changed (Breaking)* - -## Methods taking Field as string - -Some methods were taking a Field as string which should take `Field` instead. impact minimal since string still -implicitly converts to `Field` - -**public method Nest.Field.And** *Declaration changed (Breaking)* -**public method Nest.GeoDistanceAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.GeoHashGridAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.HistogramAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.InnerHitsDescriptor<T>.FielddataFields** *Declaration changed (Breaking)* -**public method Nest.IpRangeAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.MetricAggregationDescriptorBase<TMetricAggregation, TMetricAggregationInterface, T>.Field** *Declaration changed (Breaking)* -**public method Nest.MissingAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.NestedAggregationDescriptor<T>.Path** *Declaration changed (Breaking)* -**public method Nest.DateHistogramAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.DateRangeAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.DecayFunctionDescriptorBase<TDescriptor, TOrigin, TScale, T>.Field** *Declaration changed (Breaking)* -**public method Nest.Query<T>.Prefix** *Declaration changed (Breaking)* -**public method Nest.Query<T>.Term** *Declaration changed (Breaking)* -**public method Nest.Query<T>.Wildcard** *Declaration changed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Prefix** *Declaration changed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Term** *Declaration changed (Breaking)* -**public method Nest.QueryContainerDescriptor<T>.Wildcard** *Declaration changed (Breaking)* -**public method Nest.RangeAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.SignificantTermsAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.TermsAggregationDescriptor<T>.Field** *Declaration changed (Breaking)* -**public method Nest.ReverseNestedAggregationDescriptor<T>.Path** *Declaration changed (Breaking)* - - -## Norms now takes a boolean instead of an object - -See: https://github.com/elastic/elasticsearch-net/issues/2004 - -**public method Nest.GenericPropertyDescriptor<T>.Norms** *Declaration changed (Breaking)* - -2.x: `public GenericPropertyDescriptor Norms(Func selector)` -5.x: `public GenericPropertyDescriptor Norms(bool enabled = True)` - -**public property Nest.GenericProperty.Norms** *Declaration changed (Breaking)* - -2.x: `public INorms Norms { get; set; }` -5.x: `public bool? Norms { get; set; }` - -**public property Nest.IGenericProperty.Norms** *Declaration changed (Breaking)* -**public property Nest.IStringProperty.Norms** *Declaration changed (Breaking)* -**public property Nest.StringProperty.Norms** *Declaration changed (Breaking)* -**public method Nest.StringPropertyDescriptor<T>.Norms** *Declaration changed (Breaking)* -**public interface Nest.INorms** *Removed (Breaking)* -**public class Nest.Norms** *Removed (Breaking)* -**public class Nest.NormsDescriptor** *Removed (Breaking)* -**public enum Nest.NormsLoading** *Removed (Breaking)* - -## Score is now nullable on hit - -See: https://github.com/elastic/elasticsearch-net/pull/2365 - -**public property Nest.Hit<T>.Score** *Declaration changed (Breaking)* -**public property Nest.IHit<T>.Score** *Declaration changed (Breaking)* - -## Can now take multiple rescores - -2.x can as well but in 5.x we do it in a straightforward way without custom json converters. - -**public property Nest.SearchRequest<T>.Rescore** *Declaration changed (Breaking)* -**public property Nest.SearchRequest.Rescore** *Declaration changed (Breaking)* -**public property Nest.ISearchRequest.Rescore** *Declaration changed (Breaking)* - -2.x: `public IRescore Rescore { get; set; }` -5.x: `public IList Rescore { get; set; }` - -**public method Nest.SearchDescriptor<T>.Rescore** *Declaration changed (Breaking)* - -2.x: `public SearchDescriptor Rescore(Func, IRescore> rescoreSelector)` -5.x: `public SearchDescriptor Rescore(Func, IPromise>> rescoreSelector)` - -**public class Nest.MultiRescore** *Removed (Breaking)* -**public class Nest.RescoreConverter** *Removed (Breaking)* - -## Retries on reindex task status now object - -Used to return only long, now tells you how bulk and search retries were necessary - -**public property Nest.IReindexOnServerResponse.Retries** *Declaration changed (Breaking)* -**public property Nest.IUpdateByQueryResponse.Retries** *Declaration changed (Breaking)* -**public property Nest.ReindexOnServerResponse.Retries** *Declaration changed (Breaking)* -**public property Nest.ReindexStatus.Retries** *Declaration changed (Breaking)* -**public property Nest.UpdateByQueryResponse.Retries** *Declaration changed (Breaking)* - -2.x: `public long Retries { get; internal set; }` -5.x: `public Retries Retries { get; internal set; }` - - -## Took should always be a long - -**public property Nest.BulkResponse.Took** *Declaration changed (Breaking)* - -2.x -```csharp -[ObsoleteAttribute("returned value may be larger than int. In this case, value will be int.MaxValue and TookAsLong field can be checked. Took is long in 5.0.0")] -[JsonIgnoreAttribute] -public int Took { get; } -``` - -5.x -```csharp -[JsonPropertyAttribute("took")] -public long Took { get; internal set; } -``` - -**public property Nest.IBulkResponse.Took** *Declaration changed (Breaking)* -**public property Nest.IPercolateCountResponse.Took** *Declaration changed (Breaking)* -**public property Nest.ISearchResponse<T>.Took** *Declaration changed (Breaking)* -**public property Nest.TermVectorsResponse.Took** *Declaration changed (Breaking)* - -also the hacks from 2.x have been removed - -**public property Nest.BulkResponse.TookAsLong** *Removed (Breaking)* -**public property Nest.IBulkResponse.TookAsLong** *Removed (Breaking)* -**public property Nest.IPercolateCountResponse.TookAsLong** *Removed (Breaking)* -**public property Nest.ISearchResponse<T>.TookAsLong** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.TookAsLong** *Removed (Breaking)* -**public property Nest.PercolateCountResponse.TookAsLong** *Removed (Breaking)* -**public property Nest.SearchResponse<T>.TookAsLong** *Removed (Breaking)* -**public property Nest.TermVectorsResponse.TookAsLong** *Removed (Breaking)* - - -## Allow source filter to send false - -In NEST 2.x we would always send Source.Exclude as `_source: { exclude: [""] }` in 5.x the we use a union of `bool` -`ISourceFiler` so NEST can send and recieve `_source: false`. Which should short circuit some routines on the server - -See also: https://github.com/elastic/elasticsearch-net/pull/2200 - -**public property Nest.InnerHits.Source** *Declaration changed (Breaking)* - -2.x: `public ISourceFilter Source { get; set; }` -5.x: `public Union Source { get; set; }` - -**public property Nest.IInnerHits.Source** *Declaration changed (Breaking)* -**public property Nest.ISearchRequest.Source** *Declaration changed (Breaking)* -**public property Nest.ITopHitsAggregation.Source** *Declaration changed (Breaking)* -**public property Nest.SearchRequest.Source** *Declaration changed (Breaking)* -**public property Nest.SearchRequest<T>.Source** *Declaration changed (Breaking)* -**public property Nest.TopHitsAggregation.Source** *Declaration changed (Breaking)* - -`Exclude` and `Include` are now plural on `ISourceFilter` in line with the change in Elasticsearch 5.0 - -**public property Nest.SourceFilter.Disable** *Removed (Breaking)* -**public property Nest.SourceFilter.Exclude** *Removed (Breaking)* -**public property Nest.SourceFilter.Include** *Removed (Breaking)* -**public method Nest.SourceFilterDescriptor<T>.Disable** *Removed (Breaking)* -**public method Nest.SourceFilterDescriptor<T>.Exclude** *Removed (Breaking)* -**public method Nest.SourceFilterDescriptor<T>.Include** *Removed (Breaking)* -**public property Nest.ISourceFilter.Disable** *Removed (Breaking)* -**public property Nest.ISourceFilter.Exclude** *Removed (Breaking)* -**public property Nest.ISourceFilter.Include** *Removed (Breaking)* - -## Bulk index failure now returns its metadata - -**public property Nest.BulkIndexByScrollFailure.Cause** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonPropertyAttribute("cause")] -public Throwable Cause { get; internal set; } -``` - -5.x -```csharp -[JsonPropertyAttribute("cause")] -public BulkIndexFailureCause Cause { get; set; } -``` - -## GetAliases API removed - -GetAlias API now returns `GetAlias*` named types not `GetAliases*` - -**public class Nest.GetAliasesDescriptor** *Removed (Breaking)* -**public class Nest.GetAliasesRequest** *Removed (Breaking)* -**public class Nest.GetAliasesResponse** *Removed (Breaking)* -**public interface Nest.IGetAliasesRequest** *Removed (Breaking)* -**public interface Nest.IGetAliasesResponse** *Removed (Breaking)* -**public method Nest.ElasticClient.GetAliases** *Removed (Breaking)* -**public method Nest.ElasticClient.GetAliases** *Removed (Breaking)* -**public method Nest.ElasticClient.GetAliasesAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.GetAliasesAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.GetAliases** *Removed (Breaking)* -**public method Nest.IElasticClient.GetAliases** *Removed (Breaking)* -**public method Nest.IElasticClient.GetAliasesAsync** *Removed (Breaking)* - -**public method Nest.ElasticClient.GetAlias** *Declaration changed (Breaking)* - -2.x: `public IGetAliasesResponse GetAlias(IGetAliasRequest request)` -5.x: `public IGetAliasResponse GetAlias(IGetAliasRequest request)` - -**public method Nest.ElasticClient.GetAlias** *Declaration changed (Breaking)* -**public method Nest.IElasticClient.GetAlias** *Declaration changed (Breaking)* -**public method Nest.IElasticClient.GetAlias** *Declaration changed (Breaking)* - -## Suggest is bound over T - -See: https://github.com/elastic/elasticsearch-net/pull/2370 - -**public method Nest.IElasticClient.Suggest<T>** *Declaration changed (Breaking)* - -2.x: `public ISuggestResponse Suggest(Func, ISuggestRequest> selector)` -5.x: `public ISuggestResponse Suggest(Func, ISuggestRequest> selector)` - -## IElasticClient changes - -Make sure all methods favor types over strings - -**public method Nest.DeleteManyExtensions.DeleteMany<T>** *Declaration changed (Breaking)* - -2.x -```csharp -public static IBulkResponse DeleteMany(IElasticClient client, IEnumerable objects, string index, string type) -``` - -5.x -```csharp -public static IBulkResponse DeleteMany(IElasticClient client, IEnumerable objects, IndexName index, TypeName type) -``` - -**public method Nest.GetManyExtensions.GetMany<T>** *Declaration changed (Breaking)* - -2.x -```csharp -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, string index, string type) -``` - -5.x -```csharp -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, IndexName index, TypeName type) -``` - -**public method Nest.GetManyExtensions.GetMany<T>** *Declaration changed (Breaking)* - -2.x -```csharp -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, string index, string type) -``` - -5.x -```csharp -public static IEnumerable> GetMany(IElasticClient client, IEnumerable ids, IndexName index, TypeName type) -``` - -**public method Nest.IElasticClient.DeleteByQuery<T>** *Declaration changed (Breaking)* - -2.x: `public IDeleteByQueryResponse DeleteByQuery(Indices indices, Types types, Func, IDeleteByQueryRequest> selector)` -5.x: `public IDeleteByQueryResponse DeleteByQuery(Func, IDeleteByQueryRequest> selector)` - - -**public method Nest.IndexManyExtensions.IndexMany<T>** *Declaration changed (Breaking)* - -2.x -```csharp -public static IBulkResponse IndexMany(IElasticClient client, IEnumerable objects, string index, string type) -``` - -5.x -```csharp -public static IBulkResponse IndexMany(IElasticClient client, IEnumerable objects, IndexName index, TypeName type) -``` - -**public method Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAlias** *Declaration changed (Breaking)* - -2.x -```csharp -public static IList GetIndicesPointingToAlias(IElasticClient client, string aliasName) -``` - -5.x -```csharp -public static IEnumerable GetIndicesPointingToAlias(IElasticClient client, Names alias) -``` - -**public method Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAliasAsync** *Declaration changed (Breaking)* - -2.x -```csharp -public static Task> GetIndicesPointingToAliasAsync(IElasticClient client, string aliasName) -``` - -5.x -```csharp -public static Task> GetIndicesPointingToAliasAsync(IElasticClient client, Names alias) -``` - -**public method Nest.ElasticClient.DeleteByQuery<T>** *Declaration changed (Breaking)* - -2.x: `public IDeleteByQueryResponse DeleteByQuery(Indices indices, Types types, Func, IDeleteByQueryRequest> selector)` -5.x: `public IDeleteByQueryResponse DeleteByQuery(Func, IDeleteByQueryRequest> selector)` - -## Enum Changes - -Impact low - -**public enum Nest.LicenseStatus** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum LicenseStatus -{ -     Active = 0, -     Invalid = 1, -     Expired = 2 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum LicenseStatus -{ -     Active = 0, -     Valid = 1, -     Invalid = 2, -     Expired = 3 -} -``` - -**public enum Nest.NestedScoreMode** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NestedScoreMode -{ -     Average = 0, -     Total = 1, -     Min = 2, -     Max = 3, -     None = 4 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NestedScoreMode -{ -     Average = 0, -     Sum = 1, -     Min = 2, -     Max = 3, -     None = 4 -} -``` - -**public enum Nest.NumberType** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumberType -{ -     Default = 0, -     Float = 1, -     Double = 2, -     Integer = 3, -     Long = 4, -     Short = 5, -     Byte = 6 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumberType -{ -     Float = 0, -     HalfFloat = 1, -     ScaledFloat = 2, -     Double = 3, -     Integer = 4, -     Long = 5, -     Short = 6, -     Byte = 7 -} -``` - -**public enum Nest.NumericFielddataFormat** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumericFielddataFormat -{ -     Array = 0, -     DocValues = 1, -     Disabled = 2 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum NumericFielddataFormat -{ -     Array = 0, -     Disabled = 1 -} -``` - -**public enum Nest.ScoreMode** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum ScoreMode -{ -     Average = 0, -     First = 1, -     Max = 2, -     Min = 3, -     Multiply = 4, -     Total = 5, -     Sum = 6 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum ScoreMode -{ -     Average = 0, -     Max = 1, -     Min = 2, -     Multiply = 3, -     Total = 4 -} -``` - -**public enum Nest.SimilarityOption** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum SimilarityOption -{ -     Default = 0, -     BM25 = 1 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum SimilarityOption -{ -     Classic = 0, -     BM25 = 1 -} -``` - -**public enum Nest.StringFielddataFormat** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum StringFielddataFormat -{ -     PagedBytes = 0, -     DocValues = 1, -     Disabled = 2 -} -``` - -5.x -```csharp -[JsonConverterAttribute(Newtonsoft.Json.Converters.StringEnumConverter)] -public enum StringFielddataFormat -{ -     PagedBytes = 0, -     Disabled = 1 -} -``` - - - -## Uncategorized - -Misc. changes that are yet to be categorized. Please open an issue if you are bit by these and feel it -warrants an explanation. - -**public method Nest.DeleteByQueryDescriptor<T>.Routing** *Declaration changed (Breaking)* - -2.x: `public DeleteByQueryDescriptor Routing(string routing)` -5.x: `public DeleteByQueryDescriptor Routing(String[] routing)` - -**public property Nest.DeleteByQueryRequest.Routing** *Declaration changed (Breaking)* - -2.x: `public string Routing { get; set; }` -5.x: `public String[] Routing { get; set; }` - -**public property Nest.DeleteByQueryRequest<T>.Routing** *Declaration changed (Breaking)* - -2.x: `public string Routing { get; set; }` -5.x: `public String[] Routing { get; set; }` - -**public method Nest.Field..ctor** *Declaration changed (Breaking)* - -2.x: `public .ctor()` -5.x: `public .ctor(string name, double? boost)` - -**public method Nest.Field.And<T>** *Declaration changed (Breaking)* - -2.x: `public Fields And(Expression> field)` -5.x: `public Fields And(Expression> field, double? boost)` - -**public property Nest.Field.Expression** *Declaration changed (Breaking)* - -2.x: `public Expression Expression { get; set; }` -5.x: `public Expression Expression { get; }` - -**public property Nest.Field.Name** *Declaration changed (Breaking)* - -2.x: `public string Name { get; set; }` -5.x: `public string Name { get; }` - -**public property Nest.Field.Property** *Declaration changed (Breaking)* - -2.x: `public PropertyInfo Property { get; set; }` -5.x: `public PropertyInfo Property { get; }` - -**public class Nest.GeoShapeQueryDescriptorBase<TDescriptor, TInterface, T>** *Declaration changed (Breaking)* - -2.x: `public abstract class GeoShapeQueryDescriptorBase : FieldNameQueryDescriptorBase, IDescriptor, IQuery, IFieldNameQuery, IGeoShapeQuery where TDescriptor : FieldNameQueryDescriptorBase, TInterface where TInterface : class, IGeoShapeQuery` -5.x: `public abstract class GeoShapeQueryDescriptorBase : FieldNameQueryDescriptorBase, IDescriptor, IQuery, IFieldNameQuery, IGeoShapeQuery where TDescriptor : GeoShapeQueryDescriptorBase, TInterface where TInterface : class, IGeoShapeQuery` - -**public property Nest.HighlightField.Type** *Declaration changed (Breaking)* - -2.x: `public Nullable Type { get; set; }` -5.x: `public Union Type { get; set; }` - -**public method Nest.HighlightFieldDescriptor<T>.PostTags** *Declaration changed (Breaking)* - -2.x: `public HighlightFieldDescriptor PostTags(string postTags)` -5.x: `public HighlightFieldDescriptor PostTags(String[] postTags)` - -**public method Nest.HighlightFieldDescriptor<T>.PreTags** *Declaration changed (Breaking)* - -2.x: `public HighlightFieldDescriptor PreTags(string preTags)` -5.x: `public HighlightFieldDescriptor PreTags(String[] preTags)` - -**public property Nest.IHighlightField.Type** *Declaration changed (Breaking)* - -2.x -```csharp -public Nullable Type { get; set; } -``` - -5.x -```csharp -[JsonPropertyAttribute("type")] -public Union Type { get; set; } -``` - -**public property Nest.IndexActionResultIndexResponse.Result** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonPropertyAttribute("result")] -public string Result { get; set; } -``` - -5.x -```csharp -[JsonPropertyAttribute("result")] -public Result Result { get; set; } -``` - - - -**public method Nest.PropertyName..ctor** *Declaration changed (Breaking)* - -2.x: `public .ctor()` -5.x: `public .ctor(string name)` - -**public property Nest.PropertyName.Expression** *Declaration changed (Breaking)* - -2.x: `public Expression Expression { get; set; }` -5.x: `public Expression Expression { get; }` - -**public property Nest.PropertyName.Name** *Declaration changed (Breaking)* - -2.x: `public string Name { get; set; }` -5.x: `public string Name { get; }` - -**public property Nest.PropertyName.Property** *Declaration changed (Breaking)* - -2.x: `public PropertyInfo Property { get; set; }` -5.x: `public PropertyInfo Property { get; }` - -**public method Nest.ReindexDescriptor<T>..ctor** *Declaration changed (Breaking)* - -2.x: `public .ctor(IndexName from, IndexName to)` -5.x: `public .ctor()` - -**public method Nest.ReindexObservable<T>.Subscribe** *Declaration changed (Breaking)* - -2.x: `public IDisposable Subscribe(IObserver> observer)` -5.x: `public IDisposable Subscribe(ReindexObserver observer)` - -**public method Nest.ReindexObserver<T>..ctor** *Declaration changed (Breaking)* - -2.x: `public .ctor(Action> onNext, Action onError, Action completed)` -5.x: `public .ctor(Action onNext, Action onError, Action onCompleted)` - -**public method Nest.ReindexOnServerDescriptor.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public ReindexOnServerDescriptor RequestsPerSecond(Single requests_per_second)` -5.x: `public ReindexOnServerDescriptor RequestsPerSecond(long requests_per_second)` - -**public property Nest.ReindexOnServerRequest.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public Single RequestsPerSecond { get; set; }` -5.x: `public long RequestsPerSecond { get; set; }` - -**public method Nest.ReindexRethrottleDescriptor.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public ReindexRethrottleDescriptor RequestsPerSecond(Single requests_per_second)` -5.x: `public ReindexRethrottleDescriptor RequestsPerSecond(long requests_per_second)` - -**public property Nest.ReindexRethrottleRequest.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public Single RequestsPerSecond { get; set; }` -5.x: `public long RequestsPerSecond { get; set; }` - -**public property Nest.Time.Milliseconds** *Declaration changed (Breaking)* - -2.x: `public double Milliseconds { get; private set; }` -5.x: `public double? Milliseconds { get; private set; }` - -**public method Nest.UpdateByQueryDescriptor<T>.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public UpdateByQueryDescriptor RequestsPerSecond(Single requests_per_second)` -5.x: `public UpdateByQueryDescriptor RequestsPerSecond(long requests_per_second)` - -**public property Nest.UpdateByQueryRequest.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public Single RequestsPerSecond { get; set; }` -5.x: `public long RequestsPerSecond { get; set; }` - -**public property Nest.UpdateByQueryRequest<T>.RequestsPerSecond** *Declaration changed (Breaking)* - -2.x: `public Single RequestsPerSecond { get; set; }` -5.x: `public long RequestsPerSecond { get; set; }` - -**public property Nest.Watch.Actions** *Declaration changed (Breaking)* - -2.x -```csharp -[JsonPropertyAttribute("actions")] -[JsonConverterAttribute(Nest.ActionsJsonConverter)] -public IDictionary Actions { get; internal set; } -``` - -5.x -```csharp -[JsonPropertyAttribute("actions")] -[JsonConverterAttribute(Nest.ActionsJsonConverter)] -public Actions Actions { get; internal set; } -``` - -# Read only data types on responses. - -Responses now favor `IReadOnlyDictionary` and `IReadOnlyCollection` which are initialized as empty. - -##Now IReadOnlyDictionary -**public property Nest.ActivationStatus.Actions** -**public property Nest.AggregationsHelper.Aggregations** -**public property Nest.AuthenticateResponse.Metadata** -**public property Nest.BucketAggregate.Meta** -**public property Nest.BucketAggregateBase.Meta** -**public property Nest.ClearCachedRealmsResponse.Nodes** -**public property Nest.ClearCachedRolesResponse.Nodes** -**public property Nest.ClusterGetSettingsResponse.Persistent** -**public property Nest.ClusterGetSettingsResponse.Transient** -**public property Nest.ClusterHealthResponse.Indices** -**public property Nest.ClusterPutSettingsResponse.Persistent** -**public property Nest.ClusterPutSettingsResponse.Transient** -**public property Nest.ClusterRerouteState.Nodes** -**public property Nest.ClusterStateResponse.Nodes** -**public property Nest.ExecutionResultInput.Payload** -**public property Nest.FieldMapping.Mapping** -**public property Nest.FieldStats.Fields** -**public property Nest.FieldStatsResponse.Indices** -**public property Nest.GetFieldMappingResponse.Indices** -**public property Nest.GetIndexResponse.Indices** -**public property Nest.GetIndexSettingsResponse.Indices** -**public property Nest.GetIndexTemplateResponse.TemplateMappings** -**public property Nest.GetMappingResponse.Mappings** -**public property Nest.GetRepositoryResponse.Repositories** -**public property Nest.GetRoleResponse.Roles** -**public property Nest.GetUserResponse.Users** -**public property Nest.Hit<T>.InnerHits** -**public property Nest.IAggregate.Meta** -**public property Nest.IAuthenticateResponse.Metadata** -**public property Nest.IClearCachedRealmsResponse.Nodes** -**public property Nest.IClearCachedRolesResponse.Nodes** -**public property Nest.IClusterGetSettingsResponse.Persistent** -**public property Nest.IClusterGetSettingsResponse.Transient** -**public property Nest.IClusterHealthResponse.Indices** -**public property Nest.IClusterPutSettingsResponse.Persistent** -**public property Nest.IClusterPutSettingsResponse.Transient** -**public property Nest.IClusterStateResponse.Nodes** -**public property Nest.IDictionaryResponse<TKey, TValue>.BackingDictionary** -**public property Nest.IFieldStatsResponse.Indices** -**public property Nest.IGetFieldMappingResponse.Indices** -**public property Nest.IGetIndexResponse.Indices** -**public property Nest.IGetIndexSettingsResponse.Indices** -**public property Nest.IGetIndexTemplateResponse.TemplateMappings** -**public property Nest.IGetMappingResponse.Mappings** -**public property Nest.IGetRepositoryResponse.Repositories** -**public property Nest.IGetRoleResponse.Roles** -**public property Nest.IGetUserResponse.Users** -**public property Nest.IHit<T>.InnerHits** -**public property Nest.IIndicesShardStoresResponse.Indices** -**public property Nest.IIndicesStatsResponse.Indices** -**public property Nest.IndexHealthStats.Shards** -**public property Nest.IndexingStats.Types** -**public property Nest.IndexRoutingTable.Shards** -**public property Nest.IndexSegment.Shards** -**public property Nest.IndicesShardStores.Shards** -**public property Nest.IndicesShardStoresResponse.Indices** -**public property Nest.IndicesStatsResponse.Indices** -**public property Nest.INodesInfoResponse.Nodes** -**public property Nest.INodesStatsResponse.Nodes** -**public property Nest.IRecoveryStatusResponse.Indices** -**public property Nest.IReindexRethrottleResponse.Nodes** -**public property Nest.ISearchResponse<T>.Aggregations** -**public property Nest.ISearchResponse<T>.Suggest** -**public property Nest.ISearchShardsResponse.Nodes** -**public property Nest.ISegmentsResponse.Indices** -**public property Nest.IUpgradeStatusResponse.Upgrades** -**public property Nest.IVerifyRepositoryResponse.Nodes** -**public property Nest.MetadataState.Indices** -**public property Nest.MetadataState.Templates** -**public property Nest.MetricAggregateBase.Meta** -**public property Nest.NodesInfoResponse.Nodes** -**public property Nest.NodesStatsResponse.Nodes** -**public property Nest.PercolatorMatch.Highlight** -**public property Nest.RecoveryStatusResponse.Indices** -**public property Nest.ReindexNode.Attributes** -**public property Nest.ReindexNode.Tasks** -**public property Nest.ReindexRethrottleResponse.Nodes** -**public property Nest.RoutingNodesState.Nodes** -**public property Nest.RoutingTableState.Indices** -**public property Nest.SearchResponse<T>.Aggregations** -**public property Nest.SearchResponse<T>.Suggest** -**public property Nest.SearchShardsResponse.Nodes** -**public property Nest.SegmentsResponse.Indices** -**public property Nest.ShardsSegment.Segments** -**public property Nest.ShardStore.Attributes** -**public property Nest.SnapshotIndexStats.Shards** -**public property Nest.SnapshotStatus.Indices** -**public property Nest.TaskExecutingNode.Tasks** -**public property Nest.TermVector.Terms** -**public property Nest.TermVectorsResponse.TermVectors** -**public property Nest.TypeFieldMappings.Mappings** -**public property Nest.UpgradeStatusResponse.Upgrades** -**public property Nest.VerifyRepositoryResponse.Nodes** -**public property Nest.Watch.Meta** -**public property Nest.WatchRecord.Metadata** -**public property Nest.WatchStatus.Actions** - - -##Now IReadOnlyCollection -**public property Nest.AnalyzeResponse.Tokens** -**public property Nest.AuthenticateResponse.Roles** -**public property Nest.BucketAggregate.Items** -**public property Nest.BulkResponse.Items** -**public property Nest.CatResponse<TCatRecord>.Records** -**public property Nest.ClusterJvm.Versions** -**public property Nest.ClusterNodesStats.Plugins** -**public property Nest.ClusterNodesStats.Versions** -**public property Nest.ClusterOperatingSystemStats.Names** -**public property Nest.ClusterPendingTasksResponse.Tasks** -**public property Nest.ClusterRerouteResponse.Explanations** -**public property Nest.Collector.Children** -**public property Nest.ExecutionResult.Actions** -**public property Nest.Explanation.Details** -**public property Nest.ExplanationDetail.Details** -**public property Nest.GetSnapshotResponse.Snapshots** -**public property Nest.GraphExploreResponse.Connections** -**public property Nest.GraphExploreResponse.Failures** -**public property Nest.GraphExploreResponse.Vertices** -**public property Nest.HighlightHit.Highlights** -**public property Nest.Hit<T>.MatchedQueries** -**public property Nest.Hit<T>.Sorts** -**public property Nest.HitsMetaData<T>.Hits** -**public property Nest.HotThreadInformation.Hosts** -**public property Nest.HotThreadInformation.Threads** -**public property Nest.IAnalyzeResponse.Tokens** -**public property Nest.IAuthenticateResponse.Roles** -**public property Nest.IBulkResponse.Items** -**public property Nest.ICatResponse<TCatRecord>.Records** -**public property Nest.IClusterPendingTasksResponse.Tasks** -**public property Nest.IClusterRerouteResponse.Explanations** -**public property Nest.IGetSnapshotResponse.Snapshots** -**public property Nest.IGraphExploreResponse.Connections** -**public property Nest.IGraphExploreResponse.Failures** -**public property Nest.IGraphExploreResponse.Vertices** -**public property Nest.IHit<T>.MatchedQueries** -**public property Nest.IHit<T>.Sorts** -**public property Nest.IMultiGetResponse.Documents** -**public property Nest.IMultiTermVectorsResponse.Documents** -**public property Nest.INodesHotThreadsResponse.HotThreads** -**public property Nest.IPercolateResponse.Matches** -**public property Nest.IReindexOnServerResponse.Failures** -**public property Nest.ISearchResponse<T>.Documents** -**public property Nest.ISearchResponse<T>.Fields** -**public property Nest.ISearchResponse<T>.Hits** -**public property Nest.ISearchShardsResponse.Shards** -**public property Nest.ISnapshotStatusResponse.Snapshots** -**public property Nest.IUpdateByQueryResponse.Failures** -**public property Nest.IValidateQueryResponse.Explanations** -**public property Nest.IWatcherStatsResponse.CurrentWatches** -**public property Nest.IWatcherStatsResponse.QueuedWatches** -**public property Nest.LicenseAcknowledgement.License** -**public property Nest.MultiBucketAggregate<TBucket>.Buckets** -**public property Nest.MultiGetResponse.Documents** -**public property Nest.MultiTermVectorsResponse.Documents** -**public property Nest.NodesHotThreadsResponse.HotThreads** -**public property Nest.PercolateResponse.Matches** -**public property Nest.Profile.Shards** -**public property Nest.RecoveryStatus.Shards** -**public property Nest.ReindexOnServerResponse.Failures** -**public property Nest.RoutingNodesState.Unassigned** -**public property Nest.SearchProfile.Collector** -**public property Nest.SearchProfile.Query** -**public property Nest.SearchResponse<T>.Documents** -**public property Nest.SearchResponse<T>.Fields** -**public property Nest.SearchResponse<T>.Hits** -**public property Nest.SearchShardsResponse.Shards** -**public property Nest.ShardProfile.Searches** -**public property Nest.ShardsMetaData.Failures** -**public property Nest.ShardStoreWrapper.Stores** -**public property Nest.Snapshot.Failures** -**public property Nest.Snapshot.Indices** -**public property Nest.SnapshotRestore.Indices** -**public property Nest.SnapshotStatusResponse.Snapshots** -**public property Nest.TermVectorTerm.Tokens** -**public method Nest.TopHitsAggregate.Documents<T>** -**public method Nest.TopHitsAggregate.Hits<T>** -**public property Nest.UpdateByQueryResponse.Failures** -**public property Nest.ValidateQueryResponse.Explanations** -**public property Nest.WatcherStatsResponse.CurrentWatches** -**public property Nest.WatcherStatsResponse.QueuedWatches** -**public property Nest.WatchRecord.Messages** - -#CancellationToken - -With NEST 2.x async methods, a cancellation tokens could be passed as part of the RequestConfiguration. This was not very discoverable and so each async method can now accept an optional cancellation token as an argument, making the API more async idiomatic. - -**Nest.BulkAllObservable<T>..ctor** -**Nest.DeleteManyExtensions.DeleteManyAsync<T>** -**Nest.ElasticClient.AcknowledgeWatchAsync** -**Nest.ElasticClient.AcknowledgeWatchAsync** -**Nest.ElasticClient.ActivateWatchAsync** -**Nest.ElasticClient.ActivateWatchAsync** -**Nest.ElasticClient.AliasAsync** -**Nest.ElasticClient.AliasAsync** -**Nest.ElasticClient.AliasExistsAsync** -**Nest.ElasticClient.AliasExistsAsync** -**Nest.ElasticClient.AnalyzeAsync** -**Nest.ElasticClient.AnalyzeAsync** -**Nest.ElasticClient.AuthenticateAsync** -**Nest.ElasticClient.AuthenticateAsync** -**Nest.ElasticClient.BulkAsync** -**Nest.ElasticClient.BulkAsync** -**Nest.ElasticClient.CatAliasesAsync** -**Nest.ElasticClient.CatAliasesAsync** -**Nest.ElasticClient.CatAllocationAsync** -**Nest.ElasticClient.CatAllocationAsync** -**Nest.ElasticClient.CatCountAsync** -**Nest.ElasticClient.CatCountAsync** -**Nest.ElasticClient.CatFielddataAsync** -**Nest.ElasticClient.CatFielddataAsync** -**Nest.ElasticClient.CatHealthAsync** -**Nest.ElasticClient.CatHealthAsync** -**Nest.ElasticClient.CatHelpAsync** -**Nest.ElasticClient.CatHelpAsync** -**Nest.ElasticClient.CatIndicesAsync** -**Nest.ElasticClient.CatIndicesAsync** -**Nest.ElasticClient.CatMasterAsync** -**Nest.ElasticClient.CatMasterAsync** -**Nest.ElasticClient.CatNodeAttributesAsync** -**Nest.ElasticClient.CatNodeAttributesAsync** -**Nest.ElasticClient.CatNodesAsync** -**Nest.ElasticClient.CatNodesAsync** -**Nest.ElasticClient.CatPendingTasksAsync** -**Nest.ElasticClient.CatPendingTasksAsync** -**Nest.ElasticClient.CatPluginsAsync** -**Nest.ElasticClient.CatPluginsAsync** -**Nest.ElasticClient.CatRecoveryAsync** -**Nest.ElasticClient.CatRecoveryAsync** -**Nest.ElasticClient.CatRepositoriesAsync** -**Nest.ElasticClient.CatRepositoriesAsync** -**Nest.ElasticClient.CatSegmentsAsync** -**Nest.ElasticClient.CatSegmentsAsync** -**Nest.ElasticClient.CatShardsAsync** -**Nest.ElasticClient.CatShardsAsync** -**Nest.ElasticClient.CatSnapshotsAsync** -**Nest.ElasticClient.CatSnapshotsAsync** -**Nest.ElasticClient.CatThreadPoolAsync** -**Nest.ElasticClient.CatThreadPoolAsync** -**Nest.ElasticClient.ClearCacheAsync** -**Nest.ElasticClient.ClearCacheAsync** -**Nest.ElasticClient.ClearCachedRealmsAsync** -**Nest.ElasticClient.ClearCachedRealmsAsync** -**Nest.ElasticClient.ClearCachedRolesAsync** -**Nest.ElasticClient.ClearCachedRolesAsync** -**Nest.ElasticClient.ClearScrollAsync** -**Nest.ElasticClient.ClearScrollAsync** -**Nest.ElasticClient.CloseIndexAsync** -**Nest.ElasticClient.CloseIndexAsync** -**Nest.ElasticClient.ClusterGetSettingsAsync** -**Nest.ElasticClient.ClusterGetSettingsAsync** -**Nest.ElasticClient.ClusterHealthAsync** -**Nest.ElasticClient.ClusterHealthAsync** -**Nest.ElasticClient.ClusterPendingTasksAsync** -**Nest.ElasticClient.ClusterPendingTasksAsync** -**Nest.ElasticClient.ClusterPutSettingsAsync** -**Nest.ElasticClient.ClusterPutSettingsAsync** -**Nest.ElasticClient.ClusterRerouteAsync** -**Nest.ElasticClient.ClusterRerouteAsync** -**Nest.ElasticClient.ClusterStateAsync** -**Nest.ElasticClient.ClusterStateAsync** -**Nest.ElasticClient.ClusterStatsAsync** -**Nest.ElasticClient.ClusterStatsAsync** -**Nest.ElasticClient.CountAsync<T>** -**Nest.ElasticClient.CountAsync<T>** -**Nest.ElasticClient.CreateIndexAsync** -**Nest.ElasticClient.CreateIndexAsync** -**Nest.ElasticClient.CreateRepositoryAsync** -**Nest.ElasticClient.CreateRepositoryAsync** -**Nest.ElasticClient.DeactivateWatchAsync** -**Nest.ElasticClient.DeactivateWatchAsync** -**Nest.ElasticClient.DeleteAliasAsync** -**Nest.ElasticClient.DeleteAliasAsync** -**Nest.ElasticClient.DeleteAsync** -**Nest.ElasticClient.DeleteAsync<T>** -**Nest.ElasticClient.DeleteByQueryAsync** -**Nest.ElasticClient.DeleteByQueryAsync<T>** -**Nest.ElasticClient.DeleteIndexAsync** -**Nest.ElasticClient.DeleteIndexAsync** -**Nest.ElasticClient.DeleteIndexTemplateAsync** -**Nest.ElasticClient.DeleteIndexTemplateAsync** -**Nest.ElasticClient.DeleteLicenseAsync** -**Nest.ElasticClient.DeleteLicenseAsync** -**Nest.ElasticClient.DeleteRepositoryAsync** -**Nest.ElasticClient.DeleteRepositoryAsync** -**Nest.ElasticClient.DeleteRoleAsync** -**Nest.ElasticClient.DeleteRoleAsync** -**Nest.ElasticClient.DeleteScriptAsync** -**Nest.ElasticClient.DeleteScriptAsync** -**Nest.ElasticClient.DeleteSearchTemplateAsync** -**Nest.ElasticClient.DeleteSearchTemplateAsync** -**Nest.ElasticClient.DeleteSnapshotAsync** -**Nest.ElasticClient.DeleteSnapshotAsync** -**Nest.ElasticClient.DeleteUserAsync** -**Nest.ElasticClient.DeleteUserAsync** -**Nest.ElasticClient.DeleteWatchAsync** -**Nest.ElasticClient.DeleteWatchAsync** -**Nest.ElasticClient.DocumentExistsAsync** -**Nest.ElasticClient.DocumentExistsAsync<T>** -**Nest.ElasticClient.ExecuteWatchAsync** -**Nest.ElasticClient.ExecuteWatchAsync** -**Nest.ElasticClient.ExplainAsync<T>** -**Nest.ElasticClient.ExplainAsync<T>** -**Nest.ElasticClient.FieldStatsAsync** -**Nest.ElasticClient.FieldStatsAsync** -**Nest.ElasticClient.FlushAsync** -**Nest.ElasticClient.FlushAsync** -**Nest.ElasticClient.ForceMergeAsync** -**Nest.ElasticClient.ForceMergeAsync** -**Nest.ElasticClient.GetAliasAsync** -**Nest.ElasticClient.GetAliasAsync** -**Nest.ElasticClient.GetAsync<T>** -**Nest.ElasticClient.GetAsync<T>** -**Nest.ElasticClient.GetFieldMappingAsync** -**Nest.ElasticClient.GetFieldMappingAsync<T>** -**Nest.ElasticClient.GetIndexAsync** -**Nest.ElasticClient.GetIndexAsync** -**Nest.ElasticClient.GetIndexSettingsAsync** -**Nest.ElasticClient.GetIndexSettingsAsync** -**Nest.ElasticClient.GetIndexTemplateAsync** -**Nest.ElasticClient.GetIndexTemplateAsync** -**Nest.ElasticClient.GetLicenseAsync** -**Nest.ElasticClient.GetLicenseAsync** -**Nest.ElasticClient.GetMappingAsync** -**Nest.ElasticClient.GetMappingAsync<T>** -**Nest.ElasticClient.GetRepositoryAsync** -**Nest.ElasticClient.GetRepositoryAsync** -**Nest.ElasticClient.GetRoleAsync** -**Nest.ElasticClient.GetRoleAsync** -**Nest.ElasticClient.GetScriptAsync** -**Nest.ElasticClient.GetScriptAsync** -**Nest.ElasticClient.GetSearchTemplateAsync** -**Nest.ElasticClient.GetSearchTemplateAsync** -**Nest.ElasticClient.GetSnapshotAsync** -**Nest.ElasticClient.GetSnapshotAsync** -**Nest.ElasticClient.GetUserAsync** -**Nest.ElasticClient.GetUserAsync** -**Nest.ElasticClient.GetWatchAsync** -**Nest.ElasticClient.GetWatchAsync** -**Nest.ElasticClient.GraphExploreAsync** -**Nest.ElasticClient.GraphExploreAsync<T>** -**Nest.ElasticClient.IndexAsync** -**Nest.ElasticClient.IndexAsync<T>** -**Nest.ElasticClient.IndexExistsAsync** -**Nest.ElasticClient.IndexExistsAsync** -**Nest.ElasticClient.IndexTemplateExistsAsync** -**Nest.ElasticClient.IndexTemplateExistsAsync** -**Nest.ElasticClient.IndicesShardStoresAsync** -**Nest.ElasticClient.IndicesShardStoresAsync** -**Nest.ElasticClient.IndicesStatsAsync** -**Nest.ElasticClient.IndicesStatsAsync** -**Nest.ElasticClient.MapAsync** -**Nest.ElasticClient.MapAsync<T>** -**Nest.ElasticClient.MultiGetAsync** -**Nest.ElasticClient.MultiGetAsync** -**Nest.ElasticClient.MultiPercolateAsync** -**Nest.ElasticClient.MultiPercolateAsync** -**Nest.ElasticClient.MultiSearchAsync** -**Nest.ElasticClient.MultiSearchAsync** -**Nest.ElasticClient.MultiTermVectorsAsync** -**Nest.ElasticClient.MultiTermVectorsAsync** -**Nest.ElasticClient.NodesHotThreadsAsync** -**Nest.ElasticClient.NodesHotThreadsAsync** -**Nest.ElasticClient.NodesInfoAsync** -**Nest.ElasticClient.NodesInfoAsync** -**Nest.ElasticClient.NodesStatsAsync** -**Nest.ElasticClient.NodesStatsAsync** -**Nest.ElasticClient.OpenIndexAsync** -**Nest.ElasticClient.OpenIndexAsync** -**Nest.ElasticClient.PercolateAsync<T>** -**Nest.ElasticClient.PercolateAsync<T>** -**Nest.ElasticClient.PercolateCountAsync<T>** -**Nest.ElasticClient.PercolateCountAsync<T>** -**Nest.ElasticClient.PingAsync** -**Nest.ElasticClient.PingAsync** -**Nest.ElasticClient.PostLicenseAsync** -**Nest.ElasticClient.PostLicenseAsync** -**Nest.ElasticClient.PutAliasAsync** -**Nest.ElasticClient.PutAliasAsync** -**Nest.ElasticClient.PutIndexTemplateAsync** -**Nest.ElasticClient.PutIndexTemplateAsync** -**Nest.ElasticClient.PutRoleAsync** -**Nest.ElasticClient.PutRoleAsync** -**Nest.ElasticClient.PutScriptAsync** -**Nest.ElasticClient.PutScriptAsync** -**Nest.ElasticClient.PutSearchTemplateAsync** -**Nest.ElasticClient.PutSearchTemplateAsync** -**Nest.ElasticClient.PutUserAsync** -**Nest.ElasticClient.PutUserAsync** -**Nest.ElasticClient.PutWatchAsync** -**Nest.ElasticClient.PutWatchAsync** -**Nest.ElasticClient.RecoveryStatusAsync** -**Nest.ElasticClient.RecoveryStatusAsync** -**Nest.ElasticClient.RefreshAsync** -**Nest.ElasticClient.RefreshAsync** -**Nest.ElasticClient.RegisterPercolatorAsync** -**Nest.ElasticClient.RegisterPercolatorAsync<T>** -**Nest.ElasticClient.Reindex<T>** -**Nest.ElasticClient.Reindex<T>** -**Nest.ElasticClient.ReindexOnServerAsync** -**Nest.ElasticClient.ReindexOnServerAsync** -**Nest.ElasticClient.RenderSearchTemplateAsync** -**Nest.ElasticClient.RenderSearchTemplateAsync** -**Nest.ElasticClient.RestartWatcherAsync** -**Nest.ElasticClient.RestartWatcherAsync** -**Nest.ElasticClient.RestoreAsync** -**Nest.ElasticClient.RestoreAsync** -**Nest.ElasticClient.RethrottleAsync** -**Nest.ElasticClient.RethrottleAsync** -**Nest.ElasticClient.RootNodeInfoAsync** -**Nest.ElasticClient.RootNodeInfoAsync** -**Nest.ElasticClient.ScrollAsync<T>** -**Nest.ElasticClient.ScrollAsync<T>** -**Nest.ElasticClient.SearchAsync<T, TResult>** -**Nest.ElasticClient.SearchAsync<T, TResult>** -**Nest.ElasticClient.SearchAsync<T>** -**Nest.ElasticClient.SearchAsync<T>** -**Nest.ElasticClient.SearchShardsAsync** -**Nest.ElasticClient.SearchShardsAsync<T>** -**Nest.ElasticClient.SearchTemplateAsync<T, TResult>** -**Nest.ElasticClient.SearchTemplateAsync<T, TResult>** -**Nest.ElasticClient.SearchTemplateAsync<T>** -**Nest.ElasticClient.SearchTemplateAsync<T>** -**Nest.ElasticClient.SegmentsAsync** -**Nest.ElasticClient.SegmentsAsync** -**Nest.ElasticClient.SnapshotAsync** -**Nest.ElasticClient.SnapshotAsync** -**Nest.ElasticClient.SnapshotStatusAsync** -**Nest.ElasticClient.SnapshotStatusAsync** -**Nest.ElasticClient.SourceAsync<T>** -**Nest.ElasticClient.SourceAsync<T>** -**Nest.ElasticClient.StartWatcherAsync** -**Nest.ElasticClient.StartWatcherAsync** -**Nest.ElasticClient.StopWatcherAsync** -**Nest.ElasticClient.StopWatcherAsync** -**Nest.ElasticClient.SuggestAsync<T>** -**Nest.ElasticClient.SyncedFlushAsync** -**Nest.ElasticClient.SyncedFlushAsync** -**Nest.ElasticClient.TermVectorsAsync<T>** -**Nest.ElasticClient.TermVectorsAsync<T>** -**Nest.ElasticClient.TypeExistsAsync** -**Nest.ElasticClient.TypeExistsAsync** -**Nest.ElasticClient.UnregisterPercolatorAsync** -**Nest.ElasticClient.UnregisterPercolatorAsync<T>** -**Nest.ElasticClient.UpdateAsync<TDocument, TPartialDocument>** -**Nest.ElasticClient.UpdateAsync<TDocument, TPartialDocument>** -**Nest.ElasticClient.UpdateAsync<TDocument>** -**Nest.ElasticClient.UpdateAsync<TDocument>** -**Nest.ElasticClient.UpdateByQueryAsync** -**Nest.ElasticClient.UpdateByQueryAsync<T>** -**Nest.ElasticClient.UpdateIndexSettingsAsync** -**Nest.ElasticClient.UpdateIndexSettingsAsync** -**Nest.ElasticClient.UpgradeAsync** -**Nest.ElasticClient.UpgradeAsync** -**Nest.ElasticClient.UpgradeStatusAsync** -**Nest.ElasticClient.UpgradeStatusAsync** -**Nest.ElasticClient.ValidateQueryAsync** -**Nest.ElasticClient.ValidateQueryAsync<T>** -**Nest.ElasticClient.VerifyRepositoryAsync** -**Nest.ElasticClient.VerifyRepositoryAsync** -**Nest.ElasticClient.WatcherStatsAsync** -**Nest.ElasticClient.WatcherStatsAsync** -**Nest.GetManyExtensions.GetManyAsync<T>** -**Nest.GetManyExtensions.GetManyAsync<T>** -**Nest.IElasticClient.AcknowledgeWatchAsync** -**Nest.IElasticClient.AcknowledgeWatchAsync** -**Nest.IElasticClient.ActivateWatchAsync** -**Nest.IElasticClient.ActivateWatchAsync** -**Nest.IElasticClient.AliasAsync** -**Nest.IElasticClient.AliasAsync** -**Nest.IElasticClient.AliasExistsAsync** -**Nest.IElasticClient.AliasExistsAsync** -**Nest.IElasticClient.AnalyzeAsync** -**Nest.IElasticClient.AnalyzeAsync** -**Nest.IElasticClient.AuthenticateAsync** -**Nest.IElasticClient.AuthenticateAsync** -**Nest.IElasticClient.BulkAsync** -**Nest.IElasticClient.BulkAsync** -**Nest.IElasticClient.CatAliasesAsync** -**Nest.IElasticClient.CatAliasesAsync** -**Nest.IElasticClient.CatAllocationAsync** -**Nest.IElasticClient.CatAllocationAsync** -**Nest.IElasticClient.CatCountAsync** -**Nest.IElasticClient.CatCountAsync** -**Nest.IElasticClient.CatFielddataAsync** -**Nest.IElasticClient.CatFielddataAsync** -**Nest.IElasticClient.CatHealthAsync** -**Nest.IElasticClient.CatHealthAsync** -**Nest.IElasticClient.CatHelpAsync** -**Nest.IElasticClient.CatHelpAsync** -**Nest.IElasticClient.CatIndicesAsync** -**Nest.IElasticClient.CatIndicesAsync** -**Nest.IElasticClient.CatMasterAsync** -**Nest.IElasticClient.CatMasterAsync** -**Nest.IElasticClient.CatNodeAttributesAsync** -**Nest.IElasticClient.CatNodeAttributesAsync** -**Nest.IElasticClient.CatNodesAsync** -**Nest.IElasticClient.CatNodesAsync** -**Nest.IElasticClient.CatPendingTasksAsync** -**Nest.IElasticClient.CatPendingTasksAsync** -**Nest.IElasticClient.CatPluginsAsync** -**Nest.IElasticClient.CatPluginsAsync** -**Nest.IElasticClient.CatRecoveryAsync** -**Nest.IElasticClient.CatRecoveryAsync** -**Nest.IElasticClient.CatRepositoriesAsync** -**Nest.IElasticClient.CatRepositoriesAsync** -**Nest.IElasticClient.CatSegmentsAsync** -**Nest.IElasticClient.CatSegmentsAsync** -**Nest.IElasticClient.CatShardsAsync** -**Nest.IElasticClient.CatShardsAsync** -**Nest.IElasticClient.CatSnapshotsAsync** -**Nest.IElasticClient.CatSnapshotsAsync** -**Nest.IElasticClient.CatThreadPoolAsync** -**Nest.IElasticClient.CatThreadPoolAsync** -**Nest.IElasticClient.ClearCacheAsync** -**Nest.IElasticClient.ClearCacheAsync** -**Nest.IElasticClient.ClearCachedRealmsAsync** -**Nest.IElasticClient.ClearCachedRealmsAsync** -**Nest.IElasticClient.ClearCachedRolesAsync** -**Nest.IElasticClient.ClearCachedRolesAsync** -**Nest.IElasticClient.ClearScrollAsync** -**Nest.IElasticClient.ClearScrollAsync** -**Nest.IElasticClient.CloseIndexAsync** -**Nest.IElasticClient.CloseIndexAsync** -**Nest.IElasticClient.ClusterGetSettingsAsync** -**Nest.IElasticClient.ClusterGetSettingsAsync** -**Nest.IElasticClient.ClusterHealthAsync** -**Nest.IElasticClient.ClusterHealthAsync** -**Nest.IElasticClient.ClusterPendingTasksAsync** -**Nest.IElasticClient.ClusterPendingTasksAsync** -**Nest.IElasticClient.ClusterPutSettingsAsync** -**Nest.IElasticClient.ClusterPutSettingsAsync** -**Nest.IElasticClient.ClusterRerouteAsync** -**Nest.IElasticClient.ClusterRerouteAsync** -**Nest.IElasticClient.ClusterStateAsync** -**Nest.IElasticClient.ClusterStateAsync** -**Nest.IElasticClient.ClusterStatsAsync** -**Nest.IElasticClient.ClusterStatsAsync** -**Nest.IElasticClient.CountAsync<T>** -**Nest.IElasticClient.CountAsync<T>** -**Nest.IElasticClient.CreateIndexAsync** -**Nest.IElasticClient.CreateIndexAsync** -**Nest.IElasticClient.CreateRepositoryAsync** -**Nest.IElasticClient.CreateRepositoryAsync** -**Nest.IElasticClient.DeactivateWatchAsync** -**Nest.IElasticClient.DeactivateWatchAsync** -**Nest.IElasticClient.DeleteAliasAsync** -**Nest.IElasticClient.DeleteAliasAsync** -**Nest.IElasticClient.DeleteAsync** -**Nest.IElasticClient.DeleteAsync<T>** -**Nest.IElasticClient.DeleteByQueryAsync** -**Nest.IElasticClient.DeleteByQueryAsync<T>** -**Nest.IElasticClient.DeleteIndexAsync** -**Nest.IElasticClient.DeleteIndexAsync** -**Nest.IElasticClient.DeleteIndexTemplateAsync** -**Nest.IElasticClient.DeleteIndexTemplateAsync** -**Nest.IElasticClient.DeleteLicenseAsync** -**Nest.IElasticClient.DeleteLicenseAsync** -**Nest.IElasticClient.DeleteRepositoryAsync** -**Nest.IElasticClient.DeleteRepositoryAsync** -**Nest.IElasticClient.DeleteRoleAsync** -**Nest.IElasticClient.DeleteRoleAsync** -**Nest.IElasticClient.DeleteScriptAsync** -**Nest.IElasticClient.DeleteScriptAsync** -**Nest.IElasticClient.DeleteSearchTemplateAsync** -**Nest.IElasticClient.DeleteSearchTemplateAsync** -**Nest.IElasticClient.DeleteSnapshotAsync** -**Nest.IElasticClient.DeleteSnapshotAsync** -**Nest.IElasticClient.DeleteUserAsync** -**Nest.IElasticClient.DeleteUserAsync** -**Nest.IElasticClient.DeleteWatchAsync** -**Nest.IElasticClient.DeleteWatchAsync** -**Nest.IElasticClient.DocumentExistsAsync** -**Nest.IElasticClient.DocumentExistsAsync<T>** -**Nest.IElasticClient.ExecuteWatchAsync** -**Nest.IElasticClient.ExecuteWatchAsync** -**Nest.IElasticClient.ExplainAsync<T>** -**Nest.IElasticClient.ExplainAsync<T>** -**Nest.IElasticClient.FieldStatsAsync** -**Nest.IElasticClient.FieldStatsAsync** -**Nest.IElasticClient.FlushAsync** -**Nest.IElasticClient.FlushAsync** -**Nest.IElasticClient.ForceMergeAsync** -**Nest.IElasticClient.ForceMergeAsync** -**Nest.IElasticClient.GetAliasAsync** -**Nest.IElasticClient.GetAliasAsync** -**Nest.IElasticClient.GetAsync<T>** -**Nest.IElasticClient.GetAsync<T>** -**Nest.IElasticClient.GetFieldMappingAsync** -**Nest.IElasticClient.GetFieldMappingAsync<T>** -**Nest.IElasticClient.GetIndexAsync** -**Nest.IElasticClient.GetIndexAsync** -**Nest.IElasticClient.GetIndexSettingsAsync** -**Nest.IElasticClient.GetIndexSettingsAsync** -**Nest.IElasticClient.GetIndexTemplateAsync** -**Nest.IElasticClient.GetIndexTemplateAsync** -**Nest.IElasticClient.GetLicenseAsync** -**Nest.IElasticClient.GetLicenseAsync** -**Nest.IElasticClient.GetMappingAsync** -**Nest.IElasticClient.GetMappingAsync<T>** -**Nest.IElasticClient.GetRepositoryAsync** -**Nest.IElasticClient.GetRepositoryAsync** -**Nest.IElasticClient.GetRoleAsync** -**Nest.IElasticClient.GetRoleAsync** -**Nest.IElasticClient.GetScriptAsync** -**Nest.IElasticClient.GetScriptAsync** -**Nest.IElasticClient.GetSearchTemplateAsync** -**Nest.IElasticClient.GetSearchTemplateAsync** -**Nest.IElasticClient.GetSnapshotAsync** -**Nest.IElasticClient.GetSnapshotAsync** -**Nest.IElasticClient.GetUserAsync** -**Nest.IElasticClient.GetUserAsync** -**Nest.IElasticClient.GetWatchAsync** -**Nest.IElasticClient.GetWatchAsync** -**Nest.IElasticClient.GraphExploreAsync** -**Nest.IElasticClient.GraphExploreAsync<T>** -**Nest.IElasticClient.IndexAsync** -**Nest.IElasticClient.IndexAsync<T>** -**Nest.IElasticClient.IndexExistsAsync** -**Nest.IElasticClient.IndexExistsAsync** -**Nest.IElasticClient.IndexTemplateExistsAsync** -**Nest.IElasticClient.IndexTemplateExistsAsync** -**Nest.IElasticClient.IndicesShardStoresAsync** -**Nest.IElasticClient.IndicesShardStoresAsync** -**Nest.IElasticClient.IndicesStatsAsync** -**Nest.IElasticClient.IndicesStatsAsync** -**Nest.IElasticClient.MapAsync** -**Nest.IElasticClient.MapAsync<T>** -**Nest.IElasticClient.MultiGetAsync** -**Nest.IElasticClient.MultiGetAsync** -**Nest.IElasticClient.MultiPercolateAsync** -**Nest.IElasticClient.MultiPercolateAsync** -**Nest.IElasticClient.MultiSearchAsync** -**Nest.IElasticClient.MultiSearchAsync** -**Nest.IElasticClient.MultiTermVectorsAsync** -**Nest.IElasticClient.MultiTermVectorsAsync** -**Nest.IElasticClient.NodesHotThreadsAsync** -**Nest.IElasticClient.NodesHotThreadsAsync** -**Nest.IElasticClient.NodesInfoAsync** -**Nest.IElasticClient.NodesInfoAsync** -**Nest.IElasticClient.NodesStatsAsync** -**Nest.IElasticClient.NodesStatsAsync** -**Nest.IElasticClient.OpenIndexAsync** -**Nest.IElasticClient.OpenIndexAsync** -**Nest.IElasticClient.PercolateAsync<T>** -**Nest.IElasticClient.PercolateAsync<T>** -**Nest.IElasticClient.PercolateCountAsync<T>** -**Nest.IElasticClient.PercolateCountAsync<T>** -**Nest.IElasticClient.PingAsync** -**Nest.IElasticClient.PingAsync** -**Nest.IElasticClient.PostLicenseAsync** -**Nest.IElasticClient.PostLicenseAsync** -**Nest.IElasticClient.PutAliasAsync** -**Nest.IElasticClient.PutAliasAsync** -**Nest.IElasticClient.PutIndexTemplateAsync** -**Nest.IElasticClient.PutIndexTemplateAsync** -**Nest.IElasticClient.PutRoleAsync** -**Nest.IElasticClient.PutRoleAsync** -**Nest.IElasticClient.PutScriptAsync** -**Nest.IElasticClient.PutScriptAsync** -**Nest.IElasticClient.PutSearchTemplateAsync** -**Nest.IElasticClient.PutSearchTemplateAsync** -**Nest.IElasticClient.PutUserAsync** -**Nest.IElasticClient.PutUserAsync** -**Nest.IElasticClient.PutWatchAsync** -**Nest.IElasticClient.PutWatchAsync** -**Nest.IElasticClient.RecoveryStatusAsync** -**Nest.IElasticClient.RecoveryStatusAsync** -**Nest.IElasticClient.RefreshAsync** -**Nest.IElasticClient.RefreshAsync** -**Nest.IElasticClient.RegisterPercolatorAsync** -**Nest.IElasticClient.RegisterPercolatorAsync<T>** -**Nest.IElasticClient.Reindex<T>** -**Nest.IElasticClient.Reindex<T>** -**Nest.IElasticClient.ReindexOnServerAsync** -**Nest.IElasticClient.ReindexOnServerAsync** -**Nest.IElasticClient.RenderSearchTemplateAsync** -**Nest.IElasticClient.RenderSearchTemplateAsync** -**Nest.IElasticClient.RestartWatcherAsync** -**Nest.IElasticClient.RestartWatcherAsync** -**Nest.IElasticClient.RestoreAsync** -**Nest.IElasticClient.RestoreAsync** -**Nest.IElasticClient.RethrottleAsync** -**Nest.IElasticClient.RethrottleAsync** -**Nest.IElasticClient.RootNodeInfoAsync** -**Nest.IElasticClient.RootNodeInfoAsync** -**Nest.IElasticClient.ScrollAsync<T>** -**Nest.IElasticClient.ScrollAsync<T>** -**Nest.IElasticClient.SearchAsync<T, TResult>** -**Nest.IElasticClient.SearchAsync<T, TResult>** -**Nest.IElasticClient.SearchAsync<T>** -**Nest.IElasticClient.SearchAsync<T>** -**Nest.IElasticClient.SearchShardsAsync** -**Nest.IElasticClient.SearchShardsAsync<T>** -**Nest.IElasticClient.SearchTemplateAsync<T, TResult>** -**Nest.IElasticClient.SearchTemplateAsync<T, TResult>** -**Nest.IElasticClient.SearchTemplateAsync<T>** -**Nest.IElasticClient.SearchTemplateAsync<T>** -**Nest.IElasticClient.SegmentsAsync** -**Nest.IElasticClient.SegmentsAsync** -**Nest.IElasticClient.SnapshotAsync** -**Nest.IElasticClient.SnapshotAsync** -**Nest.IElasticClient.SnapshotStatusAsync** -**Nest.IElasticClient.SnapshotStatusAsync** -**Nest.IElasticClient.SourceAsync<T>** -**Nest.IElasticClient.SourceAsync<T>** -**Nest.IElasticClient.StartWatcherAsync** -**Nest.IElasticClient.StartWatcherAsync** -**Nest.IElasticClient.StopWatcherAsync** -**Nest.IElasticClient.StopWatcherAsync** -**Nest.IElasticClient.SuggestAsync<T>** -**Nest.IElasticClient.SyncedFlushAsync** -**Nest.IElasticClient.SyncedFlushAsync** -**Nest.IElasticClient.TermVectorsAsync<T>** -**Nest.IElasticClient.TermVectorsAsync<T>** -**Nest.IElasticClient.TypeExistsAsync** -**Nest.IElasticClient.TypeExistsAsync** -**Nest.IElasticClient.UnregisterPercolatorAsync** -**Nest.IElasticClient.UnregisterPercolatorAsync<T>** -**Nest.IElasticClient.UpdateAsync<TDocument, TPartialDocument>** -**Nest.IElasticClient.UpdateAsync<TDocument, TPartialDocument>** -**Nest.IElasticClient.UpdateAsync<TDocument>** -**Nest.IElasticClient.UpdateAsync<TDocument>** -**Nest.IElasticClient.UpdateByQueryAsync** -**Nest.IElasticClient.UpdateByQueryAsync<T>** -**Nest.IElasticClient.UpdateIndexSettingsAsync** -**Nest.IElasticClient.UpdateIndexSettingsAsync** -**Nest.IElasticClient.UpgradeAsync** -**Nest.IElasticClient.UpgradeAsync** -**Nest.IElasticClient.UpgradeStatusAsync** -**Nest.IElasticClient.UpgradeStatusAsync** -**Nest.IElasticClient.ValidateQueryAsync** -**Nest.IElasticClient.ValidateQueryAsync<T>** -**Nest.IElasticClient.VerifyRepositoryAsync** -**Nest.IElasticClient.VerifyRepositoryAsync** -**Nest.IElasticClient.WatcherStatsAsync** -**Nest.IElasticClient.WatcherStatsAsync** -**Nest.IHighLevelToLowLevelDispatcher.DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>** -**Nest.IHighLevelToLowLevelDispatcher.DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>** -**Nest.IndexManyExtensions.IndexManyAsync<T>** -**Nest.ReindexObservable<T>..ctor** -**Nest.SourceManyExtensions.SourceManyAsync<T>** -**Nest.SourceManyExtensions.SourceManyAsync<T>** - -# Removed in 5.0 after being obsoleted in 2.0 - - -These are the things we removed from 5.0 that we gave an advanced warning for in the latest 2.x release of NEST. - -We will make sure to another release of NEST 2.x that flags as many types/methods/properties that are going to be removed that we have not convered yet - - -**public property Nest.AnalyzeRequest.CharFilters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use CharFilter instead")] -public String[] CharFilters { get; set; } -``` - -**public property Nest.AnalyzeRequest.Filters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use Filter instead")] -public String[] Filters { get; set; } -``` - -**public method Nest.AttachmentPropertyDescriptor<T>.ContentLengthField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use ContentLengthField(Func, INumberProperty> selector)")] -public AttachmentPropertyDescriptor ContentLengthField(Func, IStringProperty> selector) -``` - -**public class Nest.CatNodeattrsDescriptor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use CatNodeAttributesDescriptor instead.")] -public class CatNodeattrsDescriptor : RequestDescriptorBase, IRequest, IRequest, IDescriptor, ICatNodeattrsRequest -``` - -**public class Nest.CatNodeattrsRequest** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use CatNodeAttributesRequest instead.")] -public class CatNodeattrsRequest : PlainRequestBase, IRequest, IRequest, ICatNodeattrsRequest -``` - -**public property Nest.DateAttribute.NumericResolution** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public NumericResolutionUnit NumericResolution { get; set; } -``` - -**public property Nest.DateAttribute.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } -``` - -**public property Nest.DateHistogramAggregation.Factor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -public int? Factor { get; set; } -``` - -**public method Nest.DateHistogramAggregationDescriptor<T>.Interval** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -public DateHistogramAggregationDescriptor Interval(int factor) -``` - -**public property Nest.DateProperty.NumericResolution** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public Nullable NumericResolution { get; set; } -``` - -**public method Nest.DatePropertyDescriptor<T>.NumericResolution** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public DatePropertyDescriptor NumericResolution(NumericResolutionUnit unit) -``` - -**public method Nest.DatePropertyDescriptor<T>.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public DatePropertyDescriptor PrecisionStep(int precisionStep) -``` - -**public property Nest.ElasticsearchPropertyAttributeBase.CustomSimilarity** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } -``` - -**public property Nest.ElasticsearchPropertyAttributeBase.IndexName** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public string IndexName { get; set; } -``` - -**public property Nest.EmailAction.AttachData** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public Union AttachData { get; set; } -``` - -**public method Nest.EmailActionDescriptor.AttachData** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public EmailActionDescriptor AttachData(DataAttachmentFormat format) -``` - -**public method Nest.EmailActionDescriptor.AttachData** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public EmailActionDescriptor AttachData(bool attach = True) -``` - -**public property Nest.GeoPointAttribute.GeoHash** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool GeoHash { get; set; } -``` - -**public property Nest.GeoPointAttribute.GeoHashPrecision** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int GeoHashPrecision { get; set; } -``` - -**public property Nest.GeoPointAttribute.GeoHashPrefix** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool GeoHashPrefix { get; set; } -``` - -**public property Nest.GeoPointAttribute.LatLon** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool LatLon { get; set; } -``` - -**public property Nest.GeoPointAttribute.Normalize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool Normalize { get; set; } -``` - -**public property Nest.GeoPointAttribute.NormalizeLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool NormalizeLatitude { get; set; } -``` - -**public property Nest.GeoPointAttribute.NormalizeLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool NormalizeLongitude { get; set; } -``` - -**public property Nest.GeoPointAttribute.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } -``` - -**public property Nest.GeoPointAttribute.Validate** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool Validate { get; set; } -``` - -**public property Nest.GeoPointAttribute.ValidateLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool ValidateLatitude { get; set; } -``` - -**public property Nest.GeoPointAttribute.ValidateLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool ValidateLongitude { get; set; } -``` - -**public property Nest.GeoPointProperty.Fielddata** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public IGeoPointFielddata Fielddata { get; set; } -``` - -**public property Nest.GeoPointProperty.GeoHash** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHash { get; set; } -``` - -**public property Nest.GeoPointProperty.GeoHashPrecision** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int? GeoHashPrecision { get; set; } -``` - -**public property Nest.GeoPointProperty.GeoHashPrefix** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHashPrefix { get; set; } -``` - -**public property Nest.GeoPointProperty.LatLon** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool? LatLon { get; set; } -``` - -**public property Nest.GeoPointProperty.Normalize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? Normalize { get; set; } -``` - -**public property Nest.GeoPointProperty.NormalizeLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLatitude { get; set; } -``` - -**public property Nest.GeoPointProperty.NormalizeLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLongitude { get; set; } -``` - -**public property Nest.GeoPointProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public property Nest.GeoPointProperty.Validate** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? Validate { get; set; } -``` - -**public property Nest.GeoPointProperty.ValidateLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLatitude { get; set; } -``` - -**public property Nest.GeoPointProperty.ValidateLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLongitude { get; set; } -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.Fielddata** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor Fielddata(Func selector) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.GeoHash** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHash(bool geoHash = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.GeoHashPrecision** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHashPrecision(int geoHashPrecision) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.GeoHashPrefix** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor GeoHashPrefix(bool geoHashPrefix = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.LatLon** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public GeoPointPropertyDescriptor LatLon(bool latLon = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.Normalize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor Normalize(bool normalize = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.NormalizeLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor NormalizeLatitude(bool normalizeLatitude = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.NormalizeLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor NormalizeLongitude(bool normalizeLongitude = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public GeoPointPropertyDescriptor PrecisionStep(int precisionStep) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.Validate** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor Validate(bool validate = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.ValidateLatitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor ValidateLatitude(bool validateLongitude = True) -``` - -**public method Nest.GeoPointPropertyDescriptor<T>.ValidateLongitude** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public GeoPointPropertyDescriptor ValidateLongitude(bool validateLatitude = True) -``` - -**public method Nest.GetAliasDescriptor.Alias** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Use Name instead")] -public GetAliasDescriptor Alias(string alias) -``` - -**public property Nest.GetAliasRequest.Alias** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Use the GetAliasRequest(Names name) constructor instead")] -public string Alias { get; set; } -``` - -**public property Nest.HighlightField.BoundaryMaxSize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use BoundaryMaxScan")] -public int? BoundaryMaxSize { get; set; } -``` - -**public method Nest.HighlightFieldDescriptor<T>.BoundaryMaxSize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use BoundaryMaxScan(int? boundaryMaxScan).")] -public HighlightFieldDescriptor BoundaryMaxSize(int? boundaryMaxSize) -``` - -**public property Nest.IAnalyzeRequest.CharFilters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use CharFilter instead")] -[JsonIgnoreAttribute] -public String[] CharFilters { get; set; } -``` - -**public property Nest.IAnalyzeRequest.Filters** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.4.0. Removed in 5.0.0. Use Filter instead")] -[JsonIgnoreAttribute] -public String[] Filters { get; set; } -``` - -**public interface Nest.ICatNodeattrsRequest** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use ICatNodeAttributesRequest instead.")] -[JsonObjectAttribute] -public interface ICatNodeattrsRequest : IRequest, IRequest -``` - -**public property Nest.IDateHistogramAggregation.Factor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Will be removed in the next major version")] -[JsonPropertyAttribute("factor")] -public int? Factor { get; set; } -``` - -**public property Nest.IDateProperty.NumericResolution** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("numeric_resolution")] -[ObsoleteAttribute("Removed in 5.0.0")] -public Nullable NumericResolution { get; set; } -``` - -**public property Nest.IDateProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public property Nest.IEmailAction.AttachData** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("attach_data")] -[ObsoleteAttribute("Deprecated in Watcher 2.3. Use Attachments to set Attachment data")] -public Union AttachData { get; set; } -``` - -**public property Nest.IGeoPointProperty.Fielddata** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("fielddata")] -[ObsoleteAttribute("Removed in 5.0.0")] -public IGeoPointFielddata Fielddata { get; set; } -``` - -**public property Nest.IGeoPointProperty.GeoHash** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("geohash")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHash { get; set; } -``` - -**public property Nest.IGeoPointProperty.GeoHashPrecision** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("geohash_precision")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public int? GeoHashPrecision { get; set; } -``` - -**public property Nest.IGeoPointProperty.GeoHashPrefix** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("geohash_prefix")] -[ObsoleteAttribute("Deprecated in 2.4.0 and Removed in 5.0.0")] -public bool? GeoHashPrefix { get; set; } -``` - -**public property Nest.IGeoPointProperty.LatLon** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("lat_lon")] -[ObsoleteAttribute("Deprecated in 2.3.0 and Removed in 5.0.0")] -public bool? LatLon { get; set; } -``` - -**public property Nest.IGeoPointProperty.Normalize** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("normalize")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? Normalize { get; set; } -``` - -**public property Nest.IGeoPointProperty.NormalizeLatitude** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("normalize_lat")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLatitude { get; set; } -``` - -**public property Nest.IGeoPointProperty.NormalizeLongitude** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("normalize_lon")] -[ObsoleteAttribute("Removed in 5.0.0")] -public bool? NormalizeLongitude { get; set; } -``` - -**public property Nest.IGeoPointProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public property Nest.IGeoPointProperty.Validate** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("validate")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? Validate { get; set; } -``` - -**public property Nest.IGeoPointProperty.ValidateLatitude** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("validate_lat")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLatitude { get; set; } -``` - -**public property Nest.IGeoPointProperty.ValidateLongitude** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("validate_lon")] -[ObsoleteAttribute("Removed in 5.0.0. Use IgnoreMalformed")] -public bool? ValidateLongitude { get; set; } -``` - -**public property Nest.IGetAliasRequest.Alias** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated. Use Name instead")] -[JsonIgnoreAttribute] -public string Alias { get; set; } -``` - -**public property Nest.IHighlightField.BoundaryMaxSize** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use BoundaryMaxScan")] -public int? BoundaryMaxSize { get; set; } -``` - -**public property Nest.IHighlightField.CustomType** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("type")] -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to make sure you can specify any custom highlighter type in 2.0.0. Removed in 5.0.0.")] -public string CustomType { get; set; } -``` - -**public property Nest.IIpProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public interface Nest.IMappingTransform** *Removed (Breaking)* - -```csharp -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.MappingTransform])] -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public interface IMappingTransform -``` - - -**public property Nest.INumberProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("precision_step")] -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public property Nest.IObjectProperty.Path** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("path")] -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } -``` - -**public property Nest.IpAttribute.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } -``` - -**public property Nest.IpProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public method Nest.IpPropertyDescriptor<T>.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public IpPropertyDescriptor PrecisionStep(int precisionStep) -``` - -**public property Nest.IProperty.CustomSimilarity** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("similarity")] -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } -``` - -**public property Nest.IProperty.IndexName** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("index_name")] -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public string IndexName { get; set; } -``` - -**public property Nest.IStringProperty.PositionOffsetGap** *Removed (Breaking)* - -```csharp -[JsonIgnoreAttribute] -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int? PositionOffsetGap { get; set; } -``` - -**public property Nest.ITermsQuery.DisableCoord** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public bool? DisableCoord { get; set; } -``` - -**public property Nest.ITermsQuery.MinimumShouldMatch** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public MinimumShouldMatch MinimumShouldMatch { get; set; } -``` - -**public property Nest.ITermVectorsResponse.Took** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("returned value may be larger than int. In this case, value will be int.MaxValue and TookAsLong field can be checked. Took is long in 5.0.0")] -public int Took { get; } -``` - -**public interface Nest.ITimestampField** *Removed (Breaking)* - -```csharp -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.TimestampField])] -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public interface ITimestampField : IFieldMapping -``` - -**public interface Nest.ITtlField** *Removed (Breaking)* - -```csharp -[JsonConverterAttribute(Nest.ReadAsTypeJsonConverter`1[Nest.TtlField])] -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public interface ITtlField : IFieldMapping -``` - -**public property Nest.ITypeMapping.TimestampField** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("_timestamp")] -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } -``` - -**public property Nest.ITypeMapping.Transform** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("transform")] -[JsonConverterAttribute(Nest.MappingTransformCollectionJsonConverter)] -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } -``` - -**public property Nest.ITypeMapping.TtlField** *Removed (Breaking)* - -```csharp -[JsonPropertyAttribute("_ttl")] -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } -``` - -**public class Nest.MappingTransform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransform : IMappingTransform -``` - -**public class Nest.MappingTransformDescriptor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransformDescriptor : DescriptorBase, IDescriptor, IMappingTransform -``` - -**public class Nest.MappingTransformsDescriptor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public class MappingTransformsDescriptor : DescriptorPromiseBase>, IDescriptor, IPromise> -``` - -**public property Nest.NumberAttribute.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int PrecisionStep { get; set; } -``` - -**public property Nest.NumberProperty.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public int? PrecisionStep { get; set; } -``` - -**public method Nest.NumberPropertyDescriptorBase<TDescriptor, TInterface, T>.PrecisionStep** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0")] -public TDescriptor PrecisionStep(int precisionStep) -``` - -**public property Nest.ObjectAttribute.Path** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } -``` - -**public property Nest.ObjectProperty.Path** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public string Path { get; set; } -``` - -**public method Nest.ObjectPropertyDescriptorBase<TDescriptor, TInterface, TParent, TChild>.Path** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 1.0.0 and Removed in 5.0.0. Use CopyTo instead.")] -public TDescriptor Path(string path) -``` - -**public property Nest.PropertyBase.CustomSimilarity** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("This is a temporary binary backwards compatible fix to allow named similarities in 2.0.0. Removed in 5.0.0")] -public string CustomSimilarity { get; set; } -``` - -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.IndexName** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 2.0.0. Use CopyTo instead.")] -public TDescriptor IndexName(string indexName) -``` - -**public method Nest.PutMappingDescriptor<T>.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public PutMappingDescriptor TimestampField(Func, ITimestampField> timestampFieldSelector) -``` - -**public method Nest.PutMappingDescriptor<T>.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public PutMappingDescriptor Transform(Func>> selector) -``` - -**public method Nest.PutMappingDescriptor<T>.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public PutMappingDescriptor Transform(IEnumerable transforms) -``` - -**public method Nest.PutMappingDescriptor<T>.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public PutMappingDescriptor TtlField(Func ttlFieldSelector) -``` - -**public property Nest.PutMappingRequest.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } -``` - -**public property Nest.PutMappingRequest.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } -``` - -**public property Nest.PutMappingRequest.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } -``` - -**public property Nest.PutMappingRequest<T>.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } -``` - -**public property Nest.PutMappingRequest<T>.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0. Removed in 5.0.0")] -public IList Transform { get; set; } -``` - -**public property Nest.PutMappingRequest<T>.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } -``` - -**public method Nest.Query<T>.Strict** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Strict() at the container level is a noop and must be set on each individual query.")] -public static QueryContainerDescriptor Strict(bool strict = True) -``` - -**public method Nest.QueryContainerDescriptor<T>.Strict** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Strict() at the container level does is a noop and must be set on each individual query.")] -public QueryContainerDescriptor Strict(bool strict = True) -``` - -**public method Nest.QueryContainerDescriptor<T>.Verbatim** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Setting Verbatim() at the container level is a noop and must be set on each individual query.")] -public QueryContainerDescriptor Verbatim(bool verbatim = True) -``` - -**public method Nest.QueryStringQueryDescriptor<T>.Fuziness** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use Fuzziness(Fuzziness fuzziness)")] -public QueryStringQueryDescriptor Fuziness(Fuzziness fuzziness) -``` - -**public property Nest.SearchResponse<T>.Highlights** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("This highlights by document id dictionary is the wrong abstraction in cases where a search can yield the same ids, for example, different types in the same index or a search across multiple indices. Removed in 5.0.0.")] -public HighlightDocumentDictionary Highlights { get; } -``` - -**public property Nest.StringAttribute.PositionOffsetGap** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int PositionOffsetGap { get; set; } -``` - -**public property Nest.StringProperty.PositionOffsetGap** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap instead.")] -public int? PositionOffsetGap { get; set; } -``` - -**public method Nest.StringPropertyDescriptor<T>.PositionOffsetGap** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Scheduled to be removed in 5.0.0. Use PositionIncrementGap() instead.")] -public StringPropertyDescriptor PositionOffsetGap(int positionOffsetGap) -``` - -**public method Nest.SuggestContextDescriptorBase<TDescriptor, TInterface, T>.Field** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use Path() instead.")] -public TDescriptor Field(Expression> objectPath) -``` - -**public method Nest.SuggestContextDescriptorBase<TDescriptor, TInterface, T>.Field** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use Path() instead.")] -public TDescriptor Field(Field field) -``` - -**public property Nest.TermsQuery.DisableCoord** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public bool? DisableCoord { get; set; } -``` - -**public property Nest.TermsQuery.MinimumShouldMatch** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public MinimumShouldMatch MinimumShouldMatch { get; set; } -``` - -**public method Nest.TermsQueryDescriptor<T>.DisableCoord** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public TermsQueryDescriptor DisableCoord(bool? disable = True) -``` - -**public method Nest.TermsQueryDescriptor<T>.MinimumShouldMatch** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Removed in 5.0.0. Use bool query instead")] -public TermsQueryDescriptor MinimumShouldMatch(MinimumShouldMatch minMatch) -``` - -**public class Nest.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public class TimestampField : ITimestampField, IFieldMapping -``` - -**public class Nest.TimestampFieldDescriptor<T>** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("use a normal date field and set its value explicitly")] -public class TimestampFieldDescriptor : DescriptorBase, ITimestampField>, IDescriptor, ITimestampField, IFieldMapping -``` - -**public class Nest.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public class TtlField : ITtlField, IFieldMapping -``` - -**public class Nest.TtlFieldDescriptor** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("will be replaced with a different implementation in a future version of Elasticsearch")] -public class TtlFieldDescriptor : DescriptorBase, IDescriptor, ITtlField, IFieldMapping -``` - -**public property Nest.TypeMapping.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public ITimestampField TimestampField { get; set; } -``` - -**public property Nest.TypeMapping.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public IList Transform { get; set; } -``` - -**public property Nest.TypeMapping.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public ITtlField TtlField { get; set; } -``` - -**public method Nest.TypeMappingDescriptor<T>.TimestampField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Use a normal date field and set its value explicitly")] -public TypeMappingDescriptor TimestampField(Func, ITimestampField> timestampFieldSelector) -``` - -**public method Nest.TypeMappingDescriptor<T>.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public TypeMappingDescriptor Transform(Func>> selector) -``` - -**public method Nest.TypeMappingDescriptor<T>.Transform** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Deprecated in 2.0.0 Removed in 5.0.0")] -public TypeMappingDescriptor Transform(IEnumerable transforms) -``` - -**public method Nest.TypeMappingDescriptor<T>.TtlField** *Removed (Breaking)* - -```csharp -[ObsoleteAttribute("Will be replaced with a different implementation in a future version of Elasticsearch")] -public TypeMappingDescriptor TtlField(Func ttlFieldSelector) -``` - -# Removed in 5.x - -This is the complete list of removed types, properties, methods. We will retro actively mark them as obsolete -in an upcomming `2.x` release and update this documentation. - -**public class Nest.AllocateClusterRerouteCommand** *Removed (Breaking)* -**public class Nest.AllocateClusterRerouteCommandDescriptor** *Removed (Breaking)* -**public class Nest.AttachData** *Removed (Breaking)* -**public property Nest.AttachmentProperty.FileField** *Removed (Breaking)* -**public method Nest.AttachmentPropertyDescriptor<T>.LanguageField** *Removed (Breaking)* -**public property Nest.BulkAllRequest<T>.Consistency** *Removed (Breaking)* -**public method Nest.BulkDescriptor.Consistency** *Removed (Breaking)* -**public property Nest.BulkIndexByScrollFailure.CausedBy** *Removed (Breaking)* -**public property Nest.BulkIndexByScrollFailure.Node** *Removed (Breaking)* -**public property Nest.BulkIndexByScrollFailure.Reason** *Removed (Breaking)* -**public property Nest.BulkIndexByScrollFailure.Shard** *Removed (Breaking)* -**public property Nest.BulkRequest.Consistency** *Removed (Breaking)* -**public method Nest.BulkUpdateDescriptor<TDocument, TPartialDocument>.Lang** *Removed (Breaking)* -**public method Nest.BulkUpdateDescriptor<TDocument, TPartialDocument>.Params** *Removed (Breaking)* -**public property Nest.BulkUpdateOperation<TDocument, TPartialDocument>.InferFrom** *Removed (Breaking)* -**public property Nest.CategorySuggestContext.Default** *Removed (Breaking)* -**public method Nest.CategorySuggestContextDescriptor<T>.Default** *Removed (Breaking)* -**public method Nest.CategorySuggestContextDescriptor<T>.Default** *Removed (Breaking)* -**public property Nest.CatFielddataRecord.FieldSizes** *Removed (Breaking)* -**public property Nest.CatFielddataRecord.Total** *Removed (Breaking)* -**public property Nest.CatNodesRecord.Host** *Removed (Breaking)* -**public property Nest.CatNodesRecord.Load** *Removed (Breaking)* -**public property Nest.CatRecoveryRecord.TotalTranslog** *Removed (Breaking)* -**public property Nest.CatRecoveryRecord.Translog** *Removed (Breaking)* -**public property Nest.CatRecoveryRecord.TranslogPercent** *Removed (Breaking)* -**public method Nest.ClusterHealthDescriptor.WaitForRelocatingShards** *Removed (Breaking)* -**public property Nest.ClusterHealthRequest.WaitForRelocatingShards** *Removed (Breaking)* -**public property Nest.ClusterIndicesStats.Percolate** *Removed (Breaking)* -**public property Nest.ClusterNodeCount.Client** *Removed (Breaking)* -**public property Nest.ClusterNodeCount.DataOnly** *Removed (Breaking)* -**public property Nest.ClusterNodeCount.MasterData** *Removed (Breaking)* -**public property Nest.ClusterNodeCount.MasterOnly** *Removed (Breaking)* -**public class Nest.ClusterOperatingSystemMemory** *Removed (Breaking)* -**public property Nest.ClusterOperatingSystemStats.Memory** *Removed (Breaking)* -**public method Nest.ClusterRerouteDescriptor.Allocate** *Removed (Breaking)* -**public property Nest.ClusterRerouteResponse.Version** *Removed (Breaking)* -**public property Nest.CompletionAttribute.Payloads** *Removed (Breaking)* -**public class Nest.CompletionField<TPayload>** *Removed (Breaking)* -**public property Nest.CompletionProperty.Context** *Removed (Breaking)* -**public property Nest.CompletionProperty.Payloads** *Removed (Breaking)* -**public method Nest.CompletionPropertyDescriptor<T>.Context** *Removed (Breaking)* -**public method Nest.CompletionPropertyDescriptor<T>.Payloads** *Removed (Breaking)* -**public property Nest.CompletionSuggester.Context** *Removed (Breaking)* -**public method Nest.CompletionSuggesterDescriptor<T>.Context** *Removed (Breaking)* -**public method Nest.CreateIndexDescriptor.Warmers** *Removed (Breaking)* -**public property Nest.CreateIndexRequest.Warmers** *Removed (Breaking)* -**public class Nest.DeleteByQueryIndicesResult** *Removed (Breaking)* -**public property Nest.DeleteByQueryResponse.Indices** *Removed (Breaking)* -**public method Nest.DeleteDescriptor<T>.Consistency** *Removed (Breaking)* -**public property Nest.DeleteRequest.Consistency** *Removed (Breaking)* -**public property Nest.DeleteRequest<T>.Consistency** *Removed (Breaking)* -**public method Nest.DeleteScriptDescriptor.Version** *Removed (Breaking)* -**public method Nest.DeleteScriptDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.DeleteScriptRequest.Version** *Removed (Breaking)* -**public property Nest.DeleteScriptRequest.VersionType** *Removed (Breaking)* -**public method Nest.DeleteSearchTemplateDescriptor.Version** *Removed (Breaking)* -**public method Nest.DeleteSearchTemplateDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.DeleteSearchTemplateRequest.Version** *Removed (Breaking)* -**public property Nest.DeleteSearchTemplateRequest.VersionType** *Removed (Breaking)* -**public class Nest.DeleteWarmerDescriptor** *Removed (Breaking)* -**public class Nest.DeleteWarmerRequest** *Removed (Breaking)* -**public class Nest.DeleteWarmerResponse** *Removed (Breaking)* -**public method Nest.DeleteWatchDescriptor.Force** *Removed (Breaking)* -**public property Nest.DeleteWatchRequest.Force** *Removed (Breaking)* -**public property Nest.DirectGenerator.MinWordLen** *Removed (Breaking)* -**public property Nest.DirectGenerator.PrefixLen** *Removed (Breaking)* -**public method Nest.DynamicIndexSettings..ctor** *Removed (Breaking)* -**public property Nest.DynamicIndexSettings.RequestCacheEnabled** *Removed (Breaking)* -**public property Nest.DynamicIndexSettings.WarmersEnabled** *Removed (Breaking)* -**public method Nest.DynamicIndexSettingsDescriptorBase<TDescriptor, TIndexSettings>.RequestCacheEnabled** *Removed (Breaking)* -**public method Nest.DynamicIndexSettingsDescriptorBase<TDescriptor, TIndexSettings>.WarmersEnabled** *Removed (Breaking)* -**public method Nest.ElasticClient.DeleteWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.DeleteWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.DeleteWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.DeleteWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.GetWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.GetWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.GetWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.GetWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.Optimize** *Removed (Breaking)* -**public method Nest.ElasticClient.Optimize** *Removed (Breaking)* -**public method Nest.ElasticClient.OptimizeAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.OptimizeAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.PutWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.PutWarmer** *Removed (Breaking)* -**public method Nest.ElasticClient.PutWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.PutWarmerAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.SearchExists** *Removed (Breaking)* -**public method Nest.ElasticClient.SearchExists<T>** *Removed (Breaking)* -**public method Nest.ElasticClient.SearchExistsAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Nest.ElasticClient.Suggest** *Removed (Breaking)* -**public method Nest.ElasticClient.SuggestAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksCancel** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksCancel** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksCancelAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksCancelAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksList** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksList** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksListAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.TasksListAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.UpdateByQuery<T>** *Removed (Breaking)* -**public method Nest.ElasticClient.UpdateByQueryAsync<T>** *Removed (Breaking)* -**public method Nest.ElasticClient.WatcherInfo** *Removed (Breaking)* -**public method Nest.ElasticClient.WatcherInfo** *Removed (Breaking)* -**public method Nest.ElasticClient.WatcherInfoAsync** *Removed (Breaking)* -**public method Nest.ElasticClient.WatcherInfoAsync** *Removed (Breaking)* -**public property Nest.ElasticsearchPropertyAttributeBase.DocValues** *Removed (Breaking)* -**public property Nest.ElasticsearchPropertyAttributeBase.Similarity** *Removed (Breaking)* -**public property Nest.ElasticsearchPropertyAttributeBase.Store** *Removed (Breaking)* -**public method Nest.ExplainDescriptor<TDocument>.Fields** *Removed (Breaking)* -**public method Nest.ExplainDescriptor<TDocument>.Fields** *Removed (Breaking)* -**public property Nest.ExplainRequest<TDocument>.Fields** *Removed (Breaking)* -**public property Nest.Field.CacheableExpression** *Removed (Breaking)* -**public method Nest.Field.Create** *Removed (Breaking)* -**public method Nest.Field.Create** *Removed (Breaking)* -**public class Nest.GeoLocationSuggestContext** *Removed (Breaking)* -**public class Nest.GeoLocationSuggestContextDescriptor<T>** *Removed (Breaking)* -**public method Nest.GetDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.GetDescriptor<T>.Fields** *Removed (Breaking)* -**public property Nest.GetMappingResponse.IndexTypeMappings** *Removed (Breaking)* -**public property Nest.GetRequest.Fields** *Removed (Breaking)* -**public property Nest.GetRequest<T>.Fields** *Removed (Breaking)* -**public method Nest.GetScriptDescriptor.Version** *Removed (Breaking)* -**public method Nest.GetScriptDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.GetScriptRequest.Version** *Removed (Breaking)* -**public property Nest.GetScriptRequest.VersionType** *Removed (Breaking)* -**public method Nest.GetSearchTemplateDescriptor.Version** *Removed (Breaking)* -**public method Nest.GetSearchTemplateDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.GetSearchTemplateRequest.Version** *Removed (Breaking)* -**public property Nest.GetSearchTemplateRequest.VersionType** *Removed (Breaking)* -**public class Nest.GetWarmerDescriptor** *Removed (Breaking)* -**public class Nest.GetWarmerRequest** *Removed (Breaking)* -**public class Nest.GetWarmerResponse** *Removed (Breaking)* -**public class Nest.GlobalInnerHit** *Removed (Breaking)* -**public class Nest.GlobalInnerHitDescriptor<T>** *Removed (Breaking)* -**public property Nest.HasParentQuery.ScoreMode** *Removed (Breaking)* -**public method Nest.HasParentQueryDescriptor<T>.ScoreMode** *Removed (Breaking)* -**public class Nest.HighlightDocumentDictionary** *Removed (Breaking)* -**public property Nest.HighlightField.CustomType** *Removed (Breaking)* -**public method Nest.HighlightFieldDescriptor<T>.OnAll** *Removed (Breaking)* -**public class Nest.HistogramBucket** *Removed (Breaking)* -**public property Nest.IAllocateClusterRerouteCommand.AllowPrimary** *Removed (Breaking)* -**public property Nest.IAttachmentProperty.FileField** *Removed (Breaking)* -**public property Nest.IBoolQuery.CreatedByBoolDsl** *Removed (Breaking)* -**public property Nest.IBulkAllRequest<T>.Consistency** *Removed (Breaking)* -**public property Nest.IBulkUpdateOperation<TDocument, TPartialDocument>.InferFrom** *Removed (Breaking)* -**public property Nest.ICategorySuggestContext.Default** *Removed (Breaking)* -**public property Nest.ICompletionProperty.Context** *Removed (Breaking)* -**public property Nest.ICompletionProperty.Payloads** *Removed (Breaking)* -**public property Nest.ICompletionSuggester.Context** *Removed (Breaking)* -**public property Nest.IDeleteByQueryResponse.Indices** *Removed (Breaking)* -**public interface Nest.IDeleteWarmerRequest** *Removed (Breaking)* -**public interface Nest.IDeleteWarmerResponse** *Removed (Breaking)* -**public property Nest.IDirectGenerator.MinWordLen** *Removed (Breaking)* -**public property Nest.IDirectGenerator.PrefixLen** *Removed (Breaking)* -**public property Nest.IDynamicIndexSettings.RequestCacheEnabled** *Removed (Breaking)* -**public property Nest.IDynamicIndexSettings.WarmersEnabled** *Removed (Breaking)* -**public method Nest.IElasticClient.DeleteWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.DeleteWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.DeleteWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.DeleteWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.GetWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.GetWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.GetWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.GetWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.Optimize** *Removed (Breaking)* -**public method Nest.IElasticClient.Optimize** *Removed (Breaking)* -**public method Nest.IElasticClient.OptimizeAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.OptimizeAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.PutWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.PutWarmer** *Removed (Breaking)* -**public method Nest.IElasticClient.PutWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.PutWarmerAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.SearchExists** *Removed (Breaking)* -**public method Nest.IElasticClient.SearchExists<T>** *Removed (Breaking)* -**public method Nest.IElasticClient.SearchExistsAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.SearchExistsAsync<T>** *Removed (Breaking)* -**public method Nest.IElasticClient.Suggest** *Removed (Breaking)* -**public method Nest.IElasticClient.SuggestAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksCancel** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksCancel** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksCancelAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksCancelAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksList** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksList** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksListAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.TasksListAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.UpdateByQuery<T>** *Removed (Breaking)* -**public method Nest.IElasticClient.UpdateByQueryAsync<T>** *Removed (Breaking)* -**public method Nest.IElasticClient.WatcherInfo** *Removed (Breaking)* -**public method Nest.IElasticClient.WatcherInfo** *Removed (Breaking)* -**public method Nest.IElasticClient.WatcherInfoAsync** *Removed (Breaking)* -**public method Nest.IElasticClient.WatcherInfoAsync** *Removed (Breaking)* -**public interface Nest.IGeoLocationSuggestContext** *Removed (Breaking)* -**public property Nest.IGetMappingResponse.IndexTypeMappings** *Removed (Breaking)* -**public interface Nest.IGetWarmerRequest** *Removed (Breaking)* -**public interface Nest.IGetWarmerResponse** *Removed (Breaking)* -**public interface Nest.IGlobalInnerHit** *Removed (Breaking)* -**public property Nest.IHasParentQuery.ScoreMode** *Removed (Breaking)* -**public property Nest.IIndexRequest.UntypedDocument** *Removed (Breaking)* -**public property Nest.IIndexState.Warmers** *Removed (Breaking)* -**public property Nest.IIndicesPrivileges.Fields** *Removed (Breaking)* -**public interface Nest.IInnerHitsContainer** *Removed (Breaking)* -**public property Nest.IMultiGetOperation.Fields** *Removed (Breaking)* -**public property Nest.IMultiTermVectorOperation.Fields** *Removed (Breaking)* -**public interface Nest.INamedInnerHits** *Removed (Breaking)* -**public method Nest.IndexDescriptor<TDocument>.Consistency** *Removed (Breaking)* -**public class Nest.IndexFieldMappings** *Removed (Breaking)* -**public property Nest.IndexRequest<TDocument>.Consistency** *Removed (Breaking)* -**public method Nest.IndexSettings..ctor** *Removed (Breaking)* -**public property Nest.IndexState.Warmers** *Removed (Breaking)* -**public property Nest.IndexStats.Percolate** *Removed (Breaking)* -**public property Nest.IndexStats.Suggest** *Removed (Breaking)* -**public property Nest.IndicesPrivileges.Fields** *Removed (Breaking)* -**public method Nest.IndicesPrivilegesDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.IndicesPrivilegesDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.Infer.Fields<T>** *Removed (Breaking)* -**public class Nest.InnerHitsContainer** *Removed (Breaking)* -**public class Nest.InnerHitsContainerDescriptor<T>** *Removed (Breaking)* -**public interface Nest.IOptimizeRequest** *Removed (Breaking)* -**public interface Nest.IOptimizeResponse** *Removed (Breaking)* -**public interface Nest.IPathInnerHit** *Removed (Breaking)* -**public property Nest.IProperty.CopyTo** *Removed (Breaking)* -**public property Nest.IProperty.DocValues** *Removed (Breaking)* -**public property Nest.IProperty.Fields** *Removed (Breaking)* -**public property Nest.IProperty.Similarity** *Removed (Breaking)* -**public property Nest.IProperty.Store** *Removed (Breaking)* -**public interface Nest.IPutWarmerRequest** *Removed (Breaking)* -**public interface Nest.IPutWarmerResponse** *Removed (Breaking)* -**public interface Nest.IReindexRequest** *Removed (Breaking)* -**public interface Nest.IReindexResponse<T>** *Removed (Breaking)* -**public property Nest.IResponse.ApiCall** *Removed (Breaking)* -**public property Nest.ISamplerAggregation.Field** *Removed (Breaking)* -**public interface Nest.ISearchExistsRequest** *Removed (Breaking)* -**public interface Nest.ISearchExistsRequest<T>** *Removed (Breaking)* -**public property Nest.ISearchRequest.Fields** *Removed (Breaking)* -**public property Nest.ISearchRequest.InnerHits** *Removed (Breaking)* -**public property Nest.ISearchResponse<T>.Highlights** *Removed (Breaking)* -**public property Nest.ISearchTemplateRequest.Template** *Removed (Breaking)* -**public interface Nest.ISuggestContextMapping** *Removed (Breaking)* -**public property Nest.ISuggester.ShardSize** *Removed (Breaking)* -**public property Nest.ISuggester.Text** *Removed (Breaking)* -**public interface Nest.ISuggestResponse** *Removed (Breaking)* -**public interface Nest.ITasksCancelRequest** *Removed (Breaking)* -**public interface Nest.ITasksCancelResponse** *Removed (Breaking)* -**public interface Nest.ITasksListRequest** *Removed (Breaking)* -**public interface Nest.ITasksListResponse** *Removed (Breaking)* -**public property Nest.ITemplateMapping.Warmers** *Removed (Breaking)* -**public property Nest.ITermsAggregation.ShowTermDocumentCountError** *Removed (Breaking)* -**public property Nest.ITermSuggester.MinWordLen** *Removed (Breaking)* -**public property Nest.ITermSuggester.PrefixLen** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.Found** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.Id** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.Index** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.TermVectors** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.Type** *Removed (Breaking)* -**public property Nest.ITermVectorsResponse.Version** *Removed (Breaking)* -**public property Nest.ITranslogFlushSettings.ThresholdOps** *Removed (Breaking)* -**public property Nest.ITranslogSettings.FileSystemType** *Removed (Breaking)* -**public interface Nest.ITypeInnerHit** *Removed (Breaking)* -**public interface Nest.IWarmer** *Removed (Breaking)* -**public interface Nest.IWarmers** *Removed (Breaking)* -**public interface Nest.IWatcherInfoRequest** *Removed (Breaking)* -**public interface Nest.IWatcherInfoResponse** *Removed (Breaking)* -**public method Nest.MultiGetDescriptor.Fields** *Removed (Breaking)* -**public method Nest.MultiGetDescriptor.Fields<T>** *Removed (Breaking)* -**public property Nest.MultiGetOperation<T>.Fields** *Removed (Breaking)* -**public method Nest.MultiGetOperationDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.MultiGetOperationDescriptor<T>.Fields** *Removed (Breaking)* -**public property Nest.MultiGetRequest.Fields** *Removed (Breaking)* -**public property Nest.MultiTermVectorOperation<T>.Fields** *Removed (Breaking)* -**public method Nest.MultiTermVectorOperationDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.MultiTermVectorOperationDescriptor<T>.Fields** *Removed (Breaking)* -**public class Nest.NamedInnerHits** *Removed (Breaking)* -**public class Nest.NamedInnerHitsDescriptor<T>** *Removed (Breaking)* -**public property Nest.NodeInfo.Build** *Removed (Breaking)* -**public property Nest.NodeInfo.Hostname** *Removed (Breaking)* -**public property Nest.NodeInfo.HttpAddress** *Removed (Breaking)* -**public property Nest.NodeProcessInfo.RefreshInterval** *Removed (Breaking)* -**public enum Nest.NumericResolutionUnit** *Removed (Breaking)* -**public property Nest.ObjectAttribute.Dynamic** *Removed (Breaking)* -**public property Nest.OperatingSystemStats.CpuPercent** *Removed (Breaking)* -**public property Nest.OperatingSystemStats.LoadAverage** *Removed (Breaking)* -**public class Nest.OptimizeDescriptor** *Removed (Breaking)* -**public class Nest.OptimizeRequest** *Removed (Breaking)* -**public class Nest.OptimizeResponse** *Removed (Breaking)* -**public enum Nest.ParentScoreMode** *Removed (Breaking)* -**public class Nest.PathInnerHit** *Removed (Breaking)* -**public class Nest.PathInnerHit<T>** *Removed (Breaking)* -**public class Nest.PathInnerHitDescriptor<T>** *Removed (Breaking)* -**public class Nest.PercolateStats** *Removed (Breaking)* -**public property Nest.PropertyBase.CopyTo** *Removed (Breaking)* -**public property Nest.PropertyBase.DocValues** *Removed (Breaking)* -**public property Nest.PropertyBase.Fields** *Removed (Breaking)* -**public property Nest.PropertyBase.IndexName** *Removed (Breaking)* -**public property Nest.PropertyBase.Similarity** *Removed (Breaking)* -**public property Nest.PropertyBase.Store** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.CopyTo** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.DocValues** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.Fields** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.Similarity** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.Similarity** *Removed (Breaking)* -**public method Nest.PropertyDescriptorBase<TDescriptor, TInterface, T>.Store** *Removed (Breaking)* -**public method Nest.PutIndexTemplateDescriptor.Warmers** *Removed (Breaking)* -**public property Nest.PutIndexTemplateRequest.Warmers** *Removed (Breaking)* -**public method Nest.PutMappingDescriptor<T>.Parent<K>** *Removed (Breaking)* -**public method Nest.PutScriptDescriptor.OpType** *Removed (Breaking)* -**public method Nest.PutScriptDescriptor.Version** *Removed (Breaking)* -**public method Nest.PutScriptDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.PutScriptRequest.OpType** *Removed (Breaking)* -**public property Nest.PutScriptRequest.Version** *Removed (Breaking)* -**public property Nest.PutScriptRequest.VersionType** *Removed (Breaking)* -**public method Nest.PutSearchTemplateDescriptor.OpType** *Removed (Breaking)* -**public method Nest.PutSearchTemplateDescriptor.Version** *Removed (Breaking)* -**public method Nest.PutSearchTemplateDescriptor.VersionType** *Removed (Breaking)* -**public property Nest.PutSearchTemplateRequest.OpType** *Removed (Breaking)* -**public property Nest.PutSearchTemplateRequest.Version** *Removed (Breaking)* -**public property Nest.PutSearchTemplateRequest.VersionType** *Removed (Breaking)* -**public class Nest.PutWarmerDescriptor** *Removed (Breaking)* -**public class Nest.PutWarmerRequest** *Removed (Breaking)* -**public class Nest.PutWarmerResponse** *Removed (Breaking)* -**public property Nest.QueryProfile.Lucene** *Removed (Breaking)* -**public property Nest.QueryProfile.QueryType** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.AllTypes** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.CreateIndex** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Query** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Query** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Scroll** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Size** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Take** *Removed (Breaking)* -**public method Nest.ReindexDescriptor<T>.Type** *Removed (Breaking)* -**public method Nest.ReindexObservable<T>.IndexSearchResults** *Removed (Breaking)* -**public method Nest.ReindexOnServerDescriptor.Consistency** *Removed (Breaking)* -**public property Nest.ReindexOnServerRequest.Consistency** *Removed (Breaking)* -**public class Nest.ReindexRequest** *Removed (Breaking)* -**public class Nest.ReindexResponse<T>** *Removed (Breaking)* -**public class Nest.Role** *Removed (Breaking)* -**public property Nest.RoutingShard.Version** *Removed (Breaking)* -**public property Nest.SamplerAggregation.Field** *Removed (Breaking)* -**public method Nest.SamplerAggregationDescriptor<T>.Field** *Removed (Breaking)* -**public method Nest.SamplerAggregationDescriptor<T>.Field** *Removed (Breaking)* -**public method Nest.SearchDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.SearchDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.SearchDescriptor<T>.InnerHits** *Removed (Breaking)* -**public class Nest.SearchExistsDescriptor<T>** *Removed (Breaking)* -**public class Nest.SearchExistsRequest** *Removed (Breaking)* -**public class Nest.SearchExistsRequest<T>** *Removed (Breaking)* -**public property Nest.SearchRequest.Fields** *Removed (Breaking)* -**public property Nest.SearchRequest.InnerHits** *Removed (Breaking)* -**public property Nest.SearchRequest<T>.Fields** *Removed (Breaking)* -**public property Nest.SearchRequest<T>.InnerHits** *Removed (Breaking)* -**public property Nest.SearchStats.FetchTime** *Removed (Breaking)* -**public property Nest.SearchStats.QueryTime** *Removed (Breaking)* -**public property Nest.SearchStats.ScrollTime** *Removed (Breaking)* -**public method Nest.SearchTemplateDescriptor<T>.Template** *Removed (Breaking)* -**public property Nest.SearchTemplateRequest.Template** *Removed (Breaking)* -**public property Nest.ShardStore.Version** *Removed (Breaking)* -**public class Nest.ShieldNode** *Removed (Breaking)* -**public class Nest.ShieldNodeStatus** *Removed (Breaking)* -**public property Nest.Snapshot.ShardFailures** *Removed (Breaking)* -**public class Nest.Suggest** *Removed (Breaking)* -**public class Nest.SuggestContextMapping** *Removed (Breaking)* -**public class Nest.SuggestContextMappingDescriptor<T>** *Removed (Breaking)* -**public method Nest.SuggestDescriptorBase<TDescriptor, TInterface, T>.ShardSize** *Removed (Breaking)* -**public method Nest.SuggestDescriptorBase<TDescriptor, TInterface, T>.Text** *Removed (Breaking)* -**public property Nest.SuggesterBase.ShardSize** *Removed (Breaking)* -**public property Nest.SuggesterBase.Text** *Removed (Breaking)* -**public class Nest.SuggestOption** *Removed (Breaking)* -**public class Nest.SuggestOptionJsonConverter** *Removed (Breaking)* -**public class Nest.SuggestResponse** *Removed (Breaking)* -**public class Nest.SuggestStats** *Removed (Breaking)* -**public class Nest.TasksCancelDescriptor** *Removed (Breaking)* -**public class Nest.TasksCancelRequest** *Removed (Breaking)* -**public class Nest.TasksCancelResponse** *Removed (Breaking)* -**public class Nest.TasksListDescriptor** *Removed (Breaking)* -**public class Nest.TasksListRequest** *Removed (Breaking)* -**public class Nest.TasksListResponse** *Removed (Breaking)* -**public property Nest.TemplateMapping.Warmers** *Removed (Breaking)* -**public property Nest.TermsAggregation.ShowTermDocumentCountError** *Removed (Breaking)* -**public method Nest.TermsAggregationDescriptor<T>.ShowTermDocumentCountError** *Removed (Breaking)* -**public property Nest.TermSuggester.MinWordLen** *Removed (Breaking)* -**public property Nest.TermSuggester.PrefixLen** *Removed (Breaking)* -**public method Nest.TermVectorsDescriptor<TDocument>.Dfs** *Removed (Breaking)* -**public property Nest.TermVectorsRequest<TDocument>.Dfs** *Removed (Breaking)* -**public property Nest.TranslogFlushSettings.ThresholdOps** *Removed (Breaking)* -**public method Nest.TranslogFlushSettingsDescriptor.ThresholdOps** *Removed (Breaking)* -**public property Nest.TranslogSettings.FileSystemType** *Removed (Breaking)* -**public method Nest.TranslogSettingsDescriptor.FileSystemType** *Removed (Breaking)* -**public enum Nest.TranslogWriteMode** *Removed (Breaking)* -**public class Nest.TypeInnerHit** *Removed (Breaking)* -**public class Nest.TypeInnerHit<T>** *Removed (Breaking)* -**public class Nest.TypeInnerHitDescriptor<T>** *Removed (Breaking)* -**public field Nest.UpdatableIndexSettings.RequestCacheEnable** *Removed (Breaking)* -**public field Nest.UpdatableIndexSettings.TranslogFlushTreshHoldOps** *Removed (Breaking)* -**public field Nest.UpdatableIndexSettings.TranslogFsType** *Removed (Breaking)* -**public field Nest.UpdatableIndexSettings.TranslogInterval** *Removed (Breaking)* -**public field Nest.UpdatableIndexSettings.WarmersEnabled** *Removed (Breaking)* -**public method Nest.UpdateByQueryDescriptor<T>.Consistency** *Removed (Breaking)* -**public method Nest.UpdateByQueryDescriptor<T>.Fields** *Removed (Breaking)* -**public method Nest.UpdateByQueryDescriptor<T>.Fields** *Removed (Breaking)* -**public property Nest.UpdateByQueryRequest.Consistency** *Removed (Breaking)* -**public property Nest.UpdateByQueryRequest.Fields** *Removed (Breaking)* -**public property Nest.UpdateByQueryRequest<T>.Consistency** *Removed (Breaking)* -**public property Nest.UpdateByQueryRequest<T>.Fields** *Removed (Breaking)* -**public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Consistency** *Removed (Breaking)* -**public property Nest.UpdateRequest<TDocument, TPartialDocument>.Consistency** *Removed (Breaking)* -**public method Nest.UpgradeDescriptor.AllowNoIndices** *Removed (Breaking)* -**public property Nest.UpgradeRequest.AllowNoIndices** *Removed (Breaking)* -**public class Nest.User** *Removed (Breaking)* -**public class Nest.Warmer** *Removed (Breaking)* -**public class Nest.WarmerDescriptor<T>** *Removed (Breaking)* -**public class Nest.Warmers** *Removed (Breaking)* -**public class Nest.WarmersDescriptor** *Removed (Breaking)* -**public class Nest.WatcherInfoDescriptor** *Removed (Breaking)* -**public class Nest.WatcherInfoRequest** *Removed (Breaking)* -**public class Nest.WatcherInfoResponse** *Removed (Breaking)* -**public class Nest.WatcherVersion** *Removed (Breaking)* - diff --git a/docs/6.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc b/docs/6.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc deleted file mode 100644 index 36cfec81020..00000000000 --- a/docs/6.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc +++ /dev/null @@ -1,248 +0,0 @@ -[[elasticsearch-net-breaking-changes]] -== Elasticsearch.Net Breaking Changes - -[float] -=== Code Generation fixes - -Our code that takes the elasticsearch REST spec and generates the low level client had been mostly untouched since `1.x`. -With this release we fixed several outstanding issues - -* request parameters were fluent e.g `client.Operation<dynamic>(r=>r.Parameter())` this was done back in the day to facilitate -the high level client but was never truely needed so now the low level client is using -`client.Operation<DynamicResponse>(new OperationRequestParameters { Parameter = .. })`. - -[float] -=== Response types - -In previous version any `client.Operation<T>(..)` accepted `string` `byte[]`, `dynamic`, `Stream`, `VoidResponse`, or any object to -deserialize the response into as `T` and returned an `ElasticsearchResponse<T>`. - -We are now stricter and constrained `T` to `IElasticsearchResponse` and always return T directly. - -To help ease the common use cases we ship with an `BytesResponse`, `StringResponse`, `DynamicResponse`, -`VoidResponse` and `ElasticsearchResponse<T>` where `T` can again be any object to deserialize the response into. - -In previous versions the low level client was in charge of reading deserialized exceptions from Elasticsearch -and short circuited if a bad HTTP status code was returned to do so. Omitting the deserializer all together. -This worked in Elasticsearch 2.x however starting with 5.x several API's can also return something other than -a serialized exception on non valid HTTP status codes. To combat this the client in certain cases for some API's -needs to do a double read of the API. By shifting this responsibility from the client to the callee we no longer -need to bake in any kind of special casing. - -The response stream is now always fed directly into the configured serializer, not just for known OK HTTP status codes. -Unless you explicitly call `DisableDirectStreaming` or set `DebugMode()` in which case the request and response bytes are -available on `response.DebugInformation`. - -The builtin `BytesResponse` and `StringResponse` both have a `TryGetServerError` to still easily get a typed view on -the exception that happened on the server. - -For the high level client NEST nothing changes `.ServerError` is still available on all its responses. This change means -NEST is in charge of deserializing the server error and not the low level client `Elasticsearch.Net` though. - -Lastly we removed support for return the raw response stream, this was a dangerous feature because the onous on disposing -that stream lied with the user. If you need to access the response stream directly inject a custom `IElasticsearchSerializer`. - -[float] -=== Unclassified - -Listed here unfiltered, we'll make another pass to group these and add an explanation where it makes sense. - -*public class Elasticsearch.Net.CausedBy* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ConnectionConfiguration..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IConnectionPool connectionPool, Func<ConnectionConfiguration, IElasticsearchSerializer> serializerFactory) + -6.x: public .ctor(IConnectionPool connectionPool, IElasticsearchSerializer serializer) + - + -*public method Elasticsearch.Net.ConnectionConfiguration..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IConnectionPool connectionPool, IConnection connection, Func<ConnectionConfiguration, IElasticsearchSerializer> serializerFactory) + -6.x: public .ctor(IConnectionPool connectionPool, IConnection connection, IElasticsearchSerializer serializer) + - + -*public class Elasticsearch.Net.DeleteSearchTemplateRequestParameters* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Add* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Add* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Clear* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Contains* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.ContainsKey* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.CopyTo* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.Count* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Create* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.Empty* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Equals* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Equals* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.GetDynamicMemberNames* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.GetEnumerator* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.GetHashCode* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.IsReadOnly* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.Item* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.Keys* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Remove* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.Remove* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.TryGetMember* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.TryGetValue* _Removed (Breaking)_ + -*public method Elasticsearch.Net.DynamicResponse.TrySetMember* _Removed (Breaking)_ + -*public property Elasticsearch.Net.DynamicResponse.Values* _Removed (Breaking)_ + -*public class Elasticsearch.Net.ElasticsearchDefaultSerializer* _Removed (Breaking)_ + -*public class Elasticsearch.Net.ElasticsearchResponse* _Declaration changed (Breaking)_ + -5.x: public class ElasticsearchResponse : IApiCallDetails + -6.x: public abstract class ElasticsearchResponse : ElasticsearchResponseBase, IApiCallDetails, IElasticsearchResponse + - + -*public class Elasticsearch.Net.ElasticsearchResponse* _Members changed (Breaking)_ + -5.x: public class ElasticsearchResponse : IApiCallDetails + -6.x: public abstract class ElasticsearchResponse : ElasticsearchResponseBase, IApiCallDetails, IElasticsearchResponse + - + -*public method Elasticsearch.Net.ElasticsearchResponse..ctor* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ElasticsearchResponse..ctor* _Visibility was changed from public to protected (Breaking)_ + -5.x: public .ctor(Exception e) + -6.x: protected .ctor() + - + -*public property Elasticsearch.Net.ElasticsearchResponse.AuditTrail* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.DebugInformation* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.DeprecationWarnings* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.HttpMethod* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.HttpStatusCode* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.OriginalException* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.RequestBodyInBytes* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.ResponseBodyInBytes* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.ServerError* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.Success* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.SuccessOrKnownError* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ElasticsearchResponse.ToString* _Removed (Breaking)_ + -*public property Elasticsearch.Net.ElasticsearchResponse.Uri* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ElasticsearchSerializerExtensions.SerializeToBytes* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ElasticsearchSerializerExtensions.SerializeToString* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.CausedBy* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.Index* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.Reason* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.ResourceId* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.ResourceType* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.RootCause* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection RootCause { get; set; } + -6.x: public IReadOnlyCollection RootCause { get; set; } + - + -*public method Elasticsearch.Net.Error.ToString* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Error.Type* _Removed (Breaking)_ + -*public enum Elasticsearch.Net.Feature* _Removed (Breaking)_ + -*public class Elasticsearch.Net.FieldStatsRequestParameters* _Removed (Breaking)_ + -*public class Elasticsearch.Net.FluentRequestParameters* _Removed (Breaking)_ + -*public class Elasticsearch.Net.GetSearchTemplateRequestParameters* _Removed (Breaking)_ + -*public method Elasticsearch.Net.HttpConnection.Request* _Removed (Breaking)_ + -*public method Elasticsearch.Net.HttpConnection.RequestAsync* _Removed (Breaking)_ + -*public property Elasticsearch.Net.IApiCallDetails.ServerError* _Removed (Breaking)_ + -*public interface Elasticsearch.Net.IBodyWithApiCallDetails* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IConnection.Request* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IConnection.RequestAsync* _Removed (Breaking)_ + -*public property Elasticsearch.Net.IConnectionConfigurationValues.Serializer* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IElasticsearchSerializer.CreatePropertyMapping* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IElasticsearchSerializer.Serialize* _Removed (Breaking)_ + -*public enum Elasticsearch.Net.IndicesStatsMetric* _Declaration changed (Breaking)_ + -5.x: [FlagsAttribute]public enum IndicesStatsMetric { Completion = 1, Docs = 2, Fielddata = 4, QueryCache = 8, Flush = 16, Get = 32, Indexing = 64, Merge = 128, Percolate = 256, RequestCache = 512, Refresh = 1024, Search = 2048, Segments = 4096, Store = 8192, Warmer = 16384, Suggest = 32768, All = 65536} + -6.x: [FlagsAttribute]public enum IndicesStatsMetric { Completion = 1, Docs = 2, Fielddata = 4, QueryCache = 8, Flush = 16, Get = 32, Indexing = 64, Merge = 128, RequestCache = 256, Refresh = 512, Search = 1024, Segments = 2048, Store = 4096, Warmer = 8192, Suggest = 16384, All = 32768} + - + -*public method Elasticsearch.Net.InMemoryConnection..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Byte[] responseBody, int statusCode = 200, Exception exception) + -6.x: public .ctor(Byte[] responseBody, int statusCode = 200, Exception exception, string contentType = "application/json") + - + -*public method Elasticsearch.Net.InMemoryConnection.Request* _Removed (Breaking)_ + -*public method Elasticsearch.Net.InMemoryConnection.RequestAsync* _Removed (Breaking)_ + -*public interface Elasticsearch.Net.IPropertyMapping* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IRequestPipeline.BadResponse* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IRequestPipeline.CallElasticsearch* _Removed (Breaking)_ + -*public method Elasticsearch.Net.IRequestPipeline.CallElasticsearchAsync* _Removed (Breaking)_ + -*public interface Elasticsearch.Net.IRootCause* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ITransport.Request* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ITransport.RequestAsync* _Removed (Breaking)_ + -*public method Elasticsearch.Net.KnownEnums.GetStringValue* _Declaration changed (Breaking)_ + -5.x: [ExtensionAttribute]public static string GetStringValue(PercolateFormat enumValue) + -6.x: [ExtensionAttribute]public static string GetStringValue(NodesUsageMetric enumValue) + - + -*public method Elasticsearch.Net.KnownEnums.GetStringValue* _Removed (Breaking)_ + -*public class Elasticsearch.Net.MultiPercolateRequestParameters* _Removed (Breaking)_ + -*public property Elasticsearch.Net.Node.Settings* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, string> Settings { get; set; } + -6.x: public IReadOnlyDictionary<string, object> Settings { get; set; } + - + -*public enum Elasticsearch.Net.NodesStatsIndexMetric* _Declaration changed (Breaking)_ + -5.x: [FlagsAttribute]public enum NodesStatsIndexMetric { Completion = 1, Docs = 2, Fielddata = 4, QueryCache = 8, Flush = 16, Get = 32, Indexing = 64, Merge = 128, Percolate = 256, RequestCache = 512, Refresh = 1024, Search = 2048, Segments = 4096, Store = 8192, Warmer = 16384, Suggest = 32768, All = 65536} + -6.x: [FlagsAttribute]public enum NodesStatsIndexMetric { Completion = 1, Docs = 2, Fielddata = 4, QueryCache = 8, Flush = 16, Get = 32, Indexing = 64, Merge = 128, RequestCache = 256, Refresh = 512, Search = 1024, Segments = 2048, Store = 4096, Warmer = 8192, Suggest = 16384, All = 32768} + - + -*public class Elasticsearch.Net.PercolateCountRequestParameters* _Removed (Breaking)_ + -*public enum Elasticsearch.Net.PercolateFormat* _Removed (Breaking)_ + -*public class Elasticsearch.Net.PercolateRequestParameters* _Removed (Breaking)_ + -*public property Elasticsearch.Net.PipelineException.Response* _Declaration changed (Breaking)_ + -5.x: public IApiCallDetails Response { get; internal set; } + -6.x: public IElasticsearchResponse Response { get; internal set; } + - + -*public method Elasticsearch.Net.PostData..ctor* _Visibility was changed from public to protectedinternal (Breaking)_ + -5.x: public .ctor(IEnumerable item) + -6.x: protected internal .ctor(IEnumerable item) + - + -*public method Elasticsearch.Net.PostData..ctor* _Visibility was changed from public to private (Breaking)_ + -5.x: public .ctor(T item) + -6.x: private .ctor(T item) + - + -*public method Elasticsearch.Net.PostData..ctor* _Visibility was changed from public to protectedinternal (Breaking)_ + -5.x: public .ctor(IEnumerable item) + -6.x: protected internal .ctor(IEnumerable item) + - + -*public method Elasticsearch.Net.PostData..ctor* _Visibility was changed from public to protectedinternal (Breaking)_ + -5.x: public .ctor(Byte[] item) + -6.x: protected internal .ctor(Byte[] item) + - + -*public method Elasticsearch.Net.PostData..ctor* _Visibility was changed from public to protectedinternal (Breaking)_ + -5.x: public .ctor(string item) + -6.x: protected internal .ctor(string item) + - + -*public property Elasticsearch.Net.PostData.DisableDirectStreaming* _Removed (Breaking)_ + -*public operator Elasticsearch.Net.PostData.op_Implicit* _Removed (Breaking)_ + -*public operator Elasticsearch.Net.PostData.op_Implicit* _Removed (Breaking)_ + -*public operator Elasticsearch.Net.PostData.op_Implicit* _Removed (Breaking)_ + -*public operator Elasticsearch.Net.PostData.op_Implicit* _Removed (Breaking)_ + -*public operator Elasticsearch.Net.PostData.op_Implicit* _Removed (Breaking)_ + -*public property Elasticsearch.Net.PostData.Type* _Removed (Breaking)_ + -*public method Elasticsearch.Net.PostData.Write* _Declaration changed (Breaking)_ + -5.x: public void Write(Stream writableStream, IConnectionConfigurationValues settings) + -6.x: public override void Write(Stream writableStream, IConnectionConfigurationValues settings) + - + -*public method Elasticsearch.Net.PostData.WriteAsync* _Declaration changed (Breaking)_ + -5.x: [AsyncStateMachineAttribute(Elasticsearch.Net.PostData`1+<WriteAsync>d__24[T])]public Task WriteAsync(Stream writableStream, IConnectionConfigurationValues settings, CancellationToken cancellationToken) + -6.x: [AsyncStateMachineAttribute(Elasticsearch.Net.PostData`1+d__10[T])]public override Task WriteAsync(Stream writableStream, IConnectionConfigurationValues settings, CancellationToken cancellationToken) + - + -*public property Elasticsearch.Net.PostData.WrittenBytes* _Removed (Breaking)_ + -*public class Elasticsearch.Net.PropertyMapping* _Removed (Breaking)_ + -*public class Elasticsearch.Net.PutSearchTemplateRequestParameters* _Removed (Breaking)_ + -*public method Elasticsearch.Net.RequestData..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestParameters local, IMemoryStreamFactory memoryStreamFactory) + -6.x: public .ctor(HttpMethod method, string path, PostData data, IConnectionConfigurationValues global, IRequestParameters local, IMemoryStreamFactory memoryStreamFactory) + - + -*public property Elasticsearch.Net.RequestData.ClientCertificates* _Declaration changed (Breaking)_ + -5.x: public X509CertificateCollection ClientCertificates { get; set; } + -6.x: public X509CertificateCollection ClientCertificates { get; } + - + -*public property Elasticsearch.Net.RequestData.ContentType* _Removed (Breaking)_ + -*public property Elasticsearch.Net.RequestData.Path* _Removed (Breaking)_ + -*public property Elasticsearch.Net.RequestData.PostData* _Declaration changed (Breaking)_ + -5.x: public PostData PostData { get; } + -6.x: public PostData PostData { get; } + - + -*public method Elasticsearch.Net.RequestPipeline.BadResponse* _Removed (Breaking)_ + -*public method Elasticsearch.Net.RequestPipeline.CallElasticsearch* _Removed (Breaking)_ + -*public method Elasticsearch.Net.RequestPipeline.CallElasticsearchAsync* _Removed (Breaking)_ + -*public class Elasticsearch.Net.ResponseBuilder* _Removed (Breaking)_ + -*public class Elasticsearch.Net.RootCause* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ServerError..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor() + -6.x: public .ctor(Error error, int? statusCode) + - + -*public property Elasticsearch.Net.ServerError.Error* _Declaration changed (Breaking)_ + -5.x: public Error Error { get; set; } + -6.x: public Error Error { get; } + - + -*public property Elasticsearch.Net.ServerError.Status* _Declaration changed (Breaking)_ + -5.x: public int Status { get; set; } + -6.x: public int Status { get; } + - + -*public method Elasticsearch.Net.ServerError.TryCreate* _Removed (Breaking)_ + -*public method Elasticsearch.Net.ServerError.TryCreateAsync* _Removed (Breaking)_ + -*public method Elasticsearch.Net.SniffingConnectionPool..ctor* _Removed (Breaking)_ + -*public class Elasticsearch.Net.SuggestRequestParameters* _Removed (Breaking)_ + -*public method Elasticsearch.Net.Transport.Request* _Removed (Breaking)_ + -*public method Elasticsearch.Net.Transport.RequestAsync* _Removed (Breaking)_ + \ No newline at end of file diff --git a/docs/6.0-breaking-changes/nest-breaking-changes.asciidoc b/docs/6.0-breaking-changes/nest-breaking-changes.asciidoc deleted file mode 100644 index d839ad28fcd..00000000000 --- a/docs/6.0-breaking-changes/nest-breaking-changes.asciidoc +++ /dev/null @@ -1,1816 +0,0 @@ -[[nest-breaking-changes]] -== NEST Breaking Changes - -Oh my goodness, this looks like a lot of breaking changes! This is true but please take note that this list is very very extensive -It includes every single _binary_ breaking change. In a lot of cases these will not necessarily equate to compiler errors. - -[float] -=== Nullable changes - -Quite a few places are now nullable (arguments, properties) while technically a binary breaking change this is not something -you will hit during upgrade compilation so these have been removed from this listing. - -[float] -=== Routing - -Various places that use to take a `string` for routing now take a `Routing`. -`string` is implicitly convertable though so should not be an issue during upgrade. - -[float] -=== Fields - -Various places that took fields as a `string[]` now explicitly accept a `Fields` instance. -This comes from improvements in the generator. - -[float] -=== Cat - -The generated methods for `_cat` related API's had there `H`, `S`, `V` and `Ts` methods renamed to -a more descriptive variant e.g `V` is now `Verbose`. - -[float] -=== Unclassified - -Listed here unfiltered, we'll make another pass to group these and add an explanation where it makes sense. + + - + -*public method Nest.ActionIds.GetString* _Removed (Breaking)_ + -*public method Nest.AggregationDictionary.ValidateKey* _Visibility was changed from public to protected (Breaking)_ + -5.x: public override string ValidateKey(string key) + -6.x: protected override string ValidateKey(string key) + - + -*public property Nest.AggregationProfile.Time* _Removed (Breaking)_ + -*public class Nest.AggregationsHelper* _Removed (Breaking)_ + -*public property Nest.AliasDefinition.Name* _Removed (Breaking)_ + -*public method Nest.AliasExistsRequest..ctor* _Removed (Breaking)_ + -*public method Nest.AliasPointingToIndexExtensions.GetAliasesPointingToIndex* _Declaration changed (Breaking)_ + -5.x: public static IEnumerable GetAliasesPointingToIndex(IElasticClient client, Indices indices) + -6.x: public static IReadOnlyDictionary<string, AliasDefinition> GetAliasesPointingToIndex(IElasticClient client, IndexName index) + - -*public method Nest.AliasPointingToIndexExtensions.GetAliasesPointingToIndexAsync* _Declaration changed (Breaking)_ + -5.x: public static Task<IEnumerable> GetAliasesPointingToIndexAsync(IElasticClient client, Indices indices) + -6.x: public static Task<IReadOnlyDictionary<string, AliasDefinition>> GetAliasesPointingToIndexAsync(IElasticClient client, IndexName index) + - + -*public property Nest.AllField.TermVector* _Removed (Breaking)_ + -*public property Nest.AllFieldDescriptor.OmitNorms* _Removed (Breaking)_ + -*public property Nest.AllocationStore.ShardCopy* _Removed (Breaking)_ + -*public property Nest.AnalysisLimits.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public long? ModelMemoryLimit { get; set; } + -6.x: public string ModelMemoryLimit { get; set; } + - + -*public method Nest.AnalysisLimitsDescriptor.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public AnalysisLimitsDescriptor ModelMemoryLimit(long modelMemoryLimit) + -6.x: public AnalysisLimitsDescriptor ModelMemoryLimit(string modelMemoryLimit) + - + -*public property Nest.AnalysisMemoryLimit.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public long? ModelMemoryLimit { get; set; } + -6.x: public string ModelMemoryLimit { get; set; } + - + -*public method Nest.AnalysisMemoryLimitDescriptor.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public AnalysisMemoryLimitDescriptor ModelMemoryLimit(long modelMemoryLimit) + -6.x: public AnalysisMemoryLimitDescriptor ModelMemoryLimit(string modelMemoryLimit) + - + -*public property Nest.AnalyzeRequest.Attributes* _Declaration changed (Breaking)_ + -5.x: public String[] Attributes { get; set; } + -6.x: public IEnumerable Attributes { get; set; } + - + -*public property Nest.AnalyzeRequest.CharFilter* _Declaration changed (Breaking)_ + -5.x: public String[] CharFilter { get; set; } + -6.x: public AnalyzeCharFilters CharFilter { get; set; } + - + -*public property Nest.AnalyzeRequest.Filter* _Declaration changed (Breaking)_ + -5.x: public String[] Filter { get; set; } + -6.x: public AnalyzeTokenFilters Filter { get; set; } + - + -*public property Nest.AnalyzeRequest.Text* _Declaration changed (Breaking)_ + -5.x: public String[] Text { get; set; } + -6.x: public IEnumerable Text { get; set; } + - + -*public property Nest.AnalyzeRequest.Tokenizer* _Declaration changed (Breaking)_ + -5.x: public string Tokenizer { get; set; } + -6.x: public Union<string, ITokenizer> Tokenizer { get; set; } + - + -*public property Nest.AnalyzeToken.EndOffset* _Declaration changed (Breaking)_ + -5.x: public int EndOffset { get; internal set; } + -6.x: public long EndOffset { get; internal set; } + - + -*public property Nest.AnalyzeToken.EndPostion* _Removed (Breaking)_ + -*public property Nest.AnalyzeToken.Position* _Declaration changed (Breaking)_ + -5.x: public int Position { get; internal set; } + -6.x: public long Position { get; internal set; } + - + -*public property Nest.AnalyzeToken.StartOffset* _Declaration changed (Breaking)_ + -5.x: public int StartOffset { get; internal set; } + -6.x: public long StartOffset { get; internal set; } + - + -*public class Nest.AttachmentAttribute* _Removed (Breaking)_ + -*public class Nest.AttachmentProperty* _Removed (Breaking)_ + -*public class Nest.AttachmentPropertyDescriptor* _Removed (Breaking)_ + -*public property Nest.BoolQuery.DisableCoord* _Removed (Breaking)_ + -*public method Nest.BoolQueryDescriptor.DisableCoord* _Removed (Breaking)_ + -*public property Nest.BucketAggregate.BgCount* _Declaration changed (Breaking)_ + -5.x: public long? BgCount { get; set; } + -6.x: public long BgCount { get; set; } + - + -*public method Nest.BulkAliasDescriptor.RemoveIndex* _Declaration changed (Breaking)_ + -5.x: public IBulkAliasRequest RemoveIndex(Func<AliasRemoveIndexDescriptor, IAliasRemoveIndexAction> removeIndexSelector) + -6.x: public BulkAliasDescriptor RemoveIndex(Func<AliasRemoveIndexDescriptor, IAliasRemoveIndexAction> removeIndexSelector) + - + -*public property Nest.BulkDeleteResponseItem.Found* _Removed (Breaking)_ + -*public property Nest.BulkError.CausedBy* _Removed (Breaking)_ + -*public property Nest.BulkError.Reason* _Removed (Breaking)_ + -*public property Nest.BulkError.Type* _Removed (Breaking)_ + -*public property Nest.BulkIndexFailureCause.CausedBy* _Removed (Breaking)_ + -*public property Nest.BulkIndexFailureCause.Reason* _Removed (Breaking)_ + -*public property Nest.BulkIndexFailureCause.Type* _Removed (Breaking)_ + -*public property Nest.BulkOperationBase.Timestamp* _Removed (Breaking)_ + -*public property Nest.BulkOperationBase.Ttl* _Removed (Breaking)_ + -*public method Nest.BulkOperationDescriptorBase<TDescriptor, TInterface>.Timestamp* _Removed (Breaking)_ + -*public method Nest.BulkOperationDescriptorBase<TDescriptor, TInterface>.Ttl* _Removed (Breaking)_ + -*public property Nest.BulkResponse.Items* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection Items { get; internal set; } + -6.x: public IReadOnlyCollection Items { get; internal set; } + - + -*public property Nest.BulkResponse.ItemsWithErrors* _Declaration changed (Breaking)_ + -5.x: public IEnumerable ItemsWithErrors { get; } + -6.x: public IEnumerable ItemsWithErrors { get; } + - + -*public property Nest.BulkResponseItemBase.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public method Nest.CancelTasksDescriptor.NodeId* _Removed (Breaking)_ + -*public method Nest.CancelTasksDescriptor.ParentTask* _Removed (Breaking)_ + -*public property Nest.CancelTasksRequest.NodeId* _Removed (Breaking)_ + -*public property Nest.CancelTasksRequest.ParentTask* _Removed (Breaking)_ + -*public property Nest.CancelTasksResponse.NodeFailures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection NodeFailures { get; internal set; } + -6.x: public IReadOnlyCollection NodeFailures { get; internal set; } + - + -*public method Nest.CatHealthDescriptor.Ts* _Removed (Breaking)_ + -*public property Nest.CatHealthRequest.Ts* _Removed (Breaking)_ + -*public method Nest.CatSnapshotsDescriptor..ctor* _Removed (Breaking)_ + -*public property Nest.CatTemplatesRecord.Template* _Removed (Breaking)_ + -*public class Nest.CausedBy* _Removed (Breaking)_ + -*public method Nest.ChildrenAggregation..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(string name, TypeName type) + -6.x: public .ctor(string name, RelationName type) + - + -*public property Nest.ChildrenAggregation.Type* _Declaration changed (Breaking)_ + -5.x: public TypeName Type { get; set; } + -6.x: public RelationName Type { get; set; } + - + -*public method Nest.ChildrenAggregationDescriptor.Type* _Declaration changed (Breaking)_ + -5.x: public ChildrenAggregationDescriptor Type(TypeName type) + -6.x: public ChildrenAggregationDescriptor Type(RelationName type) + - + -*public method Nest.ClearCacheDescriptor.FieldData* _Removed (Breaking)_ + -*public property Nest.ClearCacheRequest.FieldData* _Removed (Breaking)_ + -*public class Nest.ClrPropertyMappingBase* _Removed (Breaking)_ + -*public class Nest.ClrTypeMapping* _Removed (Breaking)_ + -*public class Nest.ClrTypeMappingDescriptor* _Removed (Breaking)_ + -*public property Nest.ClusterAllocationExplainResponse.Assigned* _Removed (Breaking)_ + -*public property Nest.ClusterAllocationExplainResponse.AssignedNodeId* _Removed (Breaking)_ + -*public property Nest.ClusterAllocationExplainResponse.Nodes* _Removed (Breaking)_ + -*public property Nest.ClusterAllocationExplainResponse.Shard* _Declaration changed (Breaking)_ + -5.x: public ShardAllocationExplanation Shard { get; internal set; } + -6.x: public int Shard { get; internal set; } + - + -*public property Nest.ClusterAllocationExplainResponse.ShardId* _Removed (Breaking)_ + -*public property Nest.ClusterAllocationExplainResponse.ShardStateFetchPending* _Removed (Breaking)_ + -*public property Nest.ClusterHealthResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexHealthStats> Indices { get; internal set; } + -6.x: public IReadOnlyDictionary<IndexName, IndexHealthStats> Indices { get; internal set; } + - + -*public property Nest.ClusterHealthResponse.Status* _Declaration changed (Breaking)_ + -5.x: public string Status { get; internal set; } + -6.x: public Health Status { get; internal set; } + - + -*public property Nest.Collector.Time* _Removed (Breaking)_ + -*public property Nest.CommonTermsQuery.DisableCoord* _Removed (Breaking)_ + -*public method Nest.CommonTermsQueryDescriptor.DisableCoord* _Removed (Breaking)_ + -*public method Nest.ConnectionSettings..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IConnectionPool connectionPool, Func<ConnectionSettings, IElasticsearchSerializer> serializerFactory) + -6.x: public .ctor(IConnectionPool connectionPool, SourceSerializerFactory sourceSerializer) + - + -*public method Nest.ConnectionSettings..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IConnectionPool connectionPool, IConnection connection, ISerializerFactory serializerFactory) + -6.x: public .ctor(IConnectionPool connectionPool, IConnection connection, SourceSerializerFactory sourceSerializer) + - + -*public method Nest.ConnectionSettings..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IConnectionPool connectionPool, IConnection connection, Func<ConnectionSettings, IElasticsearchSerializer> serializerFactory) + -6.x: public .ctor(IConnectionPool connectionPool, IConnection connection, SourceSerializerFactory sourceSerializer, IPropertyMappingProvider propertyMappingProvider) + - + -*public method Nest.ConnectionSettingsBase.MapDefaultTypeIndices* _Removed (Breaking)_ + -*public method Nest.ConnectionSettingsBase.MapDefaultTypeNames* _Removed (Breaking)_ + -*public method Nest.ConnectionSettingsBase.MapIdPropertyFor* _Visibility was changed from public to private (Breaking)_ + -5.x: public TConnectionSettings MapIdPropertyFor(Expression<Func<TDocument, object>> objectPath) + -6.x: private void MapIdPropertyFor(Expression<Func<TDocument, object>> objectPath) + - + -*public method Nest.ConnectionSettingsBase.MapPropertiesFor* _Removed (Breaking)_ + -*public method Nest.ConnectionSettingsBase.PluralizeTypeNames* _Removed (Breaking)_ + -*public class Nest.ContractJsonConverterAttribute* _Visibility was changed from public to internal (Breaking)_ + -5.x: public class ContractJsonConverterAttribute : Attribute, _Attribute + -6.x: internal class ContractJsonConverterAttribute : Attribute, _Attribute + - + -*public method Nest.CountDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.CountRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.CountRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.CountResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public method Nest.CreateDescriptor.Timestamp* _Removed (Breaking)_ + -*public method Nest.CreateDescriptor.Ttl* _Removed (Breaking)_ + -*public method Nest.CreateIndexDescriptor.Similarity* _Removed (Breaking)_ + -*public method Nest.CreateIndexRequest..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IndexName index, IndexState state) + -6.x: public .ctor(IndexName index, IIndexState state) + - + -*public property Nest.CreateIndexRequest.Similarity* _Removed (Breaking)_ + -*public property Nest.CreateRequest.Timestamp* _Removed (Breaking)_ + -*public property Nest.CreateRequest.Ttl* _Removed (Breaking)_ + -*public property Nest.CreateResponse.Created* _Removed (Breaking)_ + -*public property Nest.DateAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.DateHistogramAggregation.ExtendedBounds* _Declaration changed (Breaking)_ + -5.x: public ExtendedBounds ExtendedBounds { get; set; } + -6.x: public ExtendedBounds ExtendedBounds { get; set; } + - + -*public property Nest.DateHistogramAggregation.ExtendedBoundsDateMath* _Removed (Breaking)_ + -*public method Nest.DateHistogramAggregationDescriptor.ExtendedBounds* _Declaration changed (Breaking)_ + -5.x: public DateHistogramAggregationDescriptor ExtendedBounds(DateTime min, DateTime max) + -6.x: public DateHistogramAggregationDescriptor ExtendedBounds(DateMath min, DateMath max) + - + -*public method Nest.DateHistogramAggregationDescriptor.ExtendedBoundsDateMath* _Removed (Breaking)_ + -*public method Nest.DateHistogramBucket..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor() + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> dict) + - + -*public method Nest.DateMathExpression..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Union<DateTime, string> anchor, Time range, DateMathOperation operation) + -6.x: public .ctor(Union<DateTime, string> anchor, DateMathTime range, DateMathOperation operation) + - + -*public method Nest.DateMathExpression.Add* _Declaration changed (Breaking)_ + -5.x: public DateMathExpression Add(Time expression) + -6.x: public DateMathExpression Add(DateMathTime expression) + - + -*public method Nest.DateMathExpression.Operation* _Declaration changed (Breaking)_ + -5.x: public DateMathExpression Operation(Time expression, DateMathOperation operation) + -6.x: public DateMathExpression Operation(DateMathTime expression, DateMathOperation operation) + - + -*public method Nest.DateMathExpression.RoundTo* _Declaration changed (Breaking)_ + -5.x: public DateMath RoundTo(TimeUnit round) + -6.x: public DateMath RoundTo(DateMathTimeUnit round) + - + -*public method Nest.DateMathExpression.Subtract* _Declaration changed (Breaking)_ + -5.x: public DateMathExpression Subtract(Time expression) + -6.x: public DateMathExpression Subtract(DateMathTime expression) + - + -*public property Nest.DateProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.DatePropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public class Nest.DefaultSimilarity* _Removed (Breaking)_ + -*public class Nest.DefaultSimilarityDescriptor* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.Explain* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.StoredFields* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.StoredFields* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.SuggestField* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.SuggestField* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.SuggestMode* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.SuggestSize* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.SuggestText* _Removed (Breaking)_ + -*public method Nest.DeleteByQueryDescriptor.TrackScores* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.Explain* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.StoredFields* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestField* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestMode* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestSize* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestText* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.TrackScores* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.Explain* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.StoredFields* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestField* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestMode* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestSize* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.SuggestText* _Removed (Breaking)_ + -*public property Nest.DeleteByQueryRequest.TrackScores* _Removed (Breaking)_ + -*public property Nest.DeleteResponse.Found* _Removed (Breaking)_ + -*public property Nest.DeleteResponse.Version* _Declaration changed (Breaking)_ + -5.x: public string Version { get; internal set; } + -6.x: public long Version { get; internal set; } + - + -*public method Nest.DeleteScriptDescriptor..ctor* _Removed (Breaking)_ + -*public method Nest.DeleteScriptDescriptor..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public method Nest.DeleteScriptRequest..ctor* _Removed (Breaking)_ + -*public method Nest.DeleteScriptRequest..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public class Nest.DeleteSearchTemplateDescriptor* _Removed (Breaking)_ + -*public class Nest.DeleteSearchTemplateRequest* _Removed (Breaking)_ + -*public class Nest.DeleteSearchTemplateResponse* _Removed (Breaking)_ + -*public method Nest.DslPrettyPrintVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.DslPrettyPrintVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.DslPrettyPrintVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public virtual void Visit(IIndicesQuery query) + -6.x: public virtual void Visit(IMatchPhraseQuery query) + - + -*public method Nest.DslPrettyPrintVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public virtual void Visit(IGeoDistanceRangeQuery query) + -6.x: public virtual void Visit(IMatchPhrasePrefixQuery query) + - + -*public method Nest.DynamicTemplateDescriptor.Mapping* _Declaration changed (Breaking)_ + -5.x: public DynamicTemplateDescriptor Mapping(Func<SingleMappingDescriptor, IProperty> mappingSelector) + -6.x: public DynamicTemplateDescriptor Mapping(Func<SingleMappingSelector, IProperty> mappingSelector) + - + -*public method Nest.ElasticClient.Create* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Create* _Removed (Breaking)_ + -*public method Nest.ElasticClient.CreateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.CreateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteScript* _Declaration changed (Breaking)_ + -5.x: public IDeleteScriptResponse DeleteScript(Name language, Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector) + -6.x: public IDeleteScriptResponse DeleteScript(Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector) + - + -*public method Nest.ElasticClient.DeleteScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task DeleteScriptAsync(Name language, Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task DeleteScriptAsync(Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.ElasticClient.DeleteSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.DeleteSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Explain* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Explain* _Removed (Breaking)_ + -*public method Nest.ElasticClient.ExplainAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.ExplainAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.FieldStats* _Removed (Breaking)_ + -*public method Nest.ElasticClient.FieldStats* _Removed (Breaking)_ + -*public method Nest.ElasticClient.FieldStatsAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.FieldStatsAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetScript* _Declaration changed (Breaking)_ + -5.x: public IGetScriptResponse GetScript(Name language, Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector) + -6.x: public IGetScriptResponse GetScript(Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector) + - + -*public method Nest.ElasticClient.GetScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task GetScriptAsync(Name language, Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task GetScriptAsync(Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.ElasticClient.GetSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.GetSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Index* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Index* _Declaration changed (Breaking)_ + -5.x: public IIndexResponse Index(T document, Func<IndexDescriptor, IIndexRequest> selector) + -6.x: public IIndexResponse Index(T document, Func<IndexDescriptor, IIndexRequest> selector) + - + -*public method Nest.ElasticClient.IndexAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.IndexAsync* _Declaration changed (Breaking)_ + -5.x: public Task IndexAsync(T document, Func<IndexDescriptor, IIndexRequest> selector, CancellationToken cancellationToken) + -6.x: public Task IndexAsync(T document, Func<IndexDescriptor, IIndexRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.ElasticClient.MultiPercolate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.MultiPercolate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.MultiPercolateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.MultiPercolateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Percolate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Percolate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateCount* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateCount* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateCountAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PercolateCountAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutScript* _Declaration changed (Breaking)_ + -5.x: public IPutScriptResponse PutScript(Name language, Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector) + -6.x: public IPutScriptResponse PutScript(Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector) + - + -*public method Nest.ElasticClient.PutScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task PutScriptAsync(Name language, Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task PutScriptAsync(Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.ElasticClient.PutSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutSearchTemplate* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.PutSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.RegisterPercolator* _Removed (Breaking)_ + -*public method Nest.ElasticClient.RegisterPercolator* _Removed (Breaking)_ + -*public method Nest.ElasticClient.RegisterPercolatorAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.RegisterPercolatorAsync* _Removed (Breaking)_ + -*public property Nest.ElasticClient.Serializer* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.ElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.ElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.UnregisterPercolator* _Removed (Breaking)_ + -*public method Nest.ElasticClient.UnregisterPercolator* _Removed (Breaking)_ + -*public method Nest.ElasticClient.UnregisterPercolatorAsync* _Removed (Breaking)_ + -*public method Nest.ElasticClient.UnregisterPercolatorAsync* _Removed (Breaking)_ + -*public class Nest.ElasticContractResolver* _Visibility was changed from public to internal (Breaking)_ + -5.x: public class ElasticContractResolver : DefaultContractResolver, IContractResolver + -6.x: internal class ElasticContractResolver : DefaultContractResolver, IContractResolver + - + -*public class Nest.ExactContractJsonConverterAttribute* _Visibility was changed from public to internal (Breaking)_ + -5.x: public class ExactContractJsonConverterAttribute : Attribute, _Attribute + -6.x: internal class ExactContractJsonConverterAttribute : Attribute, _Attribute + - + -*public method Nest.ExplainDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public method Nest.ExplainDescriptor.StoredFields* _Declaration changed (Breaking)_ + -5.x: public ExplainDescriptor StoredFields(Expression`1[] fields) + -6.x: public ExplainDescriptor StoredFields(Fields fields) + - + -*public property Nest.ExplainRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public class Nest.ExplainResponse* _Removed (Breaking)_ + -*public class Nest.Features* _Removed (Breaking)_ + -*public method Nest.FieldCapabilitiesDescriptor.Fields* _Removed (Breaking)_ + -*public property Nest.FieldCapabilitiesResponse.Fields* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, FieldTypes> Fields { get; internal set; } + -6.x: public FieldCapabilitiesFields Fields { get; internal set; } + - + -*public property Nest.FieldCapabilitiesResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public property Nest.FieldMapping.Mapping* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IFieldMapping> Mapping { get; internal set; } + -6.x: public IReadOnlyDictionary<Field, IFieldMapping> Mapping { get; internal set; } + - + -*public method Nest.FieldMappingProperties..ctor* _Visibility was changed from public to internal (Breaking)_ + -5.x: public .ctor() + -6.x: internal .ctor(IConnectionConfigurationValues connectionSettings, IReadOnlyDictionary<Field, FieldMapping> backingDictionary) + - + -*public class Nest.FieldStats* _Removed (Breaking)_ + -*public class Nest.FieldStatsDescriptor* _Removed (Breaking)_ + -*public class Nest.FieldStatsField* _Removed (Breaking)_ + -*public class Nest.FieldStatsRequest* _Removed (Breaking)_ + -*public class Nest.FieldStatsResponse* _Removed (Breaking)_ + -*public enum Nest.FieldType* _Declaration changed (Breaking)_ + -5.x: public enum FieldType { None = 0, GeoPoint = 1, GeoShape = 2, Attachment = 3, Ip = 4, Binary = 5, String = 6, Keyword = 7, Text = 8, Date = 9, Boolean = 10, Completion = 11, Nested = 12, Object = 13, Murmur3Hash = 14, TokenCount = 15, Percolator = 16, Integer = 17, Long = 18, Short = 19, Byte = 20, Float = 21, HalfFloat = 22, ScaledFloat = 23, Double = 24, IntegerRange = 25, FloatRange = 26, LongRange = 27, DoubleRange = 28, DateRange = 29} + -6.x: public enum FieldType { None = 0, GeoPoint = 1, GeoShape = 2, Ip = 3, Binary = 4, Keyword = 5, Text = 6, Date = 7, Boolean = 8, Completion = 9, Nested = 10, Object = 11, Murmur3Hash = 12, TokenCount = 13, Percolator = 14, Integer = 15, Long = 16, Short = 17, Byte = 18, Float = 19, HalfFloat = 20, ScaledFloat = 21, Double = 22, IntegerRange = 23, FloatRange = 24, LongRange = 25, DoubleRange = 26, DateRange = 27, Join = 28} + - + -*public method Nest.FieldValues..ctor* _Visibility was changed from public to internal (Breaking)_ + -5.x: public .ctor(Inferrer inferrer, IDictionary<string, object> container) + -6.x: internal .ctor(Inferrer inferrer, IDictionary<string, LazyDocument> container) + - + -*public method Nest.FieldValues.Value* _Removed (Breaking)_ + -*public method Nest.FieldValues.ValueOf<T, K>* _Removed (Breaking)_ + -*public method Nest.FieldValues.Values<T, K>* _Removed (Breaking)_ + -*public method Nest.FieldValues.ValuesOf* _Removed (Breaking)_ + -*public class Nest.FileScript* _Removed (Breaking)_ + -*public class Nest.FileScriptCondition* _Removed (Breaking)_ + -*public class Nest.FileScriptConditionDescriptor* _Removed (Breaking)_ + -*public class Nest.FileScriptDescriptor* _Removed (Breaking)_ + -*public class Nest.FileScriptTransform* _Removed (Breaking)_ + -*public class Nest.FileScriptTransformDescriptor* _Removed (Breaking)_ + -*public property Nest.FileSystemStats.DataPathStats.Spins* _Removed (Breaking)_ + -*public method Nest.FiltersAggregate..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> aggregations) + - + -*public method Nest.FiltersBucketItem..ctor* _Removed (Breaking)_ + -*public method Nest.FiltersBucketItem..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> dict) + - + -*public enum Nest.FinalDecision* _Removed (Breaking)_ + -*public method Nest.FlushJobDescriptor.SkipTime* _Declaration changed (Breaking)_ + -5.x: public FlushJobDescriptor SkipTime(DateTimeOffset skipTime) + -6.x: public FlushJobDescriptor SkipTime(string skipTime) + - + -*public property Nest.FlushJobRequest.SkipTime* _Declaration changed (Breaking)_ + -5.x: public Nullable SkipTime { get; set; } + -6.x: public string SkipTime { get; set; } + - + -*public property Nest.FuzzyQueryBase<TValue, TFuzziness>.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.FuzzyQueryBase<TValue, TFuzziness>.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public method Nest.FuzzyQueryDescriptorBase<TDescriptor, T, TValue, TFuzziness>.Rewrite* _Removed (Breaking)_ + -*public property Nest.GenericProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.GenericPropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.GenericPropertyDescriptor.Index* _Removed (Breaking)_ + -*public property Nest.GeoBoundingBoxQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.GeoBoundingBoxQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public method Nest.GeoBoundingBoxQueryDescriptor.Coerce* _Removed (Breaking)_ + -*public method Nest.GeoBoundingBoxQueryDescriptor.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.GeoCentroidAggregate.Count* _Declaration changed (Breaking)_ + -5.x: public long? Count { get; set; } + -6.x: public long Count { get; set; } + - + -*public property Nest.GeoDistanceAggregation.Ranges* _Declaration changed (Breaking)_ + -5.x: public IEnumerable Ranges { get; set; } + -6.x: public IEnumerable Ranges { get; set; } + - + -*public property Nest.GeoDistanceQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.GeoDistanceQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.GeoDistanceQuery.OptimizeBoundingBox* _Removed (Breaking)_ + -*public method Nest.GeoDistanceQueryDescriptor.Coerce* _Removed (Breaking)_ + -*public method Nest.GeoDistanceQueryDescriptor.IgnoreMalformed* _Removed (Breaking)_ + -*public method Nest.GeoDistanceQueryDescriptor.Optimize* _Removed (Breaking)_ + -*public class Nest.GeoDistanceRangeQuery* _Removed (Breaking)_ + -*public class Nest.GeoDistanceRangeQueryDescriptor* _Removed (Breaking)_ + -*public enum Nest.GeoDistanceType* _Declaration changed (Breaking)_ + -5.x: public enum GeoDistanceType { SloppyArc = 0, Arc = 1, Plane = 2} + -6.x: public enum GeoDistanceType { Arc = 0, Plane = 1} + - + -*public class Nest.GeoHashCellQuery* _Removed (Breaking)_ + -*public class Nest.GeoHashCellQueryDescriptor* _Removed (Breaking)_ + -*public enum Nest.GeoOptimizeBBox* _Removed (Breaking)_ + -*public property Nest.GeoPolygonQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.GeoPolygonQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public method Nest.GeoPolygonQueryDescriptor.Coerce* _Removed (Breaking)_ + -*public method Nest.GeoPolygonQueryDescriptor.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.GeoShapeQueryBase.IgnoreUnmapped* _Removed (Breaking)_ + -*public method Nest.GeoShapeQueryDescriptorBase<TDescriptor, TInterface, T>.IgnoreUnmapped* _Removed (Breaking)_ + -*public property Nest.GetAliasResponse.Error* _Removed (Breaking)_ + -*public property Nest.GetAliasResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IReadOnlyList> Indices { get; internal set; } + -6.x: public IReadOnlyDictionary<IndexName, IndexAliases> Indices { get; } + - + -*public property Nest.GetAliasResponse.StatusCode* _Removed (Breaking)_ + -*public property Nest.GetFieldMappingResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, TypeFieldMappings> Indices { get; internal set; } + -6.x: public IReadOnlyDictionary<IndexName, TypeFieldMappings> Indices { get; } + - + -*public method Nest.GetFieldMappingResponse.MappingFor* _Removed (Breaking)_ + -*public method Nest.GetFieldMappingResponse.MappingFor* _Declaration changed (Breaking)_ + -5.x: public IFieldMapping MappingFor(Expression<Func<T, object>> fieldName) + -6.x: public IFieldMapping MappingFor(Expression<Func<T, object>> objectPath, IndexName index, TypeName type) + - + -*public method Nest.GetFieldMappingResponse.MappingFor* _Declaration changed (Breaking)_ + -5.x: public IFieldMapping MappingFor(string fieldName) + -6.x: public IFieldMapping MappingFor(Field property, IndexName index, TypeName type) + - + -*public method Nest.GetFieldMappingResponse.MappingsFor* _Visibility was changed from public to private (Breaking)_ + -5.x: public FieldMappingProperties MappingsFor(string indexName, string typeName) + -6.x: private FieldMappingProperties MappingsFor(IndexName index, TypeName type) + - + -*public method Nest.GetFieldMappingResponse.MappingsFor* _Removed (Breaking)_ + -*public method Nest.GetIndexDescriptor.Feature* _Removed (Breaking)_ + -*public method Nest.GetIndexRequest..ctor* _Removed (Breaking)_ + -*public property Nest.GetIndexResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexState> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexState> Indices { get; } + - + -*public property Nest.GetIndexSettingsResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexState> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexState> Indices { get; } + - + -*public property Nest.GetMappingResponse.Mapping* _Declaration changed (Breaking)_ + -5.x: public TypeMapping Mapping { get; internal set; } + -6.x: public ITypeMapping Mapping { get; } + - + -*public property Nest.GetMappingResponse.Mappings* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IReadOnlyDictionary<string, TypeMapping>> Mappings { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexMappings> Mappings { get; } + - + -*public class Nest.GetResponse* _Removed (Breaking)_ + -*public method Nest.GetScriptDescriptor..ctor* _Removed (Breaking)_ + -*public method Nest.GetScriptDescriptor..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public method Nest.GetScriptRequest..ctor* _Removed (Breaking)_ + -*public method Nest.GetScriptRequest..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public property Nest.GetScriptResponse.Script* _Declaration changed (Breaking)_ + -5.x: public string Script { get; set; } + -6.x: public IStoredScript Script { get; set; } + - + -*public class Nest.GetSearchTemplateDescriptor* _Removed (Breaking)_ + -*public class Nest.GetSearchTemplateRequest* _Removed (Breaking)_ + -*public class Nest.GetSearchTemplateResponse* _Removed (Breaking)_ + -*public property Nest.GraphExploreResponse.Failures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection Failures { get; internal set; } + -6.x: public IReadOnlyCollection Failures { get; internal set; } + - + -*public property Nest.HasParentQuery.Type* _Removed (Breaking)_ + -*public method Nest.HasParentQueryDescriptor.Type* _Removed (Breaking)_ + -*public property Nest.Highlight.BoundaryMaxSize* _Removed (Breaking)_ + -*public method Nest.HighlightDescriptor.BoundaryMaxSize* _Removed (Breaking)_ + -*public enum Nest.HighlighterType* _Declaration changed (Breaking)_ + -5.x: public enum HighlighterType { Plain = 0, Postings = 1, Fvh = 2, Unified = 3} + -6.x: public enum HighlighterType { Plain = 0, Fvh = 1, Unified = 2} + - + -*public property Nest.HighlightField.Encoder* _Removed (Breaking)_ + -*public method Nest.HighlightFieldDescriptor.Encoder* _Removed (Breaking)_ + -*public property Nest.HistogramAggregation.PostOffset* _Removed (Breaking)_ + -*public property Nest.HistogramAggregation.PreOffset* _Removed (Breaking)_ + -*public method Nest.HistogramAggregationDescriptor.PostOffset* _Removed (Breaking)_ + -*public method Nest.HistogramAggregationDescriptor.PreOffset* _Removed (Breaking)_ + -*public class Nest.Hit* _Removed (Breaking)_ + -*public class Nest.HitsMetaData* _Removed (Breaking)_ + -*public property Nest.HunspellTokenFilter.IgnoreCase* _Removed (Breaking)_ + -*public method Nest.HunspellTokenFilterDescriptor.IgnoreCase* _Removed (Breaking)_ + -*public property Nest.IAnalysisLimits.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public long? ModelMemoryLimit { get; set; } + -6.x: public string ModelMemoryLimit { get; set; } + - + -*public property Nest.IAnalysisMemoryLimit.ModelMemoryLimit* _Declaration changed (Breaking)_ + -5.x: public long? ModelMemoryLimit { get; set; } + -6.x: public string ModelMemoryLimit { get; set; } + - + -*public property Nest.IAnalyzeRequest.CharFilter* _Declaration changed (Breaking)_ + -5.x: public String[] CharFilter { get; set; } + -6.x: public AnalyzeCharFilters CharFilter { get; set; } + - + -*public property Nest.IAnalyzeRequest.Filter* _Declaration changed (Breaking)_ + -5.x: public String[] Filter { get; set; } + -6.x: public AnalyzeTokenFilters Filter { get; set; } + - + -*public property Nest.IAnalyzeRequest.Text* _Declaration changed (Breaking)_ + -5.x: public String[] Text { get; set; } + -6.x: public IEnumerable Text { get; set; } + - + -*public property Nest.IAnalyzeRequest.Tokenizer* _Declaration changed (Breaking)_ + -5.x: public string Tokenizer { get; set; } + -6.x: public Union<string, ITokenizer> Tokenizer { get; set; } + - + -*public interface Nest.IAttachmentProperty* _Removed (Breaking)_ + -*public property Nest.IBoolQuery.DisableCoord* _Removed (Breaking)_ + -*public property Nest.IBulkOperation.Timestamp* _Removed (Breaking)_ + -*public property Nest.IBulkOperation.Ttl* _Removed (Breaking)_ + -*public property Nest.IBulkResponse.Items* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection Items { get; } + -6.x: public IReadOnlyCollection Items { get; } + - + -*public property Nest.IBulkResponse.ItemsWithErrors* _Declaration changed (Breaking)_ + -5.x: public IEnumerable ItemsWithErrors { get; } + -6.x: public IEnumerable ItemsWithErrors { get; } + - + -*public property Nest.ICancelTasksResponse.NodeFailures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection NodeFailures { get; } + -6.x: public IReadOnlyCollection NodeFailures { get; } + - + -*public property Nest.IChildrenAggregation.Type* _Declaration changed (Breaking)_ + -5.x: public TypeName Type { get; set; } + -6.x: public RelationName Type { get; set; } + - + -*public interface Nest.IClrTypeMapping* _Removed (Breaking)_ + -*public interface Nest.IClrTypePropertyMapping* _Removed (Breaking)_ + -*public property Nest.IClusterAllocationExplainResponse.Assigned* _Removed (Breaking)_ + -*public property Nest.IClusterAllocationExplainResponse.AssignedNodeId* _Removed (Breaking)_ + -*public property Nest.IClusterAllocationExplainResponse.Nodes* _Removed (Breaking)_ + -*public property Nest.IClusterAllocationExplainResponse.Shard* _Declaration changed (Breaking)_ + -5.x: public ShardAllocationExplanation Shard { get; } + -6.x: public int Shard { get; } + - + -*public property Nest.IClusterAllocationExplainResponse.ShardId* _Removed (Breaking)_ + -*public property Nest.IClusterAllocationExplainResponse.ShardStateFetchPending* _Removed (Breaking)_ + -*public property Nest.IClusterHealthResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexHealthStats> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexHealthStats> Indices { get; } + - + -*public property Nest.IClusterHealthResponse.Status* _Declaration changed (Breaking)_ + -5.x: public string Status { get; } + -6.x: public Health Status { get; } + - + -*public property Nest.ICommonTermsQuery.DisableCoord* _Removed (Breaking)_ + -*public property Nest.IConnectionSettingsValues.PropertyMappings* _Declaration changed (Breaking)_ + -5.x: public FluentDictionary<MemberInfo, IPropertyMapping> PropertyMappings { get; } + -6.x: public FluentDictionary<MemberInfo, IPropertyMapping> PropertyMappings { get; } + - + -*public property Nest.IConnectionSettingsValues.SerializerFactory* _Removed (Breaking)_ + -*public method Nest.IConnectionSettingsValues.StatefulSerializer* _Removed (Breaking)_ + -*public property Nest.ICountResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.ICovariantSearchRequest.ElasticsearchTypes* _Removed (Breaking)_ + -*public property Nest.ICovariantSearchRequest.TypeSelector* _Removed (Breaking)_ + -*public interface Nest.ICreateRequest* _Removed (Breaking)_ + -*public property Nest.ICreateResponse.Created* _Removed (Breaking)_ + -*public method Nest.Id.GetString* _Removed (Breaking)_ + -*public property Nest.IDateHistogramAggregation.ExtendedBounds* _Declaration changed (Breaking)_ + -5.x: public ExtendedBounds ExtendedBounds { get; set; } + -6.x: public ExtendedBounds ExtendedBounds { get; set; } + - + -*public property Nest.IDateHistogramAggregation.ExtendedBoundsDateMath* _Removed (Breaking)_ + -*public property Nest.IDateMath.Ranges* _Declaration changed (Breaking)_ + -5.x: public IList<Tuple<DateMathOperation, Time>> Ranges { get; } + -6.x: public IList<Tuple<DateMathOperation, DateMathTime>> Ranges { get; } + - + -*public property Nest.IDateMath.Round* _Declaration changed (Breaking)_ + -5.x: public Nullable Round { get; } + -6.x: public Nullable Round { get; } + - + -*public property Nest.IDateProperty.IncludeInAll* _Removed (Breaking)_ + -*public interface Nest.IDefaultSimilarity* _Removed (Breaking)_ + -*public property Nest.IDeleteResponse.Found* _Removed (Breaking)_ + -*public property Nest.IDeleteResponse.Version* _Declaration changed (Breaking)_ + -5.x: public string Version { get; } + -6.x: public long Version { get; } + - + -*public property Nest.IDeleteScriptRequest.Lang* _Removed (Breaking)_ + -*public interface Nest.IDeleteSearchTemplateRequest* _Removed (Breaking)_ + -*public interface Nest.IDeleteSearchTemplateResponse* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Create* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Create* _Removed (Breaking)_ + -*public method Nest.IElasticClient.CreateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.CreateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteScript* _Declaration changed (Breaking)_ + -5.x: public IDeleteScriptResponse DeleteScript(Name language, Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector) + -6.x: public IDeleteScriptResponse DeleteScript(Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector) + - + -*public method Nest.IElasticClient.DeleteScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task DeleteScriptAsync(Name language, Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task DeleteScriptAsync(Id id, Func<DeleteScriptDescriptor, IDeleteScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.IElasticClient.DeleteSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.DeleteSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Explain* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Explain* _Removed (Breaking)_ + -*public method Nest.IElasticClient.ExplainAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.ExplainAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.FieldStats* _Removed (Breaking)_ + -*public method Nest.IElasticClient.FieldStats* _Removed (Breaking)_ + -*public method Nest.IElasticClient.FieldStatsAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.FieldStatsAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetScript* _Declaration changed (Breaking)_ + -5.x: public IGetScriptResponse GetScript(Name language, Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector) + -6.x: public IGetScriptResponse GetScript(Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector) + - + -*public method Nest.IElasticClient.GetScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task GetScriptAsync(Name language, Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task GetScriptAsync(Id id, Func<GetScriptDescriptor, IGetScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.IElasticClient.GetSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.GetSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Index* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Index* _Declaration changed (Breaking)_ + -5.x: public IIndexResponse Index(T document, Func<IndexDescriptor, IIndexRequest> selector) + -6.x: public IIndexResponse Index(T document, Func<IndexDescriptor, IIndexRequest> selector) + - + -*public method Nest.IElasticClient.IndexAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.IndexAsync* _Declaration changed (Breaking)_ + -5.x: public Task IndexAsync(T document, Func<IndexDescriptor, IIndexRequest> selector, CancellationToken cancellationToken) + -6.x: public Task IndexAsync(T document, Func<IndexDescriptor, IIndexRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.IElasticClient.MultiPercolate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.MultiPercolate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.MultiPercolateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.MultiPercolateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Percolate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Percolate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateCount* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateCount* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateCountAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PercolateCountAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutScript* _Declaration changed (Breaking)_ + -5.x: public IPutScriptResponse PutScript(Name language, Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector) + -6.x: public IPutScriptResponse PutScript(Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector) + - + -*public method Nest.IElasticClient.PutScriptAsync* _Declaration changed (Breaking)_ + -5.x: public Task PutScriptAsync(Name language, Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector, CancellationToken cancellationToken) + -6.x: public Task PutScriptAsync(Id id, Func<PutScriptDescriptor, IPutScriptRequest> selector, CancellationToken cancellationToken) + - + -*public method Nest.IElasticClient.PutSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutSearchTemplate* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.PutSearchTemplateAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.RegisterPercolator* _Removed (Breaking)_ + -*public method Nest.IElasticClient.RegisterPercolator* _Removed (Breaking)_ + -*public method Nest.IElasticClient.RegisterPercolatorAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.RegisterPercolatorAsync* _Removed (Breaking)_ + -*public property Nest.IElasticClient.Serializer* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.IElasticClient.Suggest* _Removed (Breaking)_ + -*public method Nest.IElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.SuggestAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.UnregisterPercolator* _Removed (Breaking)_ + -*public method Nest.IElasticClient.UnregisterPercolator* _Removed (Breaking)_ + -*public method Nest.IElasticClient.UnregisterPercolatorAsync* _Removed (Breaking)_ + -*public method Nest.IElasticClient.UnregisterPercolatorAsync* _Removed (Breaking)_ + -*public interface Nest.IExplainResponse* _Removed (Breaking)_ + -*public interface Nest.IFailureReason* _Removed (Breaking)_ + -*public property Nest.IFieldCapabilitiesResponse.Fields* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, FieldTypes> Fields { get; } + -6.x: public FieldCapabilitiesFields Fields { get; } + - + -*public interface Nest.IFieldStatsRequest* _Removed (Breaking)_ + -*public interface Nest.IFieldStatsResponse* _Removed (Breaking)_ + -*public interface Nest.IFileScript* _Removed (Breaking)_ + -*public interface Nest.IFileScriptCondition* _Removed (Breaking)_ + -*public interface Nest.IFileScriptTransform* _Removed (Breaking)_ + -*public property Nest.IFlushJobRequest.SkipTime* _Removed (Breaking)_ + -*public property Nest.IFuzzyQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IFuzzyQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public property Nest.IGenericProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.IGeoBoundingBoxQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.IGeoBoundingBoxQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.IGeoDistanceAggregation.Ranges* _Declaration changed (Breaking)_ + -5.x: public IEnumerable Ranges { get; set; } + -6.x: public IEnumerable Ranges { get; set; } + - + -*public property Nest.IGeoDistanceQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.IGeoDistanceQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.IGeoDistanceQuery.OptimizeBoundingBox* _Removed (Breaking)_ + -*public interface Nest.IGeoDistanceRangeQuery* _Removed (Breaking)_ + -*public interface Nest.IGeoHashCellQuery* _Removed (Breaking)_ + -*public property Nest.IGeoPolygonQuery.Coerce* _Removed (Breaking)_ + -*public property Nest.IGeoPolygonQuery.IgnoreMalformed* _Removed (Breaking)_ + -*public property Nest.IGeoShapeQuery.IgnoreUnmapped* _Removed (Breaking)_ + -*public property Nest.IGetAliasResponse.Error* _Removed (Breaking)_ + -*public property Nest.IGetAliasResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IReadOnlyList> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexAliases> Indices { get; } + - + -*public property Nest.IGetAliasResponse.StatusCode* _Removed (Breaking)_ + -*public property Nest.IGetFieldMappingResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, TypeFieldMappings> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, TypeFieldMappings> Indices { get; } + - + -*public method Nest.IGetFieldMappingResponse.MappingFor* _Removed (Breaking)_ + -*public method Nest.IGetFieldMappingResponse.MappingFor* _Declaration changed (Breaking)_ + -5.x: public IFieldMapping MappingFor(Expression<Func<T, object>> fieldName) + -6.x: public IFieldMapping MappingFor(Expression<Func<T, object>> objectPath, IndexName index, TypeName type) + - + -*public method Nest.IGetFieldMappingResponse.MappingFor* _Declaration changed (Breaking)_ + -5.x: public IFieldMapping MappingFor(string fieldName) + -6.x: public IFieldMapping MappingFor(Field property, IndexName index, TypeName type) + - + -*public method Nest.IGetFieldMappingResponse.MappingsFor* _Removed (Breaking)_ + -*public method Nest.IGetFieldMappingResponse.MappingsFor* _Removed (Breaking)_ + -*public property Nest.IGetIndexRequest.Feature* _Removed (Breaking)_ + -*public property Nest.IGetIndexResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexState> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexState> Indices { get; } + - + -*public property Nest.IGetIndexSettingsResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IndexState> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexState> Indices { get; } + - + -*public property Nest.IGetMappingResponse.Mapping* _Removed (Breaking)_ + -*public property Nest.IGetMappingResponse.Mappings* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IReadOnlyDictionary<string, TypeMapping>> Mappings { get; } + -6.x: public IReadOnlyDictionary<IndexName, IndexMappings> Mappings { get; } + - + -*public interface Nest.IGetResponse* _Removed (Breaking)_ + -*public property Nest.IGetScriptRequest.Lang* _Removed (Breaking)_ + -*public property Nest.IGetScriptResponse.Script* _Declaration changed (Breaking)_ + -5.x: public string Script { get; } + -6.x: public IStoredScript Script { get; } + - + -*public interface Nest.IGetSearchTemplateRequest* _Removed (Breaking)_ + -*public interface Nest.IGetSearchTemplateResponse* _Removed (Breaking)_ + -*public class Nest.IgnorePropertyMapping* _Removed (Breaking)_ + -*public property Nest.IGraphExploreResponse.Failures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection Failures { get; } + -6.x: public IReadOnlyCollection Failures { get; } + - + -*public property Nest.IHasParentQuery.Type* _Removed (Breaking)_ + -*public method Nest.IHighLevelToLowLevelDispatcher.Dispatch<TRequest, TQueryString, TResponse>* _Declaration changed (Breaking)_ + -5.x: public TResponse Dispatch<TRequest, TQueryString, TResponse>(TRequest descriptor, Func<IApiCallDetails, Stream, TResponse> responseGenerator, Func<TRequest, PostData, ElasticsearchResponse> dispatch) where TRequest : IRequest where TQueryString : new(), FluentRequestParameters where TResponse : ResponseBase + -6.x: public TResponse Dispatch<TRequest, TQueryString, TResponse>(TRequest descriptor, Func<IApiCallDetails, Stream, TResponse> responseGenerator, Func<TRequest, SerializableData, TResponse> dispatch) where TRequest : IRequest where TQueryString : new(), RequestParameters where TResponse : ResponseBase + - + -*public method Nest.IHighLevelToLowLevelDispatcher.Dispatch<TRequest, TQueryString, TResponse>* _Declaration changed (Breaking)_ + -5.x: public TResponse Dispatch<TRequest, TQueryString, TResponse>(TRequest descriptor, Func<TRequest, PostData, ElasticsearchResponse> dispatch) where TRequest : IRequest where TQueryString : new(), FluentRequestParameters where TResponse : ResponseBase + -6.x: public TResponse Dispatch<TRequest, TQueryString, TResponse>(TRequest descriptor, Func<TRequest, SerializableData, TResponse> dispatch) where TRequest : IRequest where TQueryString : new(), RequestParameters where TResponse : ResponseBase + - + -*public method Nest.IHighLevelToLowLevelDispatcher.DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>* _Declaration changed (Breaking)_ + -5.x: public Task DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>(TRequest descriptor, CancellationToken cancellationToken, Func<IApiCallDetails, Stream, TResponse> responseGenerator, Func<TRequest, PostData, CancellationToken, Task<ElasticsearchResponse>> dispatch) where TRequest : IRequest where TQueryString : new(), FluentRequestParameters where TResponse : ResponseBase, TResponseInterface where TResponseInterface : IResponse + -6.x: public Task DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>(TRequest descriptor, CancellationToken cancellationToken, Func<IApiCallDetails, Stream, TResponse> responseGenerator, Func<TRequest, SerializableData, CancellationToken, Task> dispatch) where TRequest : IRequest where TQueryString : new(), RequestParameters where TResponse : ResponseBase, TResponseInterface where TResponseInterface : IResponse + - + -*public method Nest.IHighLevelToLowLevelDispatcher.DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>* _Declaration changed (Breaking)_ + -5.x: public Task DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>(TRequest descriptor, CancellationToken cancellationToken, Func<TRequest, PostData, CancellationToken, Task<ElasticsearchResponse>> dispatch) where TRequest : IRequest where TQueryString : new(), FluentRequestParameters where TResponse : ResponseBase, TResponseInterface where TResponseInterface : IResponse + -6.x: public Task DispatchAsync<TRequest, TQueryString, TResponse, TResponseInterface>(TRequest descriptor, CancellationToken cancellationToken, Func<TRequest, SerializableData, CancellationToken, Task> dispatch) where TRequest : IRequest where TQueryString : new(), RequestParameters where TResponse : ResponseBase, TResponseInterface where TResponseInterface : IResponse + - + -*public property Nest.IHighlight.BoundaryMaxSize* _Removed (Breaking)_ + -*public property Nest.IHighlightField.Encoder* _Removed (Breaking)_ + -*public property Nest.IHistogramAggregation.PostOffset* _Removed (Breaking)_ + -*public property Nest.IHistogramAggregation.PreOffset* _Removed (Breaking)_ + -*public interface Nest.IHit* _Removed (Breaking)_ + -*public interface Nest.IHitMetadata* _Removed (Breaking)_ + -*public property Nest.IHunspellTokenFilter.IgnoreCase* _Removed (Breaking)_ + -*public interface Nest.IIndexConstraint* _Removed (Breaking)_ + -*public interface Nest.IIndexConstraintComparison* _Removed (Breaking)_ + -*public interface Nest.IIndexConstraints* _Removed (Breaking)_ + -*public interface Nest.IIndexRequest* _Removed (Breaking)_ + -*public property Nest.IIndexResponse.Created* _Removed (Breaking)_ + -*public property Nest.IIndexState.Similarity* _Removed (Breaking)_ + -*public interface Nest.IIndicesQuery* _Removed (Breaking)_ + -*public property Nest.IIndicesResponse.ShardsHit* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData ShardsHit { get; } + -6.x: public ShardStatistics ShardsHit { get; } + - + -*public property Nest.IIndicesStatsResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.IInnerHits.FielddataFields* _Removed (Breaking)_ + -*public property Nest.IIpProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.IKeywordProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ILikeDocument.CanBeFlattened* _Removed (Breaking)_ + -*public property Nest.ILikeDocument.ClrType* _Removed (Breaking)_ + -*public property Nest.IListTasksResponse.NodeFailures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection NodeFailures { get; } + -6.x: public IReadOnlyCollection NodeFailures { get; } + - + -*public method Nest.IMappingVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public void Visit(IStringProperty property) + -6.x: public void Visit(IJoinProperty property) + - + -*public method Nest.IMappingVisitor.Visit* _Removed (Breaking)_ + -*public property Nest.IMatchQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IMatchQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public property Nest.IMatchQuery.Slop* _Removed (Breaking)_ + -*public property Nest.IMatchQuery.Type* _Removed (Breaking)_ + -*public interface Nest.IMultiGetHit* _Removed (Breaking)_ + -*public property Nest.IMultiGetResponse.Documents* _Removed (Breaking)_ + -*public property Nest.IMultiMatchQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IMultiMatchQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public interface Nest.IMultiPercolateRequest* _Removed (Breaking)_ + -*public interface Nest.IMultiPercolateResponse* _Removed (Breaking)_ + -*public method Nest.IMultiSearchResponse.GetResponse* _Declaration changed (Breaking)_ + -5.x: public SearchResponse GetResponse(string name) + -6.x: public ISearchResponse GetResponse(string name) + - + -*public method Nest.IMultiSearchResponse.GetResponses* _Declaration changed (Breaking)_ + -5.x: public IEnumerable<SearchResponse> GetResponses() + -6.x: public IEnumerable<ISearchResponse> GetResponses() + - + -*public class Nest.IndexConstraint* _Removed (Breaking)_ + -*public class Nest.IndexConstraintComparison* _Removed (Breaking)_ + -*public class Nest.IndexConstraintComparisonDescriptor* _Removed (Breaking)_ + -*public class Nest.IndexConstraintDescriptor* _Removed (Breaking)_ + -*public class Nest.IndexConstraints* _Removed (Breaking)_ + -*public class Nest.IndexConstraintsDescriptor* _Removed (Breaking)_ + -*public method Nest.IndexDescriptor.Timestamp* _Removed (Breaking)_ + -*public method Nest.IndexDescriptor.Ttl* _Removed (Breaking)_ + -*public property Nest.IndexHealthStats.Status* _Declaration changed (Breaking)_ + -5.x: public string Status { get; internal set; } + -6.x: public Health Status { get; internal set; } + - + -*public method Nest.IndexName..ctor* _Visibility was changed from public to private (Breaking)_ + -5.x: public .ctor() + -6.x: private .ctor(string index, string cluster) + - + -*public property Nest.IndexName.Cluster* _Declaration changed (Breaking)_ + -5.x: public string Cluster { get; set; } + -6.x: public string Cluster { get; } + - + -*public method Nest.IndexName.EqualsMarker* _Visibility was changed from public to private (Breaking)_ + -5.x: public bool EqualsMarker(IndexName other) + -6.x: private bool EqualsMarker(IndexName other) + - + -*public method Nest.IndexName.EqualsString* _Visibility was changed from public to private (Breaking)_ + -5.x: public bool EqualsString(string other) + -6.x: private bool EqualsString(string other) + - + -*public property Nest.IndexName.Name* _Declaration changed (Breaking)_ + -5.x: public string Name { get; set; } + -6.x: public string Name { get; } + - + -*public property Nest.IndexName.Type* _Declaration changed (Breaking)_ + -5.x: public Type Type { get; set; } + -6.x: public Type Type { get; } + - + -*public property Nest.IndexRequest.Timestamp* _Removed (Breaking)_ + -*public property Nest.IndexRequest.Ttl* _Removed (Breaking)_ + -*public property Nest.IndexResponse.Created* _Removed (Breaking)_ + -*public property Nest.IndexState.Similarity* _Removed (Breaking)_ + -*public method Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAlias* _Declaration changed (Breaking)_ + -5.x: public static IEnumerable GetIndicesPointingToAlias(IElasticClient client, Names alias) + -6.x: public static IReadOnlyCollection GetIndicesPointingToAlias(IElasticClient client, Names alias) + - + -*public method Nest.IndicesPointingToAliasExtensions.GetIndicesPointingToAliasAsync* _Declaration changed (Breaking)_ + -5.x: public static Task<IEnumerable> GetIndicesPointingToAliasAsync(IElasticClient client, Names alias) + -6.x: public static Task<IReadOnlyCollection> GetIndicesPointingToAliasAsync(IElasticClient client, Names alias) + - + -*public class Nest.IndicesQuery* _Removed (Breaking)_ + -*public class Nest.IndicesQueryDescriptor* _Removed (Breaking)_ + -*public property Nest.IndicesResponseBase.ShardsHit* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData ShardsHit { get; private set; } + -6.x: public ShardStatistics ShardsHit { get; private set; } + - + -*public property Nest.IndicesStatsResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public class Nest.Inflector* _Removed (Breaking)_ + -*public method Nest.InlineScriptTransformDescriptor..ctor* _Removed (Breaking)_ + -*public property Nest.InnerHits.FielddataFields* _Removed (Breaking)_ + -*public method Nest.InnerHitsDescriptor.FielddataFields* _Removed (Breaking)_ + -*public method Nest.InnerHitsDescriptor.FielddataFields* _Removed (Breaking)_ + -*public class Nest.InnerHitsMetaData* _Removed (Breaking)_ + -*public property Nest.InnerHitsResult.Hits* _Declaration changed (Breaking)_ + -5.x: public InnerHitsMetaData Hits { get; internal set; } + -6.x: public InnerHitsMetadata Hits { get; internal set; } + - + -*public class Nest.InstantGet* _Removed (Breaking)_ + -*public property Nest.INumberProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.IObjectProperty.IncludeInAll* _Removed (Breaking)_ + -*public interface Nest.IParentField* _Removed (Breaking)_ + -*public property Nest.IParentIdQuery.Type* _Declaration changed (Breaking)_ + -5.x: public TypeName Type { get; set; } + -6.x: public RelationName Type { get; set; } + - + -*public property Nest.IpAttribute.IncludeInAll* _Removed (Breaking)_ + -*public interface Nest.IPercolateCountRequest* _Removed (Breaking)_ + -*public interface Nest.IPercolateCountResponse* _Removed (Breaking)_ + -*public interface Nest.IPercolateOperation* _Removed (Breaking)_ + -*public interface Nest.IPercolateRequest* _Removed (Breaking)_ + -*public interface Nest.IPercolateResponse* _Removed (Breaking)_ + -*public property Nest.IPhraseSuggestCollate.Query* _Declaration changed (Breaking)_ + -5.x: public ITemplateQuery Query { get; set; } + -6.x: public IPhraseSuggestCollateQuery Query { get; set; } + - + -*public property Nest.IpProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.IpPropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.IPrefixQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IPrefixQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public method Nest.IPropertiesDescriptor<T, TReturnType>.Attachment* _Removed (Breaking)_ + -*public method Nest.IPropertiesDescriptor<T, TReturnType>.String* _Removed (Breaking)_ + -*public property Nest.IProperty.Type* _Declaration changed (Breaking)_ + -5.x: public TypeName Type { get; set; } + -6.x: public string Type { get; set; } + - + -*public method Nest.IPropertyVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.IPropertyVisitor.Visit* _Removed (Breaking)_ + -*public property Nest.IPutScriptRequest.Lang* _Removed (Breaking)_ + -*public property Nest.IPutScriptRequest.Script* _Declaration changed (Breaking)_ + -5.x: public string Script { get; set; } + -6.x: public IStoredScript Script { get; set; } + - + -*public interface Nest.IPutSearchTemplateRequest* _Removed (Breaking)_ + -*public interface Nest.IPutSearchTemplateResponse* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.GeoDistanceRange* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.GeoHashCell* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Indices* _Removed (Breaking)_ + -*public property Nest.IQueryContainer.Template* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.AllFields* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.AutoGeneratePhraseQueries* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.EnablePositionIncrements* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public property Nest.IQueryStringQuery.Locale* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public property Nest.IQueryStringQuery.SplitOnWhitespace* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.Timezone* _Removed (Breaking)_ + -*public property Nest.IQueryStringQuery.UseDisMax* _Removed (Breaking)_ + -*public method Nest.IQueryVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.IQueryVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.IQueryVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public void Visit(IIndicesQuery query) + -6.x: public void Visit(IMatchPhraseQuery query) + - + -*public method Nest.IQueryVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public void Visit(IGeoDistanceRangeQuery query) + -6.x: public void Visit(IMatchPhrasePrefixQuery query) + - + -*public interface Nest.IRange* _Removed (Breaking)_ + -*public property Nest.IRangeAggregation.Ranges* _Declaration changed (Breaking)_ + -5.x: public IEnumerable Ranges { get; set; } + -6.x: public IEnumerable Ranges { get; set; } + - + -*public property Nest.IRangeProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.IRecoveryStatusResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, RecoveryStatus> Indices { get; } + -6.x: public IReadOnlyDictionary<IndexName, RecoveryStatus> Indices { get; } + - + -*public interface Nest.IRegisterPercolatorRequest* _Removed (Breaking)_ + -*public interface Nest.IRegisterPercolatorResponse* _Removed (Breaking)_ + -*public property Nest.IRolloverIndexRequest.Aliases* _Removed (Breaking)_ + -*public property Nest.IRolloverIndexRequest.Mappings* _Removed (Breaking)_ + -*public property Nest.IRolloverIndexRequest.Settings* _Removed (Breaking)_ + -*public property Nest.IS3RepositorySettings.Region* _Removed (Breaking)_ + -*public method Nest.IsADictionaryBase<TKey, TValue>.ValidateKey* _Visibility was changed from public to protected (Breaking)_ + -5.x: public virtual TKey ValidateKey(TKey key) + -6.x: protected virtual TKey ValidateKey(TKey key) + - + -*public property Nest.IScriptProcessor.File* _Removed (Breaking)_ + -*public property Nest.IScriptQuery.File* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.FielddataFields* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.IgnoreUnavalable* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.Preference* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.Routing* _Removed (Breaking)_ + -*public property Nest.ISearchRequest.SearchType* _Removed (Breaking)_ + -*public property Nest.ISearchResponse.Aggregations* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IAggregate> Aggregations { get; } + -6.x: public AggregateDictionary Aggregations { get; } + - + -*public property Nest.ISearchResponse.Aggs* _Declaration changed (Breaking)_ + -5.x: public AggregationsHelper Aggs { get; } + -6.x: public AggregateDictionary Aggs { get; } + - + -*public property Nest.ISearchResponse.HitsMetaData* _Removed (Breaking)_ + -*public property Nest.ISearchResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.ISearchResponse.Suggest* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, Suggest`1[]> Suggest { get; } + -6.x: public SuggestDictionary Suggest { get; } + - + -*public property Nest.ISearchShardsRequest.Type* _Removed (Breaking)_ + -*public property Nest.ISearchTemplateRequest.File* _Removed (Breaking)_ + -*public property Nest.ISearchTemplateRequest.IgnoreUnavalable* _Removed (Breaking)_ + -*public property Nest.ISearchTemplateRequest.Preference* _Removed (Breaking)_ + -*public property Nest.ISearchTemplateRequest.Routing* _Removed (Breaking)_ + -*public property Nest.ISearchTemplateRequest.SearchType* _Removed (Breaking)_ + -*public property Nest.ISegmentsResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public interface Nest.ISerializerFactory* _Removed (Breaking)_ + -*public property Nest.IShardsOperationResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.ISignificantTermsAggregation.Exclude* _Declaration changed (Breaking)_ + -5.x: public IDictionary<string, string> Exclude { get; set; } + -6.x: public SignificantTermsIncludeExclude Exclude { get; set; } + - + -*public property Nest.ISignificantTermsAggregation.ExcludeTerms* _Removed (Breaking)_ + -*public property Nest.ISignificantTermsAggregation.Include* _Declaration changed (Breaking)_ + -5.x: public IDictionary<string, string> Include { get; set; } + -6.x: public SignificantTermsIncludeExclude Include { get; set; } + - + -*public property Nest.ISignificantTermsAggregation.IncludeTerms* _Removed (Breaking)_ + -*public property Nest.ISignificantTermsAggregation.MinimumDocumentCount* _Declaration changed (Breaking)_ + -5.x: public int? MinimumDocumentCount { get; set; } + -6.x: public long? MinimumDocumentCount { get; set; } + - + -*public property Nest.ISignificantTermsAggregation.MinimumDocumentCountAsLong* _Removed (Breaking)_ + -*public property Nest.ISimpleQueryStringQuery.AllFields* _Removed (Breaking)_ + -*public property Nest.ISimpleQueryStringQuery.Locale* _Removed (Breaking)_ + -*public property Nest.ISimpleQueryStringQuery.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public property Nest.ISort.Missing* _Declaration changed (Breaking)_ + -5.x: public string Missing { get; set; } + -6.x: public object Missing { get; set; } + - + -*public property Nest.ISort.MissingValue* _Removed (Breaking)_ + -*public property Nest.ISpanNearQuery.CollectPayloads* _Removed (Breaking)_ + -*public interface Nest.IStringProperty* _Removed (Breaking)_ + -*public interface Nest.ISuggestRequest* _Removed (Breaking)_ + -*public interface Nest.ISuggestRequest* _Removed (Breaking)_ + -*public interface Nest.ISuggestResponse* _Removed (Breaking)_ + -*public property Nest.ITemplateMapping.Template* _Removed (Breaking)_ + -*public interface Nest.ITemplateQuery* _Removed (Breaking)_ + -*public property Nest.ITermsAggregation.Exclude* _Declaration changed (Breaking)_ + -5.x: public TermsIncludeExclude Exclude { get; set; } + -6.x: public TermsExclude Exclude { get; set; } + - + -*public property Nest.ITermsAggregation.Include* _Declaration changed (Breaking)_ + -5.x: public TermsIncludeExclude Include { get; set; } + -6.x: public TermsInclude Include { get; set; } + - + -*public property Nest.ITermsAggregation.Missing* _Declaration changed (Breaking)_ + -5.x: public string Missing { get; set; } + -6.x: public object Missing { get; set; } + - + -*public property Nest.ITermVectors.TermVectors* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, TermVector> TermVectors { get; } + -6.x: public IReadOnlyDictionary<Field, TermVector> TermVectors { get; } + - + -*public property Nest.ITextProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ITokenCountProperty.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ITopHitsAggregation.FielddataFields* _Removed (Breaking)_ + -*public interface Nest.ITtlIntervalSettings* _Removed (Breaking)_ + -*public property Nest.ITypeMapping.Analyzer* _Removed (Breaking)_ + -*public property Nest.ITypeMapping.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ITypeMapping.ParentField* _Removed (Breaking)_ + -*public property Nest.ITypeMapping.SearchAnalyzer* _Removed (Breaking)_ + -*public interface Nest.IUnregisterPercolatorRequest* _Removed (Breaking)_ + -*public interface Nest.IUnregisterPercolatorResponse* _Removed (Breaking)_ + -*public interface Nest.IUntypedDocumentRequest* _Removed (Breaking)_ + -*public interface Nest.IUpdateResponse* _Removed (Breaking)_ + -*public property Nest.IUpgradeResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.IValidateQueryResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; } + -6.x: public ShardStatistics Shards { get; } + - + -*public property Nest.IWatcherStatsResponse.CurrentWatches* _Removed (Breaking)_ + -*public property Nest.IWatcherStatsResponse.ExecutionThreadPool* _Removed (Breaking)_ + -*public property Nest.IWatcherStatsResponse.QueuedWatches* _Removed (Breaking)_ + -*public property Nest.IWatcherStatsResponse.WatchCount* _Removed (Breaking)_ + -*public property Nest.IWatcherStatsResponse.WatcherState* _Removed (Breaking)_ + -*public property Nest.IWildcardQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.IWildcardQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public class Nest.JsonNetSerializer* _Removed (Breaking)_ + -*public method Nest.KeyedBucket..ctor* _Removed (Breaking)_ + -*public method Nest.KeyedBucket..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> dict) + - + -*public property Nest.KeywordAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.KeywordProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.KeywordPropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.LazyDocument..ctor* _Visibility was changed from public to internal (Breaking)_ + -5.x: public .ctor() + -6.x: internal .ctor(JToken token, IElasticsearchSerializer serializer) + - + -*public class Nest.LikeDocument* _Removed (Breaking)_ + -*public class Nest.LikeDocumentDescriptor* _Removed (Breaking)_ + -*public method Nest.ListTasksDescriptor.NodeId* _Removed (Breaking)_ + -*public method Nest.ListTasksDescriptor.ParentTask* _Removed (Breaking)_ + -*public property Nest.ListTasksRequest.NodeId* _Removed (Breaking)_ + -*public property Nest.ListTasksRequest.ParentTask* _Removed (Breaking)_ + -*public property Nest.ListTasksResponse.NodeFailures* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyCollection NodeFailures { get; internal set; } + -6.x: public IReadOnlyCollection NodeFailures { get; internal set; } + - + -*public method Nest.MappingsDescriptor.Map* _Declaration changed (Breaking)_ + -5.x: public MappingsDescriptor Map(TypeName name, Func<TypeMappingDescriptor, ITypeMapping> selector) + -6.x: public virtual MultipleMappingsDescriptor Map(TypeName name, Func<TypeMappingDescriptor, ITypeMapping> selector) + - + -*public method Nest.MappingsDescriptor.Map* _Declaration changed (Breaking)_ + -5.x: public MappingsDescriptor Map(TypeName name, Func<TypeMappingDescriptor, ITypeMapping> selector) + -6.x: public virtual MultipleMappingsDescriptor Map(TypeName name, Func<TypeMappingDescriptor, ITypeMapping> selector) + - + -*public method Nest.MappingsDescriptor.Map* _Declaration changed (Breaking)_ + -5.x: public MappingsDescriptor Map(Func<TypeMappingDescriptor, ITypeMapping> selector) + -6.x: public virtual MultipleMappingsDescriptor Map(Func<TypeMappingDescriptor, ITypeMapping> selector) + - + -*public property Nest.MatchQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.MatchQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public property Nest.MatchQuery.Slop* _Removed (Breaking)_ + -*public method Nest.MatchQueryDescriptor.FuzzyRewrite* _Removed (Breaking)_ + -*public method Nest.MatchQueryDescriptor.Slop* _Removed (Breaking)_ + -*public property Nest.MetadataIndexState.Settings* _Declaration changed (Breaking)_ + -5.x: public DynamicResponse Settings { get; internal set; } + -6.x: public DynamicBody Settings { get; internal set; } + - + -*public method Nest.MultiBucketAggregate..ctor* _Removed (Breaking)_ + -*public method Nest.MultiGetDescriptor.StoredFields* _Declaration changed (Breaking)_ + -5.x: public MultiGetDescriptor StoredFields(Expression`1[] fields) + -6.x: public MultiGetDescriptor StoredFields(Func<FieldsDescriptor, IPromise> fields) + - + -*public class Nest.MultiGetHit* _Removed (Breaking)_ + -*public property Nest.MultiGetResponse.Documents* _Removed (Breaking)_ + -*public property Nest.MultiMatchQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.MultiMatchQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public method Nest.MultiMatchQueryDescriptor.FuzzyRewrite* _Removed (Breaking)_ + -*public class Nest.MultiPercolateDescriptor* _Removed (Breaking)_ + -*public class Nest.MultiPercolateRequest* _Removed (Breaking)_ + -*public class Nest.MultiPercolateResponse* _Removed (Breaking)_ + -*public method Nest.MultiSearchResponse.GetResponse* _Declaration changed (Breaking)_ + -5.x: public SearchResponse GetResponse(string name) + -6.x: public ISearchResponse GetResponse(string name) + - + -*public method Nest.MultiSearchResponse.GetResponses* _Declaration changed (Breaking)_ + -5.x: public IEnumerable<SearchResponse> GetResponses() + -6.x: public IEnumerable<ISearchResponse> GetResponses() + - + -*public method Nest.Name.GetString* _Removed (Breaking)_ + -*public method Nest.Names.GetString* _Removed (Breaking)_ + -*public property Nest.NodeAllocationExplanation.Decisions* _Removed (Breaking)_ + -*public property Nest.NodeAllocationExplanation.FinalDecision* _Removed (Breaking)_ + -*public property Nest.NodeAllocationExplanation.FinalExplanation* _Removed (Breaking)_ + -*public property Nest.NodeAllocationExplanation.Weight* _Removed (Breaking)_ + -*public method Nest.NodeIds.GetString* _Removed (Breaking)_ + -*public property Nest.NodeInfo.Settings* _Declaration changed (Breaking)_ + -5.x: public DynamicResponse Settings { get; internal set; } + -6.x: public DynamicBody Settings { get; internal set; } + - + -*public class Nest.NoMatchQueryContainer* _Removed (Breaking)_ + -*public enum Nest.NoMatchShortcut* _Removed (Breaking)_ + -*public method Nest.NoopMappingVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public virtual void Visit(IStringProperty property) + -6.x: public virtual void Visit(IJoinProperty property) + - + -*public method Nest.NoopMappingVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.NoopPropertyVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.NoopPropertyVisitor.Visit* _Removed (Breaking)_ + -*public property Nest.NumberAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.NumberProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.NumberPropertyDescriptorBase<TDescriptor, TInterface, T>.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ObjectAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.ObjectProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.ObjectPropertyDescriptorBase<TDescriptor, TInterface, TParent, TChild>.IncludeInAll* _Removed (Breaking)_ + -*public class Nest.ParentField* _Removed (Breaking)_ + -*public property Nest.ParentIdQuery.Type* _Declaration changed (Breaking)_ + -5.x: public TypeName Type { get; set; } + -6.x: public RelationName Type { get; set; } + - + -*public method Nest.ParentIdQueryDescriptor.Type* _Declaration changed (Breaking)_ + -5.x: public ParentIdQueryDescriptor Type(TypeName type) + -6.x: public ParentIdQueryDescriptor Type(RelationName type) + - + -*public class Nest.PercolateCountDescriptor* _Removed (Breaking)_ + -*public class Nest.PercolateCountRequest* _Removed (Breaking)_ + -*public class Nest.PercolateCountResponse* _Removed (Breaking)_ + -*public class Nest.PercolateDescriptor* _Removed (Breaking)_ + -*public class Nest.PercolateRequest* _Removed (Breaking)_ + -*public class Nest.PercolateResponse* _Removed (Breaking)_ + -*public class Nest.PercolatorMatch* _Removed (Breaking)_ + -*public property Nest.PhraseSuggestCollate.Query* _Declaration changed (Breaking)_ + -5.x: public ITemplateQuery Query { get; set; } + -6.x: public IPhraseSuggestCollateQuery Query { get; set; } + - + -*public method Nest.PhraseSuggestCollateDescriptor.Query* _Declaration changed (Breaking)_ + -5.x: public PhraseSuggestCollateDescriptor Query(Func<TemplateQueryDescriptor, ITemplateQuery> selector) + -6.x: public PhraseSuggestCollateDescriptor Query(Func<PhraseSuggestCollateQueryDescriptor, IPhraseSuggestCollateQuery> selector) + - + -*public property Nest.PrefixQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.PrefixQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public method Nest.PrefixQueryDescriptor.Rewrite* _Removed (Breaking)_ + -*public method Nest.ProcessorsDescriptor.Uppercase* _Declaration changed (Breaking)_ + -5.x: public ProcessorsDescriptor Uppercase(Func<UppercaseProcessDescriptor, IUppercaseProcessor> selector) + -6.x: public ProcessorsDescriptor Uppercase(Func<UppercaseProcessorDescriptor, IUppercaseProcessor> selector) + - + -*public method Nest.PropertiesDescriptor.Attachment* _Removed (Breaking)_ + -*public method Nest.PropertiesDescriptor.String* _Removed (Breaking)_ + -*public property Nest.PropertyBase.Type* _Removed (Breaking)_ + -*public method Nest.PropertyMappingDescriptor.Rename* _Removed (Breaking)_ + -*public method Nest.PutIndexTemplateDescriptor.Template* _Removed (Breaking)_ + -*public property Nest.PutIndexTemplateRequest.Template* _Removed (Breaking)_ + -*public method Nest.PutMappingDescriptor.Analyzer* _Removed (Breaking)_ + -*public method Nest.PutMappingDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.PutMappingDescriptor.Parent* _Removed (Breaking)_ + -*public method Nest.PutMappingDescriptor.Parent* _Removed (Breaking)_ + -*public method Nest.PutMappingDescriptor.SearchAnalyzer* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.Analyzer* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.ParentField* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.SearchAnalyzer* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.Analyzer* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.ParentField* _Removed (Breaking)_ + -*public property Nest.PutMappingRequest.SearchAnalyzer* _Removed (Breaking)_ + -*public method Nest.PutScriptDescriptor..ctor* _Removed (Breaking)_ + -*public method Nest.PutScriptDescriptor..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public method Nest.PutScriptDescriptor.Script* _Declaration changed (Breaking)_ + -5.x: public PutScriptDescriptor Script(string script) + -6.x: public PutScriptDescriptor Script(Func<StoredScriptDescriptor, IStoredScript> selector) + - + -*public method Nest.PutScriptRequest..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang, Id id) + -6.x: public .ctor(Id id, Name context) + - + -*public method Nest.PutScriptRequest..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(Name lang) + -6.x: public .ctor(Id id) + - + -*public property Nest.PutScriptRequest.Script* _Declaration changed (Breaking)_ + -5.x: public string Script { get; set; } + -6.x: public IStoredScript Script { get; set; } + - + -*public class Nest.PutSearchTemplateDescriptor* _Removed (Breaking)_ + -*public class Nest.PutSearchTemplateRequest* _Removed (Breaking)_ + -*public class Nest.PutSearchTemplateResponse* _Removed (Breaking)_ + -*public method Nest.Query.GeoDistanceRange* _Removed (Breaking)_ + -*public method Nest.Query.GeoHashCell* _Removed (Breaking)_ + -*public method Nest.Query.Indices* _Removed (Breaking)_ + -*public method Nest.Query.MatchPhrase* _Declaration changed (Breaking)_ + -5.x: public static QueryContainer MatchPhrase(Func<MatchPhraseQueryDescriptor, IMatchQuery> selector) + -6.x: public static QueryContainer MatchPhrase(Func<MatchPhraseQueryDescriptor, IMatchPhraseQuery> selector) + - + -*public method Nest.Query.MatchPhrasePrefix* _Declaration changed (Breaking)_ + -5.x: public static QueryContainer MatchPhrasePrefix(Func<MatchPhrasePrefixQueryDescriptor, IMatchQuery> selector) + -6.x: public static QueryContainer MatchPhrasePrefix(Func<MatchPhrasePrefixQueryDescriptor, IMatchPhrasePrefixQuery> selector) + - + -*public method Nest.Query.Prefix* _Removed (Breaking)_ + -*public method Nest.Query.Prefix* _Removed (Breaking)_ + -*public method Nest.Query.Template* _Removed (Breaking)_ + -*public method Nest.Query.Wildcard* _Removed (Breaking)_ + -*public method Nest.Query.Wildcard* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.GeoDistanceRange* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.GeoHashCell* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Indices* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.MatchPhrase* _Declaration changed (Breaking)_ + -5.x: public QueryContainer MatchPhrase(Func<MatchPhraseQueryDescriptor, IMatchQuery> selector) + -6.x: public QueryContainer MatchPhrase(Func<MatchPhraseQueryDescriptor, IMatchPhraseQuery> selector) + - + -*public method Nest.QueryContainerDescriptor.MatchPhrasePrefix* _Declaration changed (Breaking)_ + -5.x: public QueryContainer MatchPhrasePrefix(Func<MatchPhrasePrefixQueryDescriptor, IMatchQuery> selector) + -6.x: public QueryContainer MatchPhrasePrefix(Func<MatchPhrasePrefixQueryDescriptor, IMatchPhrasePrefixQuery> selector) + - + -*public method Nest.QueryContainerDescriptor.Prefix* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Prefix* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Template* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Wildcard* _Removed (Breaking)_ + -*public method Nest.QueryContainerDescriptor.Wildcard* _Removed (Breaking)_ + -*public property Nest.QueryProfile.Time* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.AllFields* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.AutoGeneratePhraseQueries* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.FuzzyMultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.FuzzyRewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable FuzzyRewrite { get; set; } + -6.x: public MultiTermQueryRewrite FuzzyRewrite { get; set; } + - + -*public property Nest.QueryStringQuery.Locale* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public property Nest.QueryStringQuery.SplitOnWhitespace* _Removed (Breaking)_ + -*public property Nest.QueryStringQuery.UseDisMax* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.AllFields* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.AutoGeneratePhraseQueries* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.EnablePositionIncrements* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.FuzzyRewrite* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.Locale* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.Rewrite* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.SplitOnWhitespace* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.Timezone* _Removed (Breaking)_ + -*public method Nest.QueryStringQueryDescriptor.UseDisMax* _Removed (Breaking)_ + -*public method Nest.QueryVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.QueryVisitor.Visit* _Removed (Breaking)_ + -*public method Nest.QueryVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public virtual void Visit(IIndicesQuery query) + -6.x: public virtual void Visit(IMatchPhraseQuery query) + - + -*public method Nest.QueryVisitor.Visit* _Declaration changed (Breaking)_ + -5.x: public virtual void Visit(IGeoDistanceRangeQuery query) + -6.x: public virtual void Visit(IMatchPhrasePrefixQuery query) + - + -*public class Nest.Range* _Removed (Breaking)_ + -*public property Nest.RangeAggregation.Ranges* _Declaration changed (Breaking)_ + -5.x: public IEnumerable Ranges { get; set; } + -6.x: public IEnumerable Ranges { get; set; } + - + -*public method Nest.RangeBucket..ctor* _Removed (Breaking)_ + -*public method Nest.RangeBucket..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> dict) + - + -*public class Nest.RangeDescriptor* _Removed (Breaking)_ + -*public property Nest.RangePropertyAttributeBase.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.RangePropertyBase.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.RangePropertyDescriptorBase<TDescriptor, TInterface, T>.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.RecoveryStatusResponse.Indices* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, RecoveryStatus> Indices { get; internal set; } + -6.x: public IReadOnlyDictionary<IndexName, RecoveryStatus> Indices { get; } + - + -*public method Nest.RefreshDescriptor.Force* _Removed (Breaking)_ + -*public method Nest.RefreshDescriptor.OperationThreading* _Removed (Breaking)_ + -*public property Nest.RefreshRequest.Force* _Removed (Breaking)_ + -*public property Nest.RefreshRequest.OperationThreading* _Removed (Breaking)_ + -*public class Nest.RegisterPercolatorDescriptor* _Removed (Breaking)_ + -*public class Nest.RegisterPercolatorRequest* _Removed (Breaking)_ + -*public class Nest.RegisterPercolatorResponse* _Removed (Breaking)_ + -*public class Nest.RenamePropertyMapping* _Removed (Breaking)_ + -*public class Nest.RequestDescriptorBase<TDescriptor, TParameters, TInterface>* _Declaration changed (Breaking)_ + -5.x: public abstract class RequestDescriptorBase<TDescriptor, TParameters, TInterface> : RequestBase, IRequest, IRequest, IDescriptor where TDescriptor : RequestDescriptorBase<TDescriptor, TParameters, TInterface>, TInterface where TParameters : new(), FluentRequestParameters + -6.x: public abstract class RequestDescriptorBase<TDescriptor, TParameters, TInterface> : RequestBase, IRequest, IRequest, IDescriptor where TDescriptor : RequestDescriptorBase<TDescriptor, TParameters, TInterface>, TInterface where TParameters : new(), RequestParameters + - + -*public class Nest.RequestPameterExtensions* _Removed (Breaking)_ + -*public enum Nest.Result* _Declaration changed (Breaking)_ + -5.x: public enum Result { Created = 0, Updated = 1, Deleted = 2, NotFound = 3, Noop = 4} + -6.x: public enum Result { Error = 0, Created = 1, Updated = 2, Deleted = 3, NotFound = 4, Noop = 5} + - + -*public property Nest.S3RepositorySettings.Region* _Removed (Breaking)_ + -*public method Nest.S3RepositorySettingsDescriptor.Region* _Removed (Breaking)_ + -*public method Nest.ScoreFunctionsDescriptor.RandomScore* _Declaration changed (Breaking)_ + -5.x: public ScoreFunctionsDescriptor RandomScore(long? seed) + -6.x: public ScoreFunctionsDescriptor RandomScore(long seed) + - + -*public method Nest.ScriptConditionDescriptor.File* _Removed (Breaking)_ + -*public method Nest.ScriptDescriptor.File* _Removed (Breaking)_ + -*public enum Nest.ScriptLang* _Declaration changed (Breaking)_ + -5.x: public enum ScriptLang { Painless = 0, Groovy = 1, JS = 2, Python = 3, Expression = 4, Mustache = 5, Native = 6} + -6.x: public enum ScriptLang { Painless = 0, Expression = 1, Mustache = 2} + - + -*public property Nest.ScriptProcessor.File* _Removed (Breaking)_ + -*public method Nest.ScriptProcessorDescriptor.File* _Removed (Breaking)_ + -*public property Nest.ScriptQuery.File* _Removed (Breaking)_ + -*public method Nest.ScriptQueryDescriptor.File* _Removed (Breaking)_ + -*public method Nest.ScriptTransformDescriptor.File* _Removed (Breaking)_ + -*public method Nest.ScrollDescriptor.ConcreteTypeSelector* _Removed (Breaking)_ + -*public method Nest.ScrollDescriptor.CovariantTypes* _Removed (Breaking)_ + -*public property Nest.ScrollRequest.CovariantTypes* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.ConcreteTypeSelector* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.FielddataFields* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public method Nest.SearchDescriptor.SuggestField* _Declaration changed (Breaking)_ + -5.x: public SearchDescriptor SuggestField(string suggest_field) + -6.x: public SearchDescriptor SuggestField(Field suggestField) + - + -*public property Nest.SearchRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.FielddataFields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.SearchRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.FielddataFields* _Removed (Breaking)_ + -*public property Nest.SearchRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.SearchResponse.Aggregations* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, IAggregate> Aggregations { get; internal set; } + -6.x: public AggregateDictionary Aggregations { get; internal set; } + - + -*public property Nest.SearchResponse.Aggs* _Declaration changed (Breaking)_ + -5.x: public AggregationsHelper Aggs { get; } + -6.x: public AggregateDictionary Aggs { get; } + - + -*public property Nest.SearchResponse.HitsMetaData* _Removed (Breaking)_ + -*public property Nest.SearchResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public property Nest.SearchResponse.Suggest* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, Suggest`1[]> Suggest { get; internal set; } + -6.x: public SuggestDictionary Suggest { get; internal set; } + - + -*public method Nest.SearchShardsDescriptor.AllTypes* _Removed (Breaking)_ + -*public method Nest.SearchShardsDescriptor.Type* _Removed (Breaking)_ + -*public method Nest.SearchShardsDescriptor.Type* _Removed (Breaking)_ + -*public method Nest.SearchShardsRequest..ctor* _Removed (Breaking)_ + -*public method Nest.SearchShardsRequest..ctor* _Removed (Breaking)_ + -*public method Nest.SearchTemplateDescriptor.ConcreteTypeSelector* _Removed (Breaking)_ + -*public method Nest.SearchTemplateDescriptor.File* _Removed (Breaking)_ + -*public property Nest.SearchTemplateRequest.File* _Removed (Breaking)_ + -*public class Nest.SecurityNodeStatus* _Removed (Breaking)_ + -*public property Nest.SegmentsResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public class Nest.SerializerFactory* _Removed (Breaking)_ + -*public class Nest.ShardFailure* _Removed (Breaking)_ + -*public class Nest.ShardFailureReason* _Removed (Breaking)_ + -*public property Nest.ShardHealthStats.Status* _Declaration changed (Breaking)_ + -5.x: public string Status { get; internal set; } + -6.x: public Health Status { get; internal set; } + - + -*public class Nest.ShardsMetaData* _Removed (Breaking)_ + -*public property Nest.ShardsOperationResponseBase.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public method Nest.SignificantTermsAggregate..ctor* _Removed (Breaking)_ + -*public property Nest.SignificantTermsAggregation.Exclude* _Declaration changed (Breaking)_ + -5.x: public IDictionary<string, string> Exclude { get; set; } + -6.x: public SignificantTermsIncludeExclude Exclude { get; set; } + - + -*public property Nest.SignificantTermsAggregation.ExcludeTerms* _Removed (Breaking)_ + -*public property Nest.SignificantTermsAggregation.Include* _Declaration changed (Breaking)_ + -5.x: public IDictionary<string, string> Include { get; set; } + -6.x: public SignificantTermsIncludeExclude Include { get; set; } + - + -*public property Nest.SignificantTermsAggregation.IncludeTerms* _Removed (Breaking)_ + -*public property Nest.SignificantTermsAggregation.MinimumDocumentCount* _Declaration changed (Breaking)_ + -5.x: public int? MinimumDocumentCount { get; set; } + -6.x: public long? MinimumDocumentCount { get; set; } + - + -*public property Nest.SignificantTermsAggregation.MinimumDocumentCountAsLong* _Removed (Breaking)_ + -*public method Nest.SignificantTermsAggregationDescriptor.Exclude* _Removed (Breaking)_ + -*public method Nest.SignificantTermsAggregationDescriptor.Include* _Removed (Breaking)_ + -*public method Nest.SignificantTermsAggregationDescriptor.MinimumDocumentCountAsLong* _Removed (Breaking)_ + -*public method Nest.SignificantTermsBucket..ctor* _Removed (Breaking)_ + -*public method Nest.SignificantTermsBucket..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> dict) + - + -*public method Nest.SimilaritiesDescriptor.Default* _Removed (Breaking)_ + -*public property Nest.SimpleQueryStringQuery.AllFields* _Removed (Breaking)_ + -*public property Nest.SimpleQueryStringQuery.Locale* _Removed (Breaking)_ + -*public property Nest.SimpleQueryStringQuery.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public method Nest.SimpleQueryStringQueryDescriptor.AllFields* _Removed (Breaking)_ + -*public method Nest.SimpleQueryStringQueryDescriptor.Locale* _Removed (Breaking)_ + -*public method Nest.SimpleQueryStringQueryDescriptor.LowercaseExpendedTerms* _Removed (Breaking)_ + -*public method Nest.SingleBucketAggregate..ctor* _Removed (Breaking)_ + -*public method Nest.SingleBucketAggregate..ctor* _Declaration changed (Breaking)_ + -5.x: public .ctor(IDictionary<string, IAggregate> aggregations) + -6.x: public .ctor(IReadOnlyDictionary<string, IAggregate> aggregations) + - + -*public class Nest.SingleMappingDescriptor* _Removed (Breaking)_ + -*public property Nest.Snapshot.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public property Nest.SnapshotRestore.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public property Nest.SortBase.Missing* _Declaration changed (Breaking)_ + -5.x: public string Missing { get; set; } + -6.x: public object Missing { get; set; } + - + -*public property Nest.SortBase.MissingValue* _Removed (Breaking)_ + -*public method Nest.SortDescriptorBase<TDescriptor, TInterface, T>.MissingValue* _Removed (Breaking)_ + -*public method Nest.SortGeoDistanceDescriptor.PinTo* _Removed (Breaking)_ + -*public method Nest.SortGeoDistanceDescriptor.PinTo* _Removed (Breaking)_ + -*public property Nest.SpanNearQuery.CollectPayloads* _Removed (Breaking)_ + -*public method Nest.SpanNearQueryDescriptor.CollectPayloads* _Removed (Breaking)_ + -*public property Nest.StoreStats.ThrottleTime* _Removed (Breaking)_ + -*public property Nest.StoreStats.ThrottleTimeInMilliseconds* _Removed (Breaking)_ + -*public class Nest.StringAttribute* _Removed (Breaking)_ + -*public class Nest.StringProperty* _Removed (Breaking)_ + -*public class Nest.StringPropertyDescriptor* _Removed (Breaking)_ + -*public class Nest.SuggestDescriptor* _Removed (Breaking)_ + -*public class Nest.SuggestOption* _Removed (Breaking)_ + -*public class Nest.SuggestRequest* _Removed (Breaking)_ + -*public class Nest.SuggestRequest* _Removed (Breaking)_ + -*public class Nest.SuggestResponse* _Removed (Breaking)_ + -*public property Nest.TemplateMapping.Template* _Removed (Breaking)_ + -*public class Nest.TemplateQuery* _Removed (Breaking)_ + -*public class Nest.TemplateQueryDescriptor* _Removed (Breaking)_ + -*public class Nest.TermQueryDescriptorBase<TDescriptor, T>* _Removed (Breaking)_ + -*public property Nest.TermsAggregation.Exclude* _Declaration changed (Breaking)_ + -5.x: public TermsIncludeExclude Exclude { get; set; } + -6.x: public TermsExclude Exclude { get; set; } + - + -*public property Nest.TermsAggregation.Include* _Declaration changed (Breaking)_ + -5.x: public TermsIncludeExclude Include { get; set; } + -6.x: public TermsInclude Include { get; set; } + - + -*public property Nest.TermsAggregation.Missing* _Declaration changed (Breaking)_ + -5.x: public string Missing { get; set; } + -6.x: public object Missing { get; set; } + - + -*public method Nest.TermsAggregationDescriptor.Exclude* _Declaration changed (Breaking)_ + -5.x: public TermsAggregationDescriptor Exclude(string excludePattern, string regexFlags) + -6.x: public TermsAggregationDescriptor Exclude(string excludePattern) + - + -*public method Nest.TermsAggregationDescriptor.Include* _Declaration changed (Breaking)_ + -5.x: public TermsAggregationDescriptor Include(string includePattern, string regexFlags) + -6.x: public TermsAggregationDescriptor Include(string includePattern) + - + -*public method Nest.TermsAggregationDescriptor.Missing* _Declaration changed (Breaking)_ + -5.x: public TermsAggregationDescriptor Missing(string missing) + -6.x: public TermsAggregationDescriptor Missing(object missing) + - + -*public method Nest.TermsAggregationDescriptor.Order* _Declaration changed (Breaking)_ + -5.x: public TermsAggregationDescriptor Order(TermsOrder order) + -6.x: public TermsAggregationDescriptor Order(Func<TermsOrderDescriptor, IPromise<IList>> selector) + - + -*public method Nest.TermsAggregationDescriptor.OrderAscending* _Removed (Breaking)_ + -*public method Nest.TermsAggregationDescriptor.OrderDescending* _Removed (Breaking)_ + -*public class Nest.TermsIncludeExclude* _Removed (Breaking)_ + -*public property Nest.TermVectorsResponse.TermVectors* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, TermVector> TermVectors { get; internal set; } + -6.x: public IReadOnlyDictionary<Field, TermVector> TermVectors { get; internal set; } + - + -*public property Nest.TermVectorsResult.TermVectors* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, TermVector> TermVectors { get; internal set; } + -6.x: public IReadOnlyDictionary<Field, TermVector> TermVectors { get; internal set; } + - + -*public property Nest.TextAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.TextProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.TextPropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public class Nest.Throwable* _Removed (Breaking)_ + -*public method Nest.Time.ToFirstUnitYieldingInteger* _Removed (Breaking)_ + -*public enum Nest.TimeUnit* _Declaration changed (Breaking)_ + -5.x: public enum TimeUnit { Nanoseconds = 0, Microseconds = 1, Millisecond = 2, Second = 3, Minute = 4, Hour = 5, Day = 6, Week = 7, Month = 8, Year = 9} + -6.x: public enum TimeUnit { Nanoseconds = 0, Microseconds = 1, Millisecond = 2, Second = 3, Minute = 4, Hour = 5, Day = 6} + - + -*public property Nest.TokenCountAttribute.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.TokenCountProperty.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.TokenCountPropertyDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.TopHitsAggregate.Documents* _Removed (Breaking)_ + -*public method Nest.TopHitsAggregate.Hits* _Removed (Breaking)_ + -*public property Nest.TopHitsAggregation.FielddataFields* _Removed (Breaking)_ + -*public method Nest.TopHitsAggregationDescriptor.FielddataFields* _Removed (Breaking)_ + -*public method Nest.TopHitsAggregationDescriptor.Sort* _Removed (Breaking)_ + -*public class Nest.TtlIntervalSettings* _Removed (Breaking)_ + -*public class Nest.TtlIntervalSettingsDescriptor* _Removed (Breaking)_ + -*public property Nest.TypeFieldMappings.Mappings* _Declaration changed (Breaking)_ + -5.x: public IReadOnlyDictionary<string, FieldMappingProperties> Mappings { get; internal set; } + -6.x: public IReadOnlyDictionary<TypeName, FieldMappingProperties> Mappings { get; internal set; } + - + -*public property Nest.TypeMapping.Analyzer* _Removed (Breaking)_ + -*public property Nest.TypeMapping.IncludeInAll* _Removed (Breaking)_ + -*public property Nest.TypeMapping.ParentField* _Removed (Breaking)_ + -*public property Nest.TypeMapping.SearchAnalyzer* _Removed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.Analyzer* _Removed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.IncludeInAll* _Removed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.Parent* _Removed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.Parent* _Removed (Breaking)_ + -*public method Nest.TypeMappingDescriptor.SearchAnalyzer* _Removed (Breaking)_ + -*public method Nest.TypeName..ctor* _Visibility was changed from public to private (Breaking)_ + -5.x: public .ctor() + -6.x: private .ctor(string type) + - + -*public method Nest.TypeName.EqualsMarker* _Visibility was changed from public to private (Breaking)_ + -5.x: public bool EqualsMarker(TypeName other) + -6.x: private bool EqualsMarker(TypeName other) + - + -*public method Nest.TypeName.EqualsString* _Visibility was changed from public to private (Breaking)_ + -5.x: public bool EqualsString(string other) + -6.x: private bool EqualsString(string other) + - + -*public property Nest.TypeName.Name* _Declaration changed (Breaking)_ + -5.x: public string Name { get; set; } + -6.x: public string Name { get; } + - + -*public property Nest.TypeName.Type* _Declaration changed (Breaking)_ + -5.x: public Type Type { get; set; } + -6.x: public Type Type { get; } + - + -*public class Nest.UnregisterPercolatorDescriptor* _Removed (Breaking)_ + -*public class Nest.UnregisterPercolatorRequest* _Removed (Breaking)_ + -*public class Nest.UnregisterPercolatorResponse* _Removed (Breaking)_ + -*public field Nest.UpdatableIndexSettings.TtlDisablePurge* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.DocvalueFields* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.Explain* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.StoredFields* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.StoredFields* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.SuggestField* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.SuggestField* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.SuggestMode* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.SuggestSize* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.SuggestText* _Removed (Breaking)_ + -*public method Nest.UpdateByQueryDescriptor.TrackScores* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.Explain* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.StoredFields* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestField* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestMode* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestSize* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestText* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.TrackScores* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.DocvalueFields* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.Explain* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.StoredFields* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestField* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestMode* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestSize* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.SuggestText* _Removed (Breaking)_ + -*public property Nest.UpdateByQueryRequest.TrackScores* _Removed (Breaking)_ + -*public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Timestamp* _Removed (Breaking)_ + + -*public method Nest.UpdateDescriptor<TDocument, TPartialDocument>.Ttl* _Removed (Breaking)_ + -*public property Nest.UpdateRequest<TDocument, TPartialDocument>.Timestamp* _Removed (Breaking)_ + -*public property Nest.UpdateRequest<TDocument, TPartialDocument>.Ttl* _Removed (Breaking)_ + -*public class Nest.UpdateResponse* _Removed (Breaking)_ + -*public property Nest.UpgradeResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public class Nest.UppercaseProcessDescriptor* _Removed (Breaking)_ + -*public method Nest.ValidateQueryDescriptor.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.ValidateQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.ValidateQueryRequest.LowercaseExpandedTerms* _Removed (Breaking)_ + -*public property Nest.ValidateQueryResponse.Shards* _Declaration changed (Breaking)_ + -5.x: public ShardsMetaData Shards { get; internal set; } + -6.x: public ShardStatistics Shards { get; internal set; } + - + -*public enum Nest.VisitorScope* _Declaration changed (Breaking)_ + -5.x: public enum VisitorScope { Unknown = 0, Query = 1, Filter = 2, Must = 3, MustNot = 4, Should = 5, PositiveQuery = 6, NegativeQuery = 7, NoMatchQuery = 8, Span = 9} + -6.x: public enum VisitorScope { Unknown = 0, Query = 1, Filter = 2, Must = 3, MustNot = 4, Should = 5, PositiveQuery = 6, NegativeQuery = 7, Span = 8} + - + -*public property Nest.WatcherStatsResponse.CurrentWatches* _Removed (Breaking)_ + -*public property Nest.WatcherStatsResponse.ExecutionThreadPool* _Removed (Breaking)_ + -*public property Nest.WatcherStatsResponse.QueuedWatches* _Removed (Breaking)_ + -*public property Nest.WatcherStatsResponse.WatchCount* _Removed (Breaking)_ + -*public property Nest.WatcherStatsResponse.WatcherState* _Removed (Breaking)_ + -*public property Nest.WildcardQuery.MultiTermQueryRewrite* _Removed (Breaking)_ + -*public property Nest.WildcardQuery.Rewrite* _Declaration changed (Breaking)_ + -5.x: public Nullable Rewrite { get; set; } + -6.x: public MultiTermQueryRewrite Rewrite { get; set; } + - + -*public method Nest.WildcardQueryDescriptor.Rewrite* _Removed (Breaking)_ + -*public property Nest.XPackBuildInformation.Date* _Declaration changed (Breaking)_ + -5.x: public DateTime Date { get; internal set; } + -6.x: public DateTimeOffset Date { get; internal set; } + \ No newline at end of file diff --git a/docs/7.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc b/docs/7.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc deleted file mode 100644 index e58f4e0ebd1..00000000000 --- a/docs/7.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc +++ /dev/null @@ -1,5264 +0,0 @@ -:github: https://github.com/elastic/elasticsearch-net - -[[elasticsearch-net-breaking-changes]] -== Elasticsearch.Net Breaking Changes - -This lists *all* of the binary breaking public API changes between {github}/tree/6.8.0[Elasticsearch.Net 6.8.0], the last 6.x version released -when 7.0 went GA release, and {github}/tree/7.0.0[7.0.0]. - -The intention in providing such a large list is to allow you to quickly and easily search the -between the two major versions, to understand what has been removed and equally importantly, -what has been added. - -[float] -=== Types removal - -Specifying types within the .NET clients is now deprecated in 7.0, inline with the overall Elasticsearch type removal strategy. - -In instances where your index contains type information and you need to preserve this information, -one recommendation is to introduce a property to describe the document type -(similar to a table per class with discriminator field in the ORM world) -and then implement a custom serialization / deserialization implementation for that class. - -[float] -=== Utf8Json for serialization - -SimpleJson has been completely removed and replaced with an implementation of Utf8Json, a fast serializer that works -directly with UTF-8 binary. This has yielded a significant performance improvement. - -That said, we removed some features that were available in the previous JSON libraries, that have currently proven too onerous to carry forward at this stage. - -* JSON in the request is never indented, even if `SerializationFormatting.Indented` is specified. -The serialization routines generated by Utf8Json never generate an `IJsonFormatter` that will indent JSON, -for performance reasons. We are considering options for exposing indented JSON for development and debugging purposes. - -* Serializer uses `Reflection.Emit`. Utf8Json uses `Reflection.Emit` to generate efficient formatters for -serializing types that it sees. `Reflection.Emit` is not supported on all platforms -e.g. UWP, Xamarin.iOS, Xamarin.Android. - -* `Elasticsearch.Net.DynamicResponse` deserializes JSON arrays to `List`. -SimpleJson deserialized JSON arrays to `object[]`, but Utf8Json deserializes them to `List`. -This change is preferred for allocation and performance reasons. - -* Utf8Json is much stricter when deserializing JSON object field names to C# -https://en.wikipedia.org/wiki/Plain_old_CLR_object[POCO] properties. With the internal Json.NET serializer -in 6.x, JSON object field names would attempt to be matched with C# POCO property names first by an exact -match, falling back to a case insensitive match. With Utf8Json in 7.x however, JSON object field names must -match exactly the name configured for the C# POCO property name. - -* `DateTime` and `DateTimeOffset` are serialized with 7 sub-second fractional digits when the instance specifies a non-zero millisecond value. For example -** `new DateTime(2019,9,5, 12, 0, 0, 3)` serializes to `"2019-09-05T12:00:00.0030000"` -** `new DateTimeOffset(2019,9,5, 12, 0, 0, 3, TimeSpan.FromHours(12))` serializes to `"2019-09-05T12:00:00.0030000+12:00"` - -[float] -=== `Response.Success` semantics - -`IApiCallDetails.Success` has been simplified, making it easier to inspect if a request to Elasticsearch was indeed successful or not. - -If the status code from Elasticsearch is `2xx` then `.Success` will be `true`. -In instances where a `404` status code is received, for example if a `GET` request results -in a missing document, then `.Success` will be `false`. -This is also the case for `HEAD` requests that result in a `404`. - -This is controlled via `IConnectionConfiguration.StatusCodeToResponseSuccess`, which currently has no public setter. - -[float] -=== Public API changes - -[discrete] -==== `Elasticsearch.Net.AcknowledgeWatchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ActivateWatchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.AliasExistsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.AnalyzeRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ApiCallDetails` - -[horizontal] -`ConnectionConfiguration` property:: added -`ServerError` property:: deleted - -[discrete] -==== `Elasticsearch.Net.AuthenticateRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.BasicAuthenticationCredentials` - -[horizontal] -`BasicAuthenticationCredentials(String, SecureString)` method:: added -`BasicAuthenticationCredentials(String, String)` method:: added -`Dispose()` method:: added -`ToString()` method:: deleted - -[discrete] -==== `Elasticsearch.Net.BulkAliasRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.BulkRequestParameters` - -[horizontal] -`Fields` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.CancelTasksRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatAliasesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatAllocationRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatCountRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatFielddataRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatHealthRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatHelpRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatIndicesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatMasterRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatNodeAttributesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatNodesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatPendingTasksRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatPluginsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatRecoveryRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatRepositoriesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatSegmentsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatShardsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatSnapshotsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatTasksRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatTemplatesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CatThreadPoolRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CcrStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ChangePasswordRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClearCachedRealmsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClearCachedRolesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClearCacheRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClearSqlCursorRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CloseIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CloseJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterAllocationExplainRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterGetSettingsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterHealthRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterPendingTasksRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterPutSettingsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterRerouteMetric` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.ClusterRerouteRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.ClusterStateRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ClusterStatsRequestParameters` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Elasticsearch.Net.ConnectionConfiguration` - -[horizontal] -`Assign(TValue, Action)` method:: added -`BasicAuthentication(String, SecureString)` method:: added -`BasicAuthentication(String, String)` method:: -Parameter name changed from `userName` to `username`. -`DefaultSerializer(T)` method:: deleted -`HttpStatusCodeClassifier(HttpMethod, Int32)` method:: added -`Proxy(Uri, String, SecureString)` method:: added -`Proxy(Uri, String, String)` method:: -Parameter name changed from `proxyAdress` to `proxyAddress`. -`UserAgent(String)` method:: added - -[discrete] -==== `Elasticsearch.Net.CreateApiKeyRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateAutoFollowPatternRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateFollowIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateRepositoryRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateRequestParameters` - -[horizontal] -`Parent` property:: deleted - -[discrete] -==== `Elasticsearch.Net.CreateRollupJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.CustomResponseBuilderBase` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.DeactivateWatchRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.DeleteAliasRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteAutoFollowPatternRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteByQueryRequestParameters` - -[horizontal] -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.DeleteCalendarEventRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteCalendarJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteCalendarRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteExpiredDataRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteFilterRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteForecastRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteIndexTemplateRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteLicenseRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteLifecycleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteModelSnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeletePipelineRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeletePrivilegesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteRepositoryRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteRequestParameters` - -[horizontal] -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteRoleMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteRoleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteRollupJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteSnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteUserRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeleteWatchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DeprecationInfoRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.Diagnostics.AuditDiagnosticObserver` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.DiagnosticSources` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.HttpConnectionDiagnosticObserver` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.RequestPipelineDiagnosticObserver` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.SerializerDiagnosticObserver` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.TypedDiagnosticObserverBase` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Diagnostics.TypedDiagnosticObserverBase` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.DisableUserRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DocumentExistsRequestParameters` - -[horizontal] -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.DynamicBody` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.DynamicDictionary` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.DynamicResponse` - -[horizontal] -`DynamicResponse(DynamicBody)` method:: deleted -`DynamicResponse(DynamicDictionary)` method:: added - -[discrete] -==== `Elasticsearch.Net.DynamicValue` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.ElasticLowLevelClient` - -[horizontal] -`Bulk(String, String, PostData, BulkRequestParameters)` method:: deleted -`BulkAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPut(PostData, BulkRequestParameters)` method:: deleted -`BulkPut(String, PostData, BulkRequestParameters)` method:: deleted -`BulkPut(String, String, PostData, BulkRequestParameters)` method:: deleted -`BulkPutAsync(PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPutAsync(String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPutAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkUsingType(String, String, PostData, BulkRequestParameters)` method:: added -`BulkUsingTypeAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: added -`CatAliases(CatAliasesRequestParameters)` method:: deleted -`CatAliases(String, CatAliasesRequestParameters)` method:: deleted -`CatAliasesAsync(CatAliasesRequestParameters, CancellationToken)` method:: deleted -`CatAliasesAsync(String, CatAliasesRequestParameters, CancellationToken)` method:: deleted -`CatAllocation(CatAllocationRequestParameters)` method:: deleted -`CatAllocation(String, CatAllocationRequestParameters)` method:: deleted -`CatAllocationAsync(CatAllocationRequestParameters, CancellationToken)` method:: deleted -`CatAllocationAsync(String, CatAllocationRequestParameters, CancellationToken)` method:: deleted -`CatCount(CatCountRequestParameters)` method:: deleted -`CatCount(String, CatCountRequestParameters)` method:: deleted -`CatCountAsync(CatCountRequestParameters, CancellationToken)` method:: deleted -`CatCountAsync(String, CatCountRequestParameters, CancellationToken)` method:: deleted -`CatFielddata(CatFielddataRequestParameters)` method:: deleted -`CatFielddata(String, CatFielddataRequestParameters)` method:: deleted -`CatFielddataAsync(CatFielddataRequestParameters, CancellationToken)` method:: deleted -`CatFielddataAsync(String, CatFielddataRequestParameters, CancellationToken)` method:: deleted -`CatHealth(CatHealthRequestParameters)` method:: deleted -`CatHealthAsync(CatHealthRequestParameters, CancellationToken)` method:: deleted -`CatHelp(CatHelpRequestParameters)` method:: deleted -`CatHelpAsync(CatHelpRequestParameters, CancellationToken)` method:: deleted -`CatIndices(CatIndicesRequestParameters)` method:: deleted -`CatIndices(String, CatIndicesRequestParameters)` method:: deleted -`CatIndicesAsync(CatIndicesRequestParameters, CancellationToken)` method:: deleted -`CatIndicesAsync(String, CatIndicesRequestParameters, CancellationToken)` method:: deleted -`CatMaster(CatMasterRequestParameters)` method:: deleted -`CatMasterAsync(CatMasterRequestParameters, CancellationToken)` method:: deleted -`CatNodeattrs(CatNodeAttributesRequestParameters)` method:: deleted -`CatNodeattrsAsync(CatNodeAttributesRequestParameters, CancellationToken)` method:: deleted -`CatNodes(CatNodesRequestParameters)` method:: deleted -`CatNodesAsync(CatNodesRequestParameters, CancellationToken)` method:: deleted -`CatPendingTasks(CatPendingTasksRequestParameters)` method:: deleted -`CatPendingTasksAsync(CatPendingTasksRequestParameters, CancellationToken)` method:: deleted -`CatPlugins(CatPluginsRequestParameters)` method:: deleted -`CatPluginsAsync(CatPluginsRequestParameters, CancellationToken)` method:: deleted -`CatRecovery(CatRecoveryRequestParameters)` method:: deleted -`CatRecovery(String, CatRecoveryRequestParameters)` method:: deleted -`CatRecoveryAsync(CatRecoveryRequestParameters, CancellationToken)` method:: deleted -`CatRecoveryAsync(String, CatRecoveryRequestParameters, CancellationToken)` method:: deleted -`CatRepositories(CatRepositoriesRequestParameters)` method:: deleted -`CatRepositoriesAsync(CatRepositoriesRequestParameters, CancellationToken)` method:: deleted -`CatSegments(CatSegmentsRequestParameters)` method:: deleted -`CatSegments(String, CatSegmentsRequestParameters)` method:: deleted -`CatSegmentsAsync(CatSegmentsRequestParameters, CancellationToken)` method:: deleted -`CatSegmentsAsync(String, CatSegmentsRequestParameters, CancellationToken)` method:: deleted -`CatShards(CatShardsRequestParameters)` method:: deleted -`CatShards(String, CatShardsRequestParameters)` method:: deleted -`CatShardsAsync(CatShardsRequestParameters, CancellationToken)` method:: deleted -`CatShardsAsync(String, CatShardsRequestParameters, CancellationToken)` method:: deleted -`CatSnapshots(CatSnapshotsRequestParameters)` method:: deleted -`CatSnapshots(String, CatSnapshotsRequestParameters)` method:: deleted -`CatSnapshotsAsync(CatSnapshotsRequestParameters, CancellationToken)` method:: deleted -`CatSnapshotsAsync(String, CatSnapshotsRequestParameters, CancellationToken)` method:: deleted -`CatTasks(CatTasksRequestParameters)` method:: deleted -`CatTasksAsync(CatTasksRequestParameters, CancellationToken)` method:: deleted -`CatTemplates(CatTemplatesRequestParameters)` method:: deleted -`CatTemplates(String, CatTemplatesRequestParameters)` method:: deleted -`CatTemplatesAsync(CatTemplatesRequestParameters, CancellationToken)` method:: deleted -`CatTemplatesAsync(String, CatTemplatesRequestParameters, CancellationToken)` method:: deleted -`CatThreadPool(CatThreadPoolRequestParameters)` method:: deleted -`CatThreadPool(String, CatThreadPoolRequestParameters)` method:: deleted -`CatThreadPoolAsync(CatThreadPoolRequestParameters, CancellationToken)` method:: deleted -`CatThreadPoolAsync(String, CatThreadPoolRequestParameters, CancellationToken)` method:: deleted -`CcrDeleteAutoFollowPattern(String, DeleteAutoFollowPatternRequestParameters)` method:: deleted -`CcrDeleteAutoFollowPatternAsync(String, DeleteAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrFollow(String, PostData, CreateFollowIndexRequestParameters)` method:: deleted -`CcrFollowAsync(String, PostData, CreateFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrFollowStats(String, FollowIndexStatsRequestParameters)` method:: deleted -`CcrFollowStatsAsync(String, FollowIndexStatsRequestParameters, CancellationToken)` method:: deleted -`CcrGetAutoFollowPattern(GetAutoFollowPatternRequestParameters)` method:: deleted -`CcrGetAutoFollowPattern(String, GetAutoFollowPatternRequestParameters)` method:: deleted -`CcrGetAutoFollowPatternAsync(GetAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrGetAutoFollowPatternAsync(String, GetAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrPauseFollow(String, PauseFollowIndexRequestParameters)` method:: deleted -`CcrPauseFollowAsync(String, PauseFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrPutAutoFollowPattern(String, PostData, CreateAutoFollowPatternRequestParameters)` method:: deleted -`CcrPutAutoFollowPatternAsync(String, PostData, CreateAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrResumeFollow(String, PostData, ResumeFollowIndexRequestParameters)` method:: deleted -`CcrResumeFollowAsync(String, PostData, ResumeFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrStats(CcrStatsRequestParameters)` method:: deleted -`CcrStatsAsync(CcrStatsRequestParameters, CancellationToken)` method:: deleted -`CcrUnfollow(String, UnfollowIndexRequestParameters)` method:: deleted -`CcrUnfollowAsync(String, UnfollowIndexRequestParameters, CancellationToken)` method:: deleted -`ClearScroll(String, PostData, ClearScrollRequestParameters)` method:: added -`ClearScrollAsync(String, PostData, ClearScrollRequestParameters, CancellationToken)` method:: added -`ClusterAllocationExplain(PostData, ClusterAllocationExplainRequestParameters)` method:: deleted -`ClusterAllocationExplainAsync(PostData, ClusterAllocationExplainRequestParameters, CancellationToken)` method:: deleted -`ClusterAllocationExplainGet(ClusterAllocationExplainRequestParameters)` method:: deleted -`ClusterAllocationExplainGetAsync(ClusterAllocationExplainRequestParameters, CancellationToken)` method:: deleted -`ClusterGetSettings(ClusterGetSettingsRequestParameters)` method:: deleted -`ClusterGetSettingsAsync(ClusterGetSettingsRequestParameters, CancellationToken)` method:: deleted -`ClusterHealth(ClusterHealthRequestParameters)` method:: deleted -`ClusterHealth(String, ClusterHealthRequestParameters)` method:: deleted -`ClusterHealthAsync(ClusterHealthRequestParameters, CancellationToken)` method:: deleted -`ClusterHealthAsync(String, ClusterHealthRequestParameters, CancellationToken)` method:: deleted -`ClusterPendingTasks(ClusterPendingTasksRequestParameters)` method:: deleted -`ClusterPendingTasksAsync(ClusterPendingTasksRequestParameters, CancellationToken)` method:: deleted -`ClusterPutSettings(PostData, ClusterPutSettingsRequestParameters)` method:: deleted -`ClusterPutSettingsAsync(PostData, ClusterPutSettingsRequestParameters, CancellationToken)` method:: deleted -`ClusterRemoteInfo(RemoteInfoRequestParameters)` method:: deleted -`ClusterRemoteInfoAsync(RemoteInfoRequestParameters, CancellationToken)` method:: deleted -`ClusterReroute(PostData, ClusterRerouteRequestParameters)` method:: deleted -`ClusterRerouteAsync(PostData, ClusterRerouteRequestParameters, CancellationToken)` method:: deleted -`ClusterState(ClusterStateRequestParameters)` method:: deleted -`ClusterState(String, ClusterStateRequestParameters)` method:: deleted -`ClusterState(String, String, ClusterStateRequestParameters)` method:: deleted -`ClusterStateAsync(ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStateAsync(String, ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStateAsync(String, String, ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStats(ClusterStatsRequestParameters)` method:: deleted -`ClusterStats(String, ClusterStatsRequestParameters)` method:: deleted -`ClusterStatsAsync(ClusterStatsRequestParameters, CancellationToken)` method:: deleted -`ClusterStatsAsync(String, ClusterStatsRequestParameters, CancellationToken)` method:: deleted -`Count(String, String, PostData, CountRequestParameters)` method:: deleted -`CountAsync(String, String, PostData, CountRequestParameters, CancellationToken)` method:: deleted -`CountGet(CountRequestParameters)` method:: deleted -`CountGet(String, CountRequestParameters)` method:: deleted -`CountGet(String, String, CountRequestParameters)` method:: deleted -`CountGetAsync(CountRequestParameters, CancellationToken)` method:: deleted -`CountGetAsync(String, CountRequestParameters, CancellationToken)` method:: deleted -`CountGetAsync(String, String, CountRequestParameters, CancellationToken)` method:: deleted -`CountUsingType(String, String, PostData, CountRequestParameters)` method:: added -`CountUsingTypeAsync(String, String, PostData, CountRequestParameters, CancellationToken)` method:: added -`Create(String, String, PostData, CreateRequestParameters)` method:: added -`Create(String, String, String, PostData, CreateRequestParameters)` method:: deleted -`CreateAsync(String, String, PostData, CreateRequestParameters, CancellationToken)` method:: added -`CreateAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: deleted -`CreatePost(String, String, String, PostData, CreateRequestParameters)` method:: deleted -`CreatePostAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: deleted -`CreateUsingType(String, String, String, PostData, CreateRequestParameters)` method:: added -`CreateUsingTypeAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: added -`Delete(String, String, DeleteRequestParameters)` method:: added -`Delete(String, String, String, DeleteRequestParameters)` method:: deleted -`DeleteAsync(String, String, DeleteRequestParameters, CancellationToken)` method:: added -`DeleteAsync(String, String, String, DeleteRequestParameters, CancellationToken)` method:: deleted -`DeleteByQuery(String, String, PostData, DeleteByQueryRequestParameters)` method:: deleted -`DeleteByQueryAsync(String, String, PostData, DeleteByQueryRequestParameters, CancellationToken)` method:: deleted -`DeleteByQueryRethrottle(String, DeleteByQueryRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`DeleteByQueryRethrottleAsync(String, DeleteByQueryRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`DeleteByQueryUsingType(String, String, PostData, DeleteByQueryRequestParameters)` method:: added -`DeleteByQueryUsingTypeAsync(String, String, PostData, DeleteByQueryRequestParameters, CancellationToken)` method:: added -`DeleteUsingType(String, String, String, DeleteRequestParameters)` method:: added -`DeleteUsingTypeAsync(String, String, String, DeleteRequestParameters, CancellationToken)` method:: added -`DocumentExists(String, String, DocumentExistsRequestParameters)` method:: added -`DocumentExistsAsync(String, String, DocumentExistsRequestParameters, CancellationToken)` method:: added -`DocumentExistsUsingType(String, String, String, DocumentExistsRequestParameters)` method:: added -`DocumentExistsUsingTypeAsync(String, String, String, DocumentExistsRequestParameters, CancellationToken)` method:: added -`ExecutePainlessScript(PostData, ExecutePainlessScriptRequestParameters)` method:: added -`ExecutePainlessScriptAsync(PostData, ExecutePainlessScriptRequestParameters, CancellationToken)` method:: added -`Exists(String, String, String, DocumentExistsRequestParameters)` method:: deleted -`ExistsAsync(String, String, String, DocumentExistsRequestParameters, CancellationToken)` method:: deleted -`ExistsSource(String, String, String, SourceExistsRequestParameters)` method:: deleted -`ExistsSourceAsync(String, String, String, SourceExistsRequestParameters, CancellationToken)` method:: deleted -`Explain(String, String, PostData, ExplainRequestParameters)` method:: added -`Explain(String, String, String, PostData, ExplainRequestParameters)` method:: deleted -`ExplainAsync(String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: added -`ExplainAsync(String, String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: deleted -`ExplainGet(String, String, String, ExplainRequestParameters)` method:: deleted -`ExplainGetAsync(String, String, String, ExplainRequestParameters, CancellationToken)` method:: deleted -`ExplainUsingType(String, String, String, PostData, ExplainRequestParameters)` method:: added -`ExplainUsingTypeAsync(String, String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: added -`FieldCapabilities(FieldCapabilitiesRequestParameters)` method:: added -`FieldCapabilities(String, FieldCapabilitiesRequestParameters)` method:: added -`FieldCapabilitiesAsync(FieldCapabilitiesRequestParameters, CancellationToken)` method:: added -`FieldCapabilitiesAsync(String, FieldCapabilitiesRequestParameters, CancellationToken)` method:: added -`FieldCaps(PostData, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCaps(String, PostData, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsAsync(PostData, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsAsync(String, PostData, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsGet(FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsGet(String, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsGetAsync(FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsGetAsync(String, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`Get(String, String, GetRequestParameters)` method:: added -`Get(String, String, String, GetRequestParameters)` method:: deleted -`GetAsync(String, String, GetRequestParameters, CancellationToken)` method:: added -`GetAsync(String, String, String, GetRequestParameters, CancellationToken)` method:: deleted -`GetSource(String, String, String, SourceRequestParameters)` method:: deleted -`GetSourceAsync(String, String, String, SourceRequestParameters, CancellationToken)` method:: deleted -`GetUsingType(String, String, String, GetRequestParameters)` method:: added -`GetUsingTypeAsync(String, String, String, GetRequestParameters, CancellationToken)` method:: added -`Index(String, PostData, IndexRequestParameters)` method:: added -`Index(String, String, PostData, IndexRequestParameters)` method:: -Parameter name changed from `type` to `id`. -`Index(String, String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexAsync(String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndexAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: -Parameter name changed from `type` to `id`. -`IndexAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexPut(String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexPut(String, String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexPutAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexPutAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexUsingType(String, String, PostData, IndexRequestParameters)` method:: added -`IndexUsingType(String, String, String, PostData, IndexRequestParameters)` method:: added -`IndexUsingTypeAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndexUsingTypeAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndicesAnalyze(String, PostData, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeAsync(String, PostData, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeForAll(PostData, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeForAllAsync(PostData, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeGet(String, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeGetAsync(String, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeGetForAll(AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeGetForAllAsync(AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCache(String, ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheAsync(String, ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheForAll(ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheForAllAsync(ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheGet(String, ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheGetAsync(String, ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheGetForAll(ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheGetForAllAsync(ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClose(String, CloseIndexRequestParameters)` method:: deleted -`IndicesCloseAsync(String, CloseIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesCreate(String, PostData, CreateIndexRequestParameters)` method:: deleted -`IndicesCreateAsync(String, PostData, CreateIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesDelete(String, DeleteIndexRequestParameters)` method:: deleted -`IndicesDeleteAlias(String, String, DeleteAliasRequestParameters)` method:: deleted -`IndicesDeleteAliasAsync(String, String, DeleteAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesDeleteAsync(String, DeleteIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesDeleteTemplateForAll(String, DeleteIndexTemplateRequestParameters)` method:: deleted -`IndicesDeleteTemplateForAllAsync(String, DeleteIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesExists(String, IndexExistsRequestParameters)` method:: deleted -`IndicesExistsAlias(String, String, AliasExistsRequestParameters)` method:: deleted -`IndicesExistsAliasAsync(String, String, AliasExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsAliasForAll(String, AliasExistsRequestParameters)` method:: deleted -`IndicesExistsAliasForAllAsync(String, AliasExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsAsync(String, IndexExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsTemplateForAll(String, IndexTemplateExistsRequestParameters)` method:: deleted -`IndicesExistsTemplateForAllAsync(String, IndexTemplateExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsType(String, String, TypeExistsRequestParameters)` method:: deleted -`IndicesExistsTypeAsync(String, String, TypeExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesFlush(String, FlushRequestParameters)` method:: deleted -`IndicesFlushAsync(String, FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushForAll(FlushRequestParameters)` method:: deleted -`IndicesFlushForAllAsync(FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushGet(String, FlushRequestParameters)` method:: deleted -`IndicesFlushGetAsync(String, FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushGetForAll(FlushRequestParameters)` method:: deleted -`IndicesFlushGetForAllAsync(FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSynced(String, SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedAsync(String, SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedForAll(SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedForAllAsync(SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedGet(String, SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedGetAsync(String, SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedGetForAll(SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedGetForAllAsync(SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesForcemerge(String, ForceMergeRequestParameters)` method:: deleted -`IndicesForcemergeAsync(String, ForceMergeRequestParameters, CancellationToken)` method:: deleted -`IndicesForcemergeForAll(ForceMergeRequestParameters)` method:: deleted -`IndicesForcemergeForAllAsync(ForceMergeRequestParameters, CancellationToken)` method:: deleted -`IndicesGet(String, GetIndexRequestParameters)` method:: deleted -`IndicesGetAlias(String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAlias(String, String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasAsync(String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasAsync(String, String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasForAll(GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasForAll(String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasForAllAsync(GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasForAllAsync(String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAsync(String, GetIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMapping(String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMapping(String, String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingAsync(String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingAsync(String, String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingForAll(String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingForAll(String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingForAllAsync(String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingForAllAsync(String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMapping(String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMapping(String, String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingAsync(String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingAsync(String, String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingForAll(GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingForAll(String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingForAllAsync(GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingForAllAsync(String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettings(String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettings(String, String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsAsync(String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsAsync(String, String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsForAll(GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsForAll(String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsForAllAsync(GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsForAllAsync(String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetTemplateForAll(GetIndexTemplateRequestParameters)` method:: deleted -`IndicesGetTemplateForAll(String, GetIndexTemplateRequestParameters)` method:: deleted -`IndicesGetTemplateForAllAsync(GetIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesGetTemplateForAllAsync(String, GetIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesGetUpgrade(String, UpgradeStatusRequestParameters)` method:: deleted -`IndicesGetUpgradeAsync(String, UpgradeStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesGetUpgradeForAll(UpgradeStatusRequestParameters)` method:: deleted -`IndicesGetUpgradeForAllAsync(UpgradeStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesOpen(String, OpenIndexRequestParameters)` method:: deleted -`IndicesOpenAsync(String, OpenIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesPutAlias(String, String, PostData, PutAliasRequestParameters)` method:: deleted -`IndicesPutAliasAsync(String, String, PostData, PutAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesPutAliasPost(String, String, PostData, PutAliasRequestParameters)` method:: deleted -`IndicesPutAliasPostAsync(String, String, PostData, PutAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMapping(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMapping(String, String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingAsync(String, String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingForAll(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingForAllAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPost(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPost(String, String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPostAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPostAsync(String, String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPostForAll(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPostForAllAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutSettings(String, PostData, UpdateIndexSettingsRequestParameters)` method:: deleted -`IndicesPutSettingsAsync(String, PostData, UpdateIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesPutSettingsForAll(PostData, UpdateIndexSettingsRequestParameters)` method:: deleted -`IndicesPutSettingsForAllAsync(PostData, UpdateIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesPutTemplateForAll(String, PostData, PutIndexTemplateRequestParameters)` method:: deleted -`IndicesPutTemplateForAllAsync(String, PostData, PutIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesPutTemplatePostForAll(String, PostData, PutIndexTemplateRequestParameters)` method:: deleted -`IndicesPutTemplatePostForAllAsync(String, PostData, PutIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesRecovery(String, RecoveryStatusRequestParameters)` method:: deleted -`IndicesRecoveryAsync(String, RecoveryStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesRecoveryForAll(RecoveryStatusRequestParameters)` method:: deleted -`IndicesRecoveryForAllAsync(RecoveryStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesRefresh(String, RefreshRequestParameters)` method:: deleted -`IndicesRefreshAsync(String, RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshForAll(RefreshRequestParameters)` method:: deleted -`IndicesRefreshForAllAsync(RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshGet(String, RefreshRequestParameters)` method:: deleted -`IndicesRefreshGetAsync(String, RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshGetForAll(RefreshRequestParameters)` method:: deleted -`IndicesRefreshGetForAllAsync(RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRolloverForAll(String, PostData, RolloverIndexRequestParameters)` method:: deleted -`IndicesRolloverForAll(String, String, PostData, RolloverIndexRequestParameters)` method:: deleted -`IndicesRolloverForAllAsync(String, PostData, RolloverIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesRolloverForAllAsync(String, String, PostData, RolloverIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSegments(String, SegmentsRequestParameters)` method:: deleted -`IndicesSegmentsAsync(String, SegmentsRequestParameters, CancellationToken)` method:: deleted -`IndicesSegmentsForAll(SegmentsRequestParameters)` method:: deleted -`IndicesSegmentsForAllAsync(SegmentsRequestParameters, CancellationToken)` method:: deleted -`IndicesShardStores(String, IndicesShardStoresRequestParameters)` method:: deleted -`IndicesShardStoresAsync(String, IndicesShardStoresRequestParameters, CancellationToken)` method:: deleted -`IndicesShardStoresForAll(IndicesShardStoresRequestParameters)` method:: deleted -`IndicesShardStoresForAllAsync(IndicesShardStoresRequestParameters, CancellationToken)` method:: deleted -`IndicesShrink(String, String, PostData, ShrinkIndexRequestParameters)` method:: deleted -`IndicesShrinkAsync(String, String, PostData, ShrinkIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesShrinkPost(String, String, PostData, ShrinkIndexRequestParameters)` method:: deleted -`IndicesShrinkPostAsync(String, String, PostData, ShrinkIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSplit(String, String, PostData, SplitIndexRequestParameters)` method:: deleted -`IndicesSplitAsync(String, String, PostData, SplitIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSplitPost(String, String, PostData, SplitIndexRequestParameters)` method:: deleted -`IndicesSplitPostAsync(String, String, PostData, SplitIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesStats(String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStats(String, String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsAsync(String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsAsync(String, String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsForAll(IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsForAll(String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsForAllAsync(IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsForAllAsync(String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesUpdateAliasesForAll(PostData, BulkAliasRequestParameters)` method:: deleted -`IndicesUpdateAliasesForAllAsync(PostData, BulkAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesUpgrade(String, UpgradeRequestParameters)` method:: deleted -`IndicesUpgradeAsync(String, UpgradeRequestParameters, CancellationToken)` method:: deleted -`IndicesUpgradeForAll(UpgradeRequestParameters)` method:: deleted -`IndicesUpgradeForAllAsync(UpgradeRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQuery(String, PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQuery(String, String, PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryAsync(String, PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryAsync(String, String, PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryForAll(PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryForAllAsync(PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGet(String, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGet(String, String, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGetAsync(String, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGetAsync(String, String, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGetForAll(ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGetForAllAsync(ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`Info(RootNodeInfoRequestParameters)` method:: deleted -`InfoAsync(RootNodeInfoRequestParameters, CancellationToken)` method:: deleted -`IngestDeletePipeline(String, DeletePipelineRequestParameters)` method:: deleted -`IngestDeletePipelineAsync(String, DeletePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestGetPipeline(GetPipelineRequestParameters)` method:: deleted -`IngestGetPipeline(String, GetPipelineRequestParameters)` method:: deleted -`IngestGetPipelineAsync(GetPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestGetPipelineAsync(String, GetPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestProcessorGrok(GrokProcessorPatternsRequestParameters)` method:: deleted -`IngestProcessorGrokAsync(GrokProcessorPatternsRequestParameters, CancellationToken)` method:: deleted -`IngestPutPipeline(String, PostData, PutPipelineRequestParameters)` method:: deleted -`IngestPutPipelineAsync(String, PostData, PutPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulate(PostData, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulate(String, PostData, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateAsync(PostData, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateAsync(String, PostData, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateGet(SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateGet(String, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateGetAsync(SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateGetAsync(String, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`Mget(PostData, MultiGetRequestParameters)` method:: deleted -`Mget(String, PostData, MultiGetRequestParameters)` method:: deleted -`Mget(String, String, PostData, MultiGetRequestParameters)` method:: deleted -`MgetAsync(PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetAsync(String, PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetAsync(String, String, PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGet(MultiGetRequestParameters)` method:: deleted -`MgetGet(String, MultiGetRequestParameters)` method:: deleted -`MgetGet(String, String, MultiGetRequestParameters)` method:: deleted -`MgetGetAsync(MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGetAsync(String, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGetAsync(String, String, MultiGetRequestParameters, CancellationToken)` method:: deleted -`Msearch(PostData, MultiSearchRequestParameters)` method:: deleted -`Msearch(String, PostData, MultiSearchRequestParameters)` method:: deleted -`Msearch(String, String, PostData, MultiSearchRequestParameters)` method:: deleted -`MsearchAsync(PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchAsync(String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchAsync(String, String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGet(MultiSearchRequestParameters)` method:: deleted -`MsearchGet(String, MultiSearchRequestParameters)` method:: deleted -`MsearchGet(String, String, MultiSearchRequestParameters)` method:: deleted -`MsearchGetAsync(MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGetAsync(String, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGetAsync(String, String, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplate(PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplate(String, PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplate(String, String, PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateAsync(PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateAsync(String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateAsync(String, String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGet(MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGet(String, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGet(String, String, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGetAsync(MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGetAsync(String, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGetAsync(String, String, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`Mtermvectors(PostData, MultiTermVectorsRequestParameters)` method:: deleted -`Mtermvectors(String, PostData, MultiTermVectorsRequestParameters)` method:: deleted -`Mtermvectors(String, String, PostData, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsAsync(PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsAsync(String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsAsync(String, String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGet(MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGet(String, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGet(String, String, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGetAsync(MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGetAsync(String, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGetAsync(String, String, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MultiGet(PostData, MultiGetRequestParameters)` method:: added -`MultiGet(String, PostData, MultiGetRequestParameters)` method:: added -`MultiGetAsync(PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiGetAsync(String, PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiGetUsingType(String, String, PostData, MultiGetRequestParameters)` method:: added -`MultiGetUsingTypeAsync(String, String, PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiSearch(PostData, MultiSearchRequestParameters)` method:: added -`MultiSearch(String, PostData, MultiSearchRequestParameters)` method:: added -`MultiSearchAsync(PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiSearchAsync(String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplate(PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplate(String, PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplateAsync(PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplateAsync(String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplateUsingType(String, String, PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplateUsingTypeAsync(String, String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchUsingType(String, String, PostData, MultiSearchRequestParameters)` method:: added -`MultiSearchUsingTypeAsync(String, String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiTermVectors(PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectors(String, PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectorsAsync(PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`MultiTermVectorsAsync(String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`MultiTermVectorsUsingType(String, String, PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectorsUsingTypeAsync(String, String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`NodesHotThreads(String, NodesHotThreadsRequestParameters)` method:: deleted -`NodesHotThreadsAsync(String, NodesHotThreadsRequestParameters, CancellationToken)` method:: deleted -`NodesHotThreadsForAll(NodesHotThreadsRequestParameters)` method:: deleted -`NodesHotThreadsForAllAsync(NodesHotThreadsRequestParameters, CancellationToken)` method:: deleted -`NodesInfo(String, NodesInfoRequestParameters)` method:: deleted -`NodesInfo(String, String, NodesInfoRequestParameters)` method:: deleted -`NodesInfoAsync(String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoAsync(String, String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoForAll(NodesInfoRequestParameters)` method:: deleted -`NodesInfoForAll(String, NodesInfoRequestParameters)` method:: deleted -`NodesInfoForAllAsync(NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoForAllAsync(String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesReloadSecureSettings(String, ReloadSecureSettingsRequestParameters)` method:: deleted -`NodesReloadSecureSettingsAsync(String, ReloadSecureSettingsRequestParameters, CancellationToken)` method:: deleted -`NodesReloadSecureSettingsForAll(ReloadSecureSettingsRequestParameters)` method:: deleted -`NodesReloadSecureSettingsForAllAsync(ReloadSecureSettingsRequestParameters, CancellationToken)` method:: deleted -`NodesStats(String, NodesStatsRequestParameters)` method:: deleted -`NodesStats(String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStats(String, String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsAsync(String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsAsync(String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsAsync(String, String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAll(NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAll(String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAll(String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAllAsync(NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAllAsync(String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAllAsync(String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesUsage(String, NodesUsageRequestParameters)` method:: deleted -`NodesUsage(String, String, NodesUsageRequestParameters)` method:: deleted -`NodesUsageAsync(String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageAsync(String, String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageForAll(NodesUsageRequestParameters)` method:: deleted -`NodesUsageForAll(String, NodesUsageRequestParameters)` method:: deleted -`NodesUsageForAllAsync(NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageForAllAsync(String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`PutScriptPost(String, PostData, PutScriptRequestParameters)` method:: deleted -`PutScriptPost(String, String, PostData, PutScriptRequestParameters)` method:: deleted -`PutScriptPostAsync(String, PostData, PutScriptRequestParameters, CancellationToken)` method:: deleted -`PutScriptPostAsync(String, String, PostData, PutScriptRequestParameters, CancellationToken)` method:: deleted -`Reindex(PostData, ReindexOnServerRequestParameters)` method:: deleted -`ReindexAsync(PostData, ReindexOnServerRequestParameters, CancellationToken)` method:: deleted -`ReindexOnServer(PostData, ReindexOnServerRequestParameters)` method:: added -`ReindexOnServerAsync(PostData, ReindexOnServerRequestParameters, CancellationToken)` method:: added -`ReindexRethrottle(String, ReindexRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`ReindexRethrottleAsync(String, ReindexRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`RenderSearchTemplateGet(RenderSearchTemplateRequestParameters)` method:: deleted -`RenderSearchTemplateGet(String, RenderSearchTemplateRequestParameters)` method:: deleted -`RenderSearchTemplateGetAsync(RenderSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`RenderSearchTemplateGetAsync(String, RenderSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`RequestParams(TRequestParams, String, String)` method:: added -`RootNodeInfo(RootNodeInfoRequestParameters)` method:: added -`RootNodeInfoAsync(RootNodeInfoRequestParameters, CancellationToken)` method:: added -`ScriptsPainlessExecute(PostData, ExecutePainlessScriptRequestParameters)` method:: deleted -`ScriptsPainlessExecuteAsync(PostData, ExecutePainlessScriptRequestParameters, CancellationToken)` method:: deleted -`ScriptsPainlessExecuteGet(ExecutePainlessScriptRequestParameters)` method:: deleted -`ScriptsPainlessExecuteGetAsync(ExecutePainlessScriptRequestParameters, CancellationToken)` method:: deleted -`Scroll(String, PostData, ScrollRequestParameters)` method:: added -`ScrollAsync(String, PostData, ScrollRequestParameters, CancellationToken)` method:: added -`ScrollGet(ScrollRequestParameters)` method:: deleted -`ScrollGetAsync(ScrollRequestParameters, CancellationToken)` method:: deleted -`Search(String, String, PostData, SearchRequestParameters)` method:: deleted -`SearchAsync(String, String, PostData, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGet(SearchRequestParameters)` method:: deleted -`SearchGet(String, SearchRequestParameters)` method:: deleted -`SearchGet(String, String, SearchRequestParameters)` method:: deleted -`SearchGetAsync(SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGetAsync(String, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGetAsync(String, String, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchShardsGet(SearchShardsRequestParameters)` method:: deleted -`SearchShardsGet(String, SearchShardsRequestParameters)` method:: deleted -`SearchShardsGetAsync(SearchShardsRequestParameters, CancellationToken)` method:: deleted -`SearchShardsGetAsync(String, SearchShardsRequestParameters, CancellationToken)` method:: deleted -`SearchTemplate(String, String, PostData, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateAsync(String, String, PostData, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGet(SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGet(String, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGet(String, String, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGetAsync(SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGetAsync(String, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGetAsync(String, String, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateUsingType(String, String, PostData, SearchTemplateRequestParameters)` method:: added -`SearchTemplateUsingTypeAsync(String, String, PostData, SearchTemplateRequestParameters, CancellationToken)` method:: added -`SearchUsingType(String, String, PostData, SearchRequestParameters)` method:: added -`SearchUsingTypeAsync(String, String, PostData, SearchRequestParameters, CancellationToken)` method:: added -`SnapshotCreate(String, String, PostData, SnapshotRequestParameters)` method:: deleted -`SnapshotCreateAsync(String, String, PostData, SnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreatePost(String, String, PostData, SnapshotRequestParameters)` method:: deleted -`SnapshotCreatePostAsync(String, String, PostData, SnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreateRepository(String, PostData, CreateRepositoryRequestParameters)` method:: deleted -`SnapshotCreateRepositoryAsync(String, PostData, CreateRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreateRepositoryPost(String, PostData, CreateRepositoryRequestParameters)` method:: deleted -`SnapshotCreateRepositoryPostAsync(String, PostData, CreateRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotDelete(String, String, DeleteSnapshotRequestParameters)` method:: deleted -`SnapshotDeleteAsync(String, String, DeleteSnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotDeleteRepository(String, DeleteRepositoryRequestParameters)` method:: deleted -`SnapshotDeleteRepositoryAsync(String, DeleteRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotGet(String, String, GetSnapshotRequestParameters)` method:: deleted -`SnapshotGetAsync(String, String, GetSnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotGetRepository(GetRepositoryRequestParameters)` method:: deleted -`SnapshotGetRepository(String, GetRepositoryRequestParameters)` method:: deleted -`SnapshotGetRepositoryAsync(GetRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotGetRepositoryAsync(String, GetRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotRestore(String, String, PostData, RestoreRequestParameters)` method:: deleted -`SnapshotRestoreAsync(String, String, PostData, RestoreRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatus(SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatus(String, SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatus(String, String, SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatusAsync(SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatusAsync(String, SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatusAsync(String, String, SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotVerifyRepository(String, VerifyRepositoryRequestParameters)` method:: deleted -`SnapshotVerifyRepositoryAsync(String, VerifyRepositoryRequestParameters, CancellationToken)` method:: deleted -`Source(String, String, SourceRequestParameters)` method:: added -`SourceAsync(String, String, SourceRequestParameters, CancellationToken)` method:: added -`SourceExists(String, String, SourceExistsRequestParameters)` method:: added -`SourceExistsAsync(String, String, SourceExistsRequestParameters, CancellationToken)` method:: added -`SourceExistsUsingType(String, String, String, SourceExistsRequestParameters)` method:: added -`SourceExistsUsingTypeAsync(String, String, String, SourceExistsRequestParameters, CancellationToken)` method:: added -`SourceUsingType(String, String, String, SourceRequestParameters)` method:: added -`SourceUsingTypeAsync(String, String, String, SourceRequestParameters, CancellationToken)` method:: added -`TasksCancel(CancelTasksRequestParameters)` method:: deleted -`TasksCancel(String, CancelTasksRequestParameters)` method:: deleted -`TasksCancelAsync(CancelTasksRequestParameters, CancellationToken)` method:: deleted -`TasksCancelAsync(String, CancelTasksRequestParameters, CancellationToken)` method:: deleted -`TasksGet(String, GetTaskRequestParameters)` method:: deleted -`TasksGetAsync(String, GetTaskRequestParameters, CancellationToken)` method:: deleted -`TasksList(ListTasksRequestParameters)` method:: deleted -`TasksListAsync(ListTasksRequestParameters, CancellationToken)` method:: deleted -`TermVectors(String, PostData, TermVectorsRequestParameters)` method:: added -`Termvectors(String, String, PostData, TermVectorsRequestParameters)` method:: deleted -`TermVectors(String, String, PostData, TermVectorsRequestParameters)` method:: added -`Termvectors(String, String, String, PostData, TermVectorsRequestParameters)` method:: deleted -`TermVectorsAsync(String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermvectorsAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermVectorsAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermvectorsAsync(String, String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermvectorsGet(String, String, TermVectorsRequestParameters)` method:: deleted -`TermvectorsGet(String, String, String, TermVectorsRequestParameters)` method:: deleted -`TermvectorsGetAsync(String, String, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermvectorsGetAsync(String, String, String, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermVectorsUsingType(String, String, PostData, TermVectorsRequestParameters)` method:: added -`TermVectorsUsingType(String, String, String, PostData, TermVectorsRequestParameters)` method:: added -`TermVectorsUsingTypeAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermVectorsUsingTypeAsync(String, String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`Update(String, String, PostData, UpdateRequestParameters)` method:: added -`Update(String, String, String, PostData, UpdateRequestParameters)` method:: deleted -`UpdateAsync(String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: added -`UpdateAsync(String, String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: deleted -`UpdateByQuery(String, String, PostData, UpdateByQueryRequestParameters)` method:: deleted -`UpdateByQueryAsync(String, String, PostData, UpdateByQueryRequestParameters, CancellationToken)` method:: deleted -`UpdateByQueryRethrottle(String, UpdateByQueryRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`UpdateByQueryRethrottleAsync(String, UpdateByQueryRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`UpdateByQueryUsingType(String, String, PostData, UpdateByQueryRequestParameters)` method:: added -`UpdateByQueryUsingTypeAsync(String, String, PostData, UpdateByQueryRequestParameters, CancellationToken)` method:: added -`UpdateUsingType(String, String, String, PostData, UpdateRequestParameters)` method:: added -`UpdateUsingTypeAsync(String, String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: added -`Url(FormattableString)` method:: -Member is more visible. -`XpackDeprecationInfo(DeprecationInfoRequestParameters)` method:: deleted -`XpackDeprecationInfo(String, DeprecationInfoRequestParameters)` method:: deleted -`XpackDeprecationInfoAsync(DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackDeprecationInfoAsync(String, DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExplore(String, PostData, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExplore(String, String, PostData, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreAsync(String, PostData, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreAsync(String, String, PostData, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreGet(String, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreGet(String, String, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreGetAsync(String, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreGetAsync(String, String, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackIlmDeleteLifecycle(String, DeleteLifecycleRequestParameters)` method:: deleted -`XpackIlmDeleteLifecycleAsync(String, DeleteLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmExplainLifecycle(String, ExplainLifecycleRequestParameters)` method:: deleted -`XpackIlmExplainLifecycleAsync(String, ExplainLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetLifecycle(GetLifecycleRequestParameters)` method:: deleted -`XpackIlmGetLifecycle(String, GetLifecycleRequestParameters)` method:: deleted -`XpackIlmGetLifecycleAsync(GetLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetLifecycleAsync(String, GetLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetStatus(GetIlmStatusRequestParameters)` method:: deleted -`XpackIlmGetStatusAsync(GetIlmStatusRequestParameters, CancellationToken)` method:: deleted -`XpackIlmMoveToStep(String, PostData, MoveToStepRequestParameters)` method:: deleted -`XpackIlmMoveToStepAsync(String, PostData, MoveToStepRequestParameters, CancellationToken)` method:: deleted -`XpackIlmPutLifecycle(String, PostData, PutLifecycleRequestParameters)` method:: deleted -`XpackIlmPutLifecycleAsync(String, PostData, PutLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmRemovePolicy(String, RemovePolicyRequestParameters)` method:: deleted -`XpackIlmRemovePolicyAsync(String, RemovePolicyRequestParameters, CancellationToken)` method:: deleted -`XpackIlmRetry(String, RetryIlmRequestParameters)` method:: deleted -`XpackIlmRetryAsync(String, RetryIlmRequestParameters, CancellationToken)` method:: deleted -`XpackIlmStart(StartIlmRequestParameters)` method:: deleted -`XpackIlmStartAsync(StartIlmRequestParameters, CancellationToken)` method:: deleted -`XpackIlmStop(StopIlmRequestParameters)` method:: deleted -`XpackIlmStopAsync(StopIlmRequestParameters, CancellationToken)` method:: deleted -`XpackInfo(XPackInfoRequestParameters)` method:: deleted -`XpackInfoAsync(XPackInfoRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseDelete(DeleteLicenseRequestParameters)` method:: deleted -`XpackLicenseDeleteAsync(DeleteLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGet(GetLicenseRequestParameters)` method:: deleted -`XpackLicenseGetAsync(GetLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGetBasicStatus(GetBasicLicenseStatusRequestParameters)` method:: deleted -`XpackLicenseGetBasicStatusAsync(GetBasicLicenseStatusRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGetTrialStatus(GetTrialLicenseStatusRequestParameters)` method:: deleted -`XpackLicenseGetTrialStatusAsync(GetTrialLicenseStatusRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePost(PostData, PostLicenseRequestParameters)` method:: deleted -`XpackLicensePostAsync(PostData, PostLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePostStartBasic(StartBasicLicenseRequestParameters)` method:: deleted -`XpackLicensePostStartBasicAsync(StartBasicLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePostStartTrial(StartTrialLicenseRequestParameters)` method:: deleted -`XpackLicensePostStartTrialAsync(StartTrialLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationDeprecations(DeprecationInfoRequestParameters)` method:: deleted -`XpackMigrationDeprecations(String, DeprecationInfoRequestParameters)` method:: deleted -`XpackMigrationDeprecationsAsync(DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationDeprecationsAsync(String, DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationGetAssistance(MigrationAssistanceRequestParameters)` method:: deleted -`XpackMigrationGetAssistance(String, MigrationAssistanceRequestParameters)` method:: deleted -`XpackMigrationGetAssistanceAsync(MigrationAssistanceRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationGetAssistanceAsync(String, MigrationAssistanceRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationUpgrade(String, MigrationUpgradeRequestParameters)` method:: deleted -`XpackMigrationUpgradeAsync(String, MigrationUpgradeRequestParameters, CancellationToken)` method:: deleted -`XpackMlCloseJob(String, CloseJobRequestParameters)` method:: deleted -`XpackMlCloseJobAsync(String, CloseJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendar(String, DeleteCalendarRequestParameters)` method:: deleted -`XpackMlDeleteCalendarAsync(String, DeleteCalendarRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendarEvent(String, String, DeleteCalendarEventRequestParameters)` method:: deleted -`XpackMlDeleteCalendarEventAsync(String, String, DeleteCalendarEventRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendarJob(String, String, DeleteCalendarJobRequestParameters)` method:: deleted -`XpackMlDeleteCalendarJobAsync(String, String, DeleteCalendarJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteDatafeed(String, DeleteDatafeedRequestParameters)` method:: deleted -`XpackMlDeleteDatafeedAsync(String, DeleteDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteExpiredData(DeleteExpiredDataRequestParameters)` method:: deleted -`XpackMlDeleteExpiredDataAsync(DeleteExpiredDataRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteFilter(String, DeleteFilterRequestParameters)` method:: deleted -`XpackMlDeleteFilterAsync(String, DeleteFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteForecast(String, String, DeleteForecastRequestParameters)` method:: deleted -`XpackMlDeleteForecastAsync(String, String, DeleteForecastRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteJob(String, DeleteJobRequestParameters)` method:: deleted -`XpackMlDeleteJobAsync(String, DeleteJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteModelSnapshot(String, String, DeleteModelSnapshotRequestParameters)` method:: deleted -`XpackMlDeleteModelSnapshotAsync(String, String, DeleteModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlFlushJob(String, PostData, FlushJobRequestParameters)` method:: deleted -`XpackMlFlushJobAsync(String, PostData, FlushJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlForecast(String, ForecastJobRequestParameters)` method:: deleted -`XpackMlForecastAsync(String, ForecastJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetBuckets(String, GetBucketsRequestParameters)` method:: deleted -`XpackMlGetBuckets(String, PostData, GetBucketsRequestParameters)` method:: deleted -`XpackMlGetBucketsAsync(String, GetBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetBucketsAsync(String, PostData, GetBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarEvents(String, GetCalendarEventsRequestParameters)` method:: deleted -`XpackMlGetCalendarEventsAsync(String, GetCalendarEventsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendars(GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(PostData, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(String, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(String, PostData, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendarsAsync(GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(PostData, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(String, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(String, PostData, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategories(String, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, PostData, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, Int64, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, Int64, PostData, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategoriesAsync(String, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, PostData, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, Int64, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, Int64, PostData, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeeds(GetDatafeedsRequestParameters)` method:: deleted -`XpackMlGetDatafeeds(String, GetDatafeedsRequestParameters)` method:: deleted -`XpackMlGetDatafeedsAsync(GetDatafeedsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedsAsync(String, GetDatafeedsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedStats(GetDatafeedStatsRequestParameters)` method:: deleted -`XpackMlGetDatafeedStats(String, GetDatafeedStatsRequestParameters)` method:: deleted -`XpackMlGetDatafeedStatsAsync(GetDatafeedStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedStatsAsync(String, GetDatafeedStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetFilters(GetFiltersRequestParameters)` method:: deleted -`XpackMlGetFilters(String, GetFiltersRequestParameters)` method:: deleted -`XpackMlGetFiltersAsync(GetFiltersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetFiltersAsync(String, GetFiltersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetInfluencers(String, GetInfluencersRequestParameters)` method:: deleted -`XpackMlGetInfluencers(String, PostData, GetInfluencersRequestParameters)` method:: deleted -`XpackMlGetInfluencersAsync(String, GetInfluencersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetInfluencersAsync(String, PostData, GetInfluencersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobs(GetJobsRequestParameters)` method:: deleted -`XpackMlGetJobs(String, GetJobsRequestParameters)` method:: deleted -`XpackMlGetJobsAsync(GetJobsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobsAsync(String, GetJobsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobStats(GetJobStatsRequestParameters)` method:: deleted -`XpackMlGetJobStats(String, GetJobStatsRequestParameters)` method:: deleted -`XpackMlGetJobStatsAsync(GetJobStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobStatsAsync(String, GetJobStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshots(String, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, PostData, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, String, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, String, PostData, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, PostData, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, String, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, String, PostData, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetOverallBuckets(String, GetOverallBucketsRequestParameters)` method:: deleted -`XpackMlGetOverallBuckets(String, PostData, GetOverallBucketsRequestParameters)` method:: deleted -`XpackMlGetOverallBucketsAsync(String, GetOverallBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetOverallBucketsAsync(String, PostData, GetOverallBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetRecords(String, GetAnomalyRecordsRequestParameters)` method:: deleted -`XpackMlGetRecords(String, PostData, GetAnomalyRecordsRequestParameters)` method:: deleted -`XpackMlGetRecordsAsync(String, GetAnomalyRecordsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetRecordsAsync(String, PostData, GetAnomalyRecordsRequestParameters, CancellationToken)` method:: deleted -`XpackMlInfo(MachineLearningInfoRequestParameters)` method:: deleted -`XpackMlInfoAsync(MachineLearningInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMlOpenJob(String, OpenJobRequestParameters)` method:: deleted -`XpackMlOpenJobAsync(String, OpenJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlPostCalendarEvents(String, PostData, PostCalendarEventsRequestParameters)` method:: deleted -`XpackMlPostCalendarEventsAsync(String, PostData, PostCalendarEventsRequestParameters, CancellationToken)` method:: deleted -`XpackMlPostData(String, PostData, PostJobDataRequestParameters)` method:: deleted -`XpackMlPostDataAsync(String, PostData, PostJobDataRequestParameters, CancellationToken)` method:: deleted -`XpackMlPreviewDatafeed(String, PreviewDatafeedRequestParameters)` method:: deleted -`XpackMlPreviewDatafeedAsync(String, PreviewDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutCalendar(String, PostData, PutCalendarRequestParameters)` method:: deleted -`XpackMlPutCalendarAsync(String, PostData, PutCalendarRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutCalendarJob(String, String, PutCalendarJobRequestParameters)` method:: deleted -`XpackMlPutCalendarJobAsync(String, String, PutCalendarJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutDatafeed(String, PostData, PutDatafeedRequestParameters)` method:: deleted -`XpackMlPutDatafeedAsync(String, PostData, PutDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutFilter(String, PostData, PutFilterRequestParameters)` method:: deleted -`XpackMlPutFilterAsync(String, PostData, PutFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutJob(String, PostData, PutJobRequestParameters)` method:: deleted -`XpackMlPutJobAsync(String, PostData, PutJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlRevertModelSnapshot(String, String, PostData, RevertModelSnapshotRequestParameters)` method:: deleted -`XpackMlRevertModelSnapshotAsync(String, String, PostData, RevertModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlStartDatafeed(String, PostData, StartDatafeedRequestParameters)` method:: deleted -`XpackMlStartDatafeedAsync(String, PostData, StartDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlStopDatafeed(String, StopDatafeedRequestParameters)` method:: deleted -`XpackMlStopDatafeedAsync(String, StopDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateDatafeed(String, PostData, UpdateDatafeedRequestParameters)` method:: deleted -`XpackMlUpdateDatafeedAsync(String, PostData, UpdateDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateFilter(String, PostData, UpdateFilterRequestParameters)` method:: deleted -`XpackMlUpdateFilterAsync(String, PostData, UpdateFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateJob(String, PostData, UpdateJobRequestParameters)` method:: deleted -`XpackMlUpdateJobAsync(String, PostData, UpdateJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateModelSnapshot(String, String, PostData, UpdateModelSnapshotRequestParameters)` method:: deleted -`XpackMlUpdateModelSnapshotAsync(String, String, PostData, UpdateModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlValidate(PostData, ValidateJobRequestParameters)` method:: deleted -`XpackMlValidateAsync(PostData, ValidateJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlValidateDetector(PostData, ValidateDetectorRequestParameters)` method:: deleted -`XpackMlValidateDetectorAsync(PostData, ValidateDetectorRequestParameters, CancellationToken)` method:: deleted -`XpackRollupDeleteJob(String, DeleteRollupJobRequestParameters)` method:: deleted -`XpackRollupDeleteJobAsync(String, DeleteRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetJobs(GetRollupJobRequestParameters)` method:: deleted -`XpackRollupGetJobs(String, GetRollupJobRequestParameters)` method:: deleted -`XpackRollupGetJobsAsync(GetRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetJobsAsync(String, GetRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupCaps(GetRollupCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupCaps(String, GetRollupCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupCapsAsync(GetRollupCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupCapsAsync(String, GetRollupCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupIndexCaps(String, GetRollupIndexCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupIndexCapsAsync(String, GetRollupIndexCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupPutJob(String, PostData, CreateRollupJobRequestParameters)` method:: deleted -`XpackRollupPutJobAsync(String, PostData, CreateRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearch(String, PostData, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearch(String, String, PostData, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchAsync(String, PostData, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchAsync(String, String, PostData, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchGet(String, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchGet(String, String, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchGetAsync(String, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchGetAsync(String, String, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupStartJob(String, StartRollupJobRequestParameters)` method:: deleted -`XpackRollupStartJobAsync(String, StartRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupStopJob(String, StopRollupJobRequestParameters)` method:: deleted -`XpackRollupStopJobAsync(String, StopRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityAuthenticate(AuthenticateRequestParameters)` method:: deleted -`XpackSecurityAuthenticateAsync(AuthenticateRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePassword(PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePassword(String, PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordAsync(PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordAsync(String, PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordPost(PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordPost(String, PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordPostAsync(PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordPostAsync(String, PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityClearCachedRealms(String, ClearCachedRealmsRequestParameters)` method:: deleted -`XpackSecurityClearCachedRealmsAsync(String, ClearCachedRealmsRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityClearCachedRoles(String, ClearCachedRolesRequestParameters)` method:: deleted -`XpackSecurityClearCachedRolesAsync(String, ClearCachedRolesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityCreateApiKey(PostData, CreateApiKeyRequestParameters)` method:: deleted -`XpackSecurityCreateApiKeyAsync(PostData, CreateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityCreateApiKeyPost(PostData, CreateApiKeyRequestParameters)` method:: deleted -`XpackSecurityCreateApiKeyPostAsync(PostData, CreateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeletePrivileges(String, String, DeletePrivilegesRequestParameters)` method:: deleted -`XpackSecurityDeletePrivilegesAsync(String, String, DeletePrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteRole(String, DeleteRoleRequestParameters)` method:: deleted -`XpackSecurityDeleteRoleAsync(String, DeleteRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteRoleMapping(String, DeleteRoleMappingRequestParameters)` method:: deleted -`XpackSecurityDeleteRoleMappingAsync(String, DeleteRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteUser(String, DeleteUserRequestParameters)` method:: deleted -`XpackSecurityDeleteUserAsync(String, DeleteUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDisableUser(String, DisableUserRequestParameters)` method:: deleted -`XpackSecurityDisableUserAsync(String, DisableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDisableUserPost(String, DisableUserRequestParameters)` method:: deleted -`XpackSecurityDisableUserPostAsync(String, DisableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityEnableUser(String, EnableUserRequestParameters)` method:: deleted -`XpackSecurityEnableUserAsync(String, EnableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityEnableUserPost(String, EnableUserRequestParameters)` method:: deleted -`XpackSecurityEnableUserPostAsync(String, EnableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetApiKey(GetApiKeyRequestParameters)` method:: deleted -`XpackSecurityGetApiKeyAsync(GetApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivileges(GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivileges(String, GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivileges(String, String, GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivilegesAsync(GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivilegesAsync(String, GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivilegesAsync(String, String, GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRole(GetRoleRequestParameters)` method:: deleted -`XpackSecurityGetRole(String, GetRoleRequestParameters)` method:: deleted -`XpackSecurityGetRoleAsync(GetRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleAsync(String, GetRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleMapping(GetRoleMappingRequestParameters)` method:: deleted -`XpackSecurityGetRoleMapping(String, GetRoleMappingRequestParameters)` method:: deleted -`XpackSecurityGetRoleMappingAsync(GetRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleMappingAsync(String, GetRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetToken(PostData, GetUserAccessTokenRequestParameters)` method:: deleted -`XpackSecurityGetTokenAsync(PostData, GetUserAccessTokenRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUser(GetUserRequestParameters)` method:: deleted -`XpackSecurityGetUser(String, GetUserRequestParameters)` method:: deleted -`XpackSecurityGetUserAsync(GetUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUserAsync(String, GetUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUserPrivileges(GetUserPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetUserPrivilegesAsync(GetUserPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivileges(PostData, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivileges(String, PostData, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesAsync(PostData, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesAsync(String, PostData, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesGet(HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesGet(String, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesGetAsync(HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesGetAsync(String, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityInvalidateApiKey(PostData, InvalidateApiKeyRequestParameters)` method:: deleted -`XpackSecurityInvalidateApiKeyAsync(PostData, InvalidateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityInvalidateToken(PostData, InvalidateUserAccessTokenRequestParameters)` method:: deleted -`XpackSecurityInvalidateTokenAsync(PostData, InvalidateUserAccessTokenRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutPrivileges(PostData, PutPrivilegesRequestParameters)` method:: deleted -`XpackSecurityPutPrivilegesAsync(PostData, PutPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutPrivilegesPost(PostData, PutPrivilegesRequestParameters)` method:: deleted -`XpackSecurityPutPrivilegesPostAsync(PostData, PutPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRole(String, PostData, PutRoleRequestParameters)` method:: deleted -`XpackSecurityPutRoleAsync(String, PostData, PutRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRoleMapping(String, PostData, PutRoleMappingRequestParameters)` method:: deleted -`XpackSecurityPutRoleMappingAsync(String, PostData, PutRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRoleMappingPost(String, PostData, PutRoleMappingRequestParameters)` method:: deleted -`XpackSecurityPutRoleMappingPostAsync(String, PostData, PutRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRolePost(String, PostData, PutRoleRequestParameters)` method:: deleted -`XpackSecurityPutRolePostAsync(String, PostData, PutRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutUser(String, PostData, PutUserRequestParameters)` method:: deleted -`XpackSecurityPutUserAsync(String, PostData, PutUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutUserPost(String, PostData, PutUserRequestParameters)` method:: deleted -`XpackSecurityPutUserPostAsync(String, PostData, PutUserRequestParameters, CancellationToken)` method:: deleted -`XpackSqlClearCursor(PostData, ClearSqlCursorRequestParameters)` method:: deleted -`XpackSqlClearCursorAsync(PostData, ClearSqlCursorRequestParameters, CancellationToken)` method:: deleted -`XpackSqlQuery(PostData, QuerySqlRequestParameters)` method:: deleted -`XpackSqlQueryAsync(PostData, QuerySqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlQueryGet(QuerySqlRequestParameters)` method:: deleted -`XpackSqlQueryGetAsync(QuerySqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlTranslate(PostData, TranslateSqlRequestParameters)` method:: deleted -`XpackSqlTranslateAsync(PostData, TranslateSqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlTranslateGet(TranslateSqlRequestParameters)` method:: deleted -`XpackSqlTranslateGetAsync(TranslateSqlRequestParameters, CancellationToken)` method:: deleted -`XpackSslCertificates(GetCertificatesRequestParameters)` method:: deleted -`XpackSslCertificatesAsync(GetCertificatesRequestParameters, CancellationToken)` method:: deleted -`XpackUsage(XPackUsageRequestParameters)` method:: deleted -`XpackUsageAsync(XPackUsageRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatch(String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatch(String, String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchAsync(String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchAsync(String, String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchPost(String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchPost(String, String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchPostAsync(String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchPostAsync(String, String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherActivateWatch(String, ActivateWatchRequestParameters)` method:: deleted -`XpackWatcherActivateWatchAsync(String, ActivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherActivateWatchPost(String, ActivateWatchRequestParameters)` method:: deleted -`XpackWatcherActivateWatchPostAsync(String, ActivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeactivateWatch(String, DeactivateWatchRequestParameters)` method:: deleted -`XpackWatcherDeactivateWatchAsync(String, DeactivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeactivateWatchPost(String, DeactivateWatchRequestParameters)` method:: deleted -`XpackWatcherDeactivateWatchPostAsync(String, DeactivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeleteWatch(String, DeleteWatchRequestParameters)` method:: deleted -`XpackWatcherDeleteWatchAsync(String, DeleteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatch(PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatch(String, PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchAsync(PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchAsync(String, PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchPost(PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchPost(String, PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchPostAsync(PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchPostAsync(String, PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherGetWatch(String, GetWatchRequestParameters)` method:: deleted -`XpackWatcherGetWatchAsync(String, GetWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherPutWatch(String, PostData, PutWatchRequestParameters)` method:: deleted -`XpackWatcherPutWatchAsync(String, PostData, PutWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherPutWatchPost(String, PostData, PutWatchRequestParameters)` method:: deleted -`XpackWatcherPutWatchPostAsync(String, PostData, PutWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherRestart(RestartWatcherRequestParameters)` method:: deleted -`XpackWatcherRestartAsync(RestartWatcherRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStart(StartWatcherRequestParameters)` method:: deleted -`XpackWatcherStartAsync(StartWatcherRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStats(WatcherStatsMetric, WatcherStatsRequestParameters)` method:: deleted -`XpackWatcherStats(WatcherStatsRequestParameters)` method:: deleted -`XpackWatcherStatsAsync(WatcherStatsMetric, WatcherStatsRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStatsAsync(WatcherStatsRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStop(StopWatcherRequestParameters)` method:: deleted -`XpackWatcherStopAsync(StopWatcherRequestParameters, CancellationToken)` method:: deleted -`Cat` property:: added -`Cluster` property:: added -`CrossClusterReplication` property:: added -`Graph` property:: added -`IndexLifecycleManagement` property:: added -`Indices` property:: added -`Ingest` property:: added -`License` property:: added -`MachineLearning` property:: added -`Migration` property:: added -`Nodes` property:: added -`Rollup` property:: added -`Security` property:: added -`Snapshot` property:: added -`Sql` property:: added -`Tasks` property:: added -`Watcher` property:: added -`XPack` property:: added - -[discrete] -==== `Elasticsearch.Net.ElasticsearchDynamicValue` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ElasticsearchResponseBase` - -[horizontal] -`AuditTrail` property getter:: -changed to virtual. -`AuditTrail` property setter:: -`ConnectionConfiguration` property:: added - -[discrete] -==== `Elasticsearch.Net.ElasticsearchSerializerExtensions` - -[horizontal] -`SerializeToBytes(IElasticsearchSerializer, T, IMemoryStreamFactory, SerializationFormatting)` method:: added -`SerializeToString(IElasticsearchSerializer, T, IMemoryStreamFactory, SerializationFormatting)` method:: added - -[discrete] -==== `Elasticsearch.Net.ElasticsearchUrlFormatter` - -[horizontal] -`CreateEscapedString(Object)` method:: deleted - -[discrete] -==== `Elasticsearch.Net.EnableUserRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.EnumExtensions` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.ErrorCause` - -[horizontal] -`AdditionalProperties` property:: added -`BytesLimit` property:: added -`BytesWanted` property:: added -`CausedBy` property setter:: -Member is less visible. -`Column` property:: added -`FailedShards` property:: added -`Grouped` property:: added -`Index` property:: added -`IndexUUID` property:: added -`Language` property:: added -`LicensedExpiredFeature` property:: added -`Line` property:: added -`Metadata` property:: deleted -`Phase` property:: added -`Reason` property setter:: -Member is less visible. -`ResourceId` property:: added -`ResourceType` property:: added -`Script` property:: added -`ScriptStack` property:: added -`Shard` property:: added -`StackTrace` property setter:: -Member is less visible. -`Type` property setter:: -Member is less visible. - -[discrete] -==== `.ErrorCauseMetadata` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ExecuteWatchRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.ExplainLifecycleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ExplainRequestParameters` - -[horizontal] -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.FlushJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.FlushRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.FollowIndexStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ForceMergeRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ForecastJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.Format` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetAliasRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetAnomalyRecordsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetApiKeyRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetAutoFollowPatternRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetBasicLicenseStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetBucketsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetCalendarEventsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetCalendarsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetCategoriesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetCertificatesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetDatafeedsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetDatafeedStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetFieldMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetFiltersRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetIlmStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetIndexSettingsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetIndexTemplateRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetInfluencersRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetJobsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetJobStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetLicenseRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetLifecycleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetModelSnapshotsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetOverallBucketsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetPipelineRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetPrivilegesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRepositoryRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRequestParameters` - -[horizontal] -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.GetRoleMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRoleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRollupCapabilitiesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRollupIndexCapabilitiesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetRollupJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetSnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetTaskRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetTrialLicenseStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetUserAccessTokenRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetUserPrivilegesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetUserRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GetWatchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GraphExploreRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.GrokProcessorPatternsRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.HasPrivilegesRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.HttpConnection` - -[horizontal] -`CreateHttpClientHandler(RequestData)` method:: -Member type changed from `HttpClientHandler` to `HttpMessageHandler`. - -[discrete] -==== `Elasticsearch.Net.IApiCallDetails` - -[horizontal] -`ConnectionConfiguration` property:: added - -[discrete] -==== `Elasticsearch.Net.IConnectionConfigurationValues` - -[horizontal] -`StatusCodeToResponseSuccess` property:: added -`UserAgent` property:: added - -[discrete] -==== `Elasticsearch.Net.IElasticLowLevelClient` - -[horizontal] -`Bulk(String, String, PostData, BulkRequestParameters)` method:: deleted -`BulkAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPut(PostData, BulkRequestParameters)` method:: deleted -`BulkPut(String, PostData, BulkRequestParameters)` method:: deleted -`BulkPut(String, String, PostData, BulkRequestParameters)` method:: deleted -`BulkPutAsync(PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPutAsync(String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkPutAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: deleted -`BulkUsingType(String, String, PostData, BulkRequestParameters)` method:: added -`BulkUsingTypeAsync(String, String, PostData, BulkRequestParameters, CancellationToken)` method:: added -`CatAliases(CatAliasesRequestParameters)` method:: deleted -`CatAliases(String, CatAliasesRequestParameters)` method:: deleted -`CatAliasesAsync(CatAliasesRequestParameters, CancellationToken)` method:: deleted -`CatAliasesAsync(String, CatAliasesRequestParameters, CancellationToken)` method:: deleted -`CatAllocation(CatAllocationRequestParameters)` method:: deleted -`CatAllocation(String, CatAllocationRequestParameters)` method:: deleted -`CatAllocationAsync(CatAllocationRequestParameters, CancellationToken)` method:: deleted -`CatAllocationAsync(String, CatAllocationRequestParameters, CancellationToken)` method:: deleted -`CatCount(CatCountRequestParameters)` method:: deleted -`CatCount(String, CatCountRequestParameters)` method:: deleted -`CatCountAsync(CatCountRequestParameters, CancellationToken)` method:: deleted -`CatCountAsync(String, CatCountRequestParameters, CancellationToken)` method:: deleted -`CatFielddata(CatFielddataRequestParameters)` method:: deleted -`CatFielddata(String, CatFielddataRequestParameters)` method:: deleted -`CatFielddataAsync(CatFielddataRequestParameters, CancellationToken)` method:: deleted -`CatFielddataAsync(String, CatFielddataRequestParameters, CancellationToken)` method:: deleted -`CatHealth(CatHealthRequestParameters)` method:: deleted -`CatHealthAsync(CatHealthRequestParameters, CancellationToken)` method:: deleted -`CatHelp(CatHelpRequestParameters)` method:: deleted -`CatHelpAsync(CatHelpRequestParameters, CancellationToken)` method:: deleted -`CatIndices(CatIndicesRequestParameters)` method:: deleted -`CatIndices(String, CatIndicesRequestParameters)` method:: deleted -`CatIndicesAsync(CatIndicesRequestParameters, CancellationToken)` method:: deleted -`CatIndicesAsync(String, CatIndicesRequestParameters, CancellationToken)` method:: deleted -`CatMaster(CatMasterRequestParameters)` method:: deleted -`CatMasterAsync(CatMasterRequestParameters, CancellationToken)` method:: deleted -`CatNodeattrs(CatNodeAttributesRequestParameters)` method:: deleted -`CatNodeattrsAsync(CatNodeAttributesRequestParameters, CancellationToken)` method:: deleted -`CatNodes(CatNodesRequestParameters)` method:: deleted -`CatNodesAsync(CatNodesRequestParameters, CancellationToken)` method:: deleted -`CatPendingTasks(CatPendingTasksRequestParameters)` method:: deleted -`CatPendingTasksAsync(CatPendingTasksRequestParameters, CancellationToken)` method:: deleted -`CatPlugins(CatPluginsRequestParameters)` method:: deleted -`CatPluginsAsync(CatPluginsRequestParameters, CancellationToken)` method:: deleted -`CatRecovery(CatRecoveryRequestParameters)` method:: deleted -`CatRecovery(String, CatRecoveryRequestParameters)` method:: deleted -`CatRecoveryAsync(CatRecoveryRequestParameters, CancellationToken)` method:: deleted -`CatRecoveryAsync(String, CatRecoveryRequestParameters, CancellationToken)` method:: deleted -`CatRepositories(CatRepositoriesRequestParameters)` method:: deleted -`CatRepositoriesAsync(CatRepositoriesRequestParameters, CancellationToken)` method:: deleted -`CatSegments(CatSegmentsRequestParameters)` method:: deleted -`CatSegments(String, CatSegmentsRequestParameters)` method:: deleted -`CatSegmentsAsync(CatSegmentsRequestParameters, CancellationToken)` method:: deleted -`CatSegmentsAsync(String, CatSegmentsRequestParameters, CancellationToken)` method:: deleted -`CatShards(CatShardsRequestParameters)` method:: deleted -`CatShards(String, CatShardsRequestParameters)` method:: deleted -`CatShardsAsync(CatShardsRequestParameters, CancellationToken)` method:: deleted -`CatShardsAsync(String, CatShardsRequestParameters, CancellationToken)` method:: deleted -`CatSnapshots(CatSnapshotsRequestParameters)` method:: deleted -`CatSnapshots(String, CatSnapshotsRequestParameters)` method:: deleted -`CatSnapshotsAsync(CatSnapshotsRequestParameters, CancellationToken)` method:: deleted -`CatSnapshotsAsync(String, CatSnapshotsRequestParameters, CancellationToken)` method:: deleted -`CatTasks(CatTasksRequestParameters)` method:: deleted -`CatTasksAsync(CatTasksRequestParameters, CancellationToken)` method:: deleted -`CatTemplates(CatTemplatesRequestParameters)` method:: deleted -`CatTemplates(String, CatTemplatesRequestParameters)` method:: deleted -`CatTemplatesAsync(CatTemplatesRequestParameters, CancellationToken)` method:: deleted -`CatTemplatesAsync(String, CatTemplatesRequestParameters, CancellationToken)` method:: deleted -`CatThreadPool(CatThreadPoolRequestParameters)` method:: deleted -`CatThreadPool(String, CatThreadPoolRequestParameters)` method:: deleted -`CatThreadPoolAsync(CatThreadPoolRequestParameters, CancellationToken)` method:: deleted -`CatThreadPoolAsync(String, CatThreadPoolRequestParameters, CancellationToken)` method:: deleted -`CcrDeleteAutoFollowPattern(String, DeleteAutoFollowPatternRequestParameters)` method:: deleted -`CcrDeleteAutoFollowPatternAsync(String, DeleteAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrFollow(String, PostData, CreateFollowIndexRequestParameters)` method:: deleted -`CcrFollowAsync(String, PostData, CreateFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrFollowStats(String, FollowIndexStatsRequestParameters)` method:: deleted -`CcrFollowStatsAsync(String, FollowIndexStatsRequestParameters, CancellationToken)` method:: deleted -`CcrGetAutoFollowPattern(GetAutoFollowPatternRequestParameters)` method:: deleted -`CcrGetAutoFollowPattern(String, GetAutoFollowPatternRequestParameters)` method:: deleted -`CcrGetAutoFollowPatternAsync(GetAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrGetAutoFollowPatternAsync(String, GetAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrPauseFollow(String, PauseFollowIndexRequestParameters)` method:: deleted -`CcrPauseFollowAsync(String, PauseFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrPutAutoFollowPattern(String, PostData, CreateAutoFollowPatternRequestParameters)` method:: deleted -`CcrPutAutoFollowPatternAsync(String, PostData, CreateAutoFollowPatternRequestParameters, CancellationToken)` method:: deleted -`CcrResumeFollow(String, PostData, ResumeFollowIndexRequestParameters)` method:: deleted -`CcrResumeFollowAsync(String, PostData, ResumeFollowIndexRequestParameters, CancellationToken)` method:: deleted -`CcrStats(CcrStatsRequestParameters)` method:: deleted -`CcrStatsAsync(CcrStatsRequestParameters, CancellationToken)` method:: deleted -`CcrUnfollow(String, UnfollowIndexRequestParameters)` method:: deleted -`CcrUnfollowAsync(String, UnfollowIndexRequestParameters, CancellationToken)` method:: deleted -`ClearScroll(String, PostData, ClearScrollRequestParameters)` method:: added -`ClearScrollAsync(String, PostData, ClearScrollRequestParameters, CancellationToken)` method:: added -`ClusterAllocationExplain(PostData, ClusterAllocationExplainRequestParameters)` method:: deleted -`ClusterAllocationExplainAsync(PostData, ClusterAllocationExplainRequestParameters, CancellationToken)` method:: deleted -`ClusterAllocationExplainGet(ClusterAllocationExplainRequestParameters)` method:: deleted -`ClusterAllocationExplainGetAsync(ClusterAllocationExplainRequestParameters, CancellationToken)` method:: deleted -`ClusterGetSettings(ClusterGetSettingsRequestParameters)` method:: deleted -`ClusterGetSettingsAsync(ClusterGetSettingsRequestParameters, CancellationToken)` method:: deleted -`ClusterHealth(ClusterHealthRequestParameters)` method:: deleted -`ClusterHealth(String, ClusterHealthRequestParameters)` method:: deleted -`ClusterHealthAsync(ClusterHealthRequestParameters, CancellationToken)` method:: deleted -`ClusterHealthAsync(String, ClusterHealthRequestParameters, CancellationToken)` method:: deleted -`ClusterPendingTasks(ClusterPendingTasksRequestParameters)` method:: deleted -`ClusterPendingTasksAsync(ClusterPendingTasksRequestParameters, CancellationToken)` method:: deleted -`ClusterPutSettings(PostData, ClusterPutSettingsRequestParameters)` method:: deleted -`ClusterPutSettingsAsync(PostData, ClusterPutSettingsRequestParameters, CancellationToken)` method:: deleted -`ClusterRemoteInfo(RemoteInfoRequestParameters)` method:: deleted -`ClusterRemoteInfoAsync(RemoteInfoRequestParameters, CancellationToken)` method:: deleted -`ClusterReroute(PostData, ClusterRerouteRequestParameters)` method:: deleted -`ClusterRerouteAsync(PostData, ClusterRerouteRequestParameters, CancellationToken)` method:: deleted -`ClusterState(ClusterStateRequestParameters)` method:: deleted -`ClusterState(String, ClusterStateRequestParameters)` method:: deleted -`ClusterState(String, String, ClusterStateRequestParameters)` method:: deleted -`ClusterStateAsync(ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStateAsync(String, ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStateAsync(String, String, ClusterStateRequestParameters, CancellationToken)` method:: deleted -`ClusterStats(ClusterStatsRequestParameters)` method:: deleted -`ClusterStats(String, ClusterStatsRequestParameters)` method:: deleted -`ClusterStatsAsync(ClusterStatsRequestParameters, CancellationToken)` method:: deleted -`ClusterStatsAsync(String, ClusterStatsRequestParameters, CancellationToken)` method:: deleted -`Count(String, String, PostData, CountRequestParameters)` method:: deleted -`CountAsync(String, String, PostData, CountRequestParameters, CancellationToken)` method:: deleted -`CountGet(CountRequestParameters)` method:: deleted -`CountGet(String, CountRequestParameters)` method:: deleted -`CountGet(String, String, CountRequestParameters)` method:: deleted -`CountGetAsync(CountRequestParameters, CancellationToken)` method:: deleted -`CountGetAsync(String, CountRequestParameters, CancellationToken)` method:: deleted -`CountGetAsync(String, String, CountRequestParameters, CancellationToken)` method:: deleted -`CountUsingType(String, String, PostData, CountRequestParameters)` method:: added -`CountUsingTypeAsync(String, String, PostData, CountRequestParameters, CancellationToken)` method:: added -`Create(String, String, PostData, CreateRequestParameters)` method:: added -`Create(String, String, String, PostData, CreateRequestParameters)` method:: deleted -`CreateAsync(String, String, PostData, CreateRequestParameters, CancellationToken)` method:: added -`CreateAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: deleted -`CreatePost(String, String, String, PostData, CreateRequestParameters)` method:: deleted -`CreatePostAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: deleted -`CreateUsingType(String, String, String, PostData, CreateRequestParameters)` method:: added -`CreateUsingTypeAsync(String, String, String, PostData, CreateRequestParameters, CancellationToken)` method:: added -`Delete(String, String, DeleteRequestParameters)` method:: added -`Delete(String, String, String, DeleteRequestParameters)` method:: deleted -`DeleteAsync(String, String, DeleteRequestParameters, CancellationToken)` method:: added -`DeleteAsync(String, String, String, DeleteRequestParameters, CancellationToken)` method:: deleted -`DeleteByQuery(String, String, PostData, DeleteByQueryRequestParameters)` method:: deleted -`DeleteByQueryAsync(String, String, PostData, DeleteByQueryRequestParameters, CancellationToken)` method:: deleted -`DeleteByQueryRethrottle(String, DeleteByQueryRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`DeleteByQueryRethrottleAsync(String, DeleteByQueryRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`DeleteByQueryUsingType(String, String, PostData, DeleteByQueryRequestParameters)` method:: added -`DeleteByQueryUsingTypeAsync(String, String, PostData, DeleteByQueryRequestParameters, CancellationToken)` method:: added -`DeleteUsingType(String, String, String, DeleteRequestParameters)` method:: added -`DeleteUsingTypeAsync(String, String, String, DeleteRequestParameters, CancellationToken)` method:: added -`DocumentExists(String, String, DocumentExistsRequestParameters)` method:: added -`DocumentExistsAsync(String, String, DocumentExistsRequestParameters, CancellationToken)` method:: added -`DocumentExistsUsingType(String, String, String, DocumentExistsRequestParameters)` method:: added -`DocumentExistsUsingTypeAsync(String, String, String, DocumentExistsRequestParameters, CancellationToken)` method:: added -`ExecutePainlessScript(PostData, ExecutePainlessScriptRequestParameters)` method:: added -`ExecutePainlessScriptAsync(PostData, ExecutePainlessScriptRequestParameters, CancellationToken)` method:: added -`Exists(String, String, String, DocumentExistsRequestParameters)` method:: deleted -`ExistsAsync(String, String, String, DocumentExistsRequestParameters, CancellationToken)` method:: deleted -`ExistsSource(String, String, String, SourceExistsRequestParameters)` method:: deleted -`ExistsSourceAsync(String, String, String, SourceExistsRequestParameters, CancellationToken)` method:: deleted -`Explain(String, String, PostData, ExplainRequestParameters)` method:: added -`Explain(String, String, String, PostData, ExplainRequestParameters)` method:: deleted -`ExplainAsync(String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: added -`ExplainAsync(String, String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: deleted -`ExplainGet(String, String, String, ExplainRequestParameters)` method:: deleted -`ExplainGetAsync(String, String, String, ExplainRequestParameters, CancellationToken)` method:: deleted -`ExplainUsingType(String, String, String, PostData, ExplainRequestParameters)` method:: added -`ExplainUsingTypeAsync(String, String, String, PostData, ExplainRequestParameters, CancellationToken)` method:: added -`FieldCapabilities(FieldCapabilitiesRequestParameters)` method:: added -`FieldCapabilities(String, FieldCapabilitiesRequestParameters)` method:: added -`FieldCapabilitiesAsync(FieldCapabilitiesRequestParameters, CancellationToken)` method:: added -`FieldCapabilitiesAsync(String, FieldCapabilitiesRequestParameters, CancellationToken)` method:: added -`FieldCaps(PostData, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCaps(String, PostData, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsAsync(PostData, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsAsync(String, PostData, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsGet(FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsGet(String, FieldCapabilitiesRequestParameters)` method:: deleted -`FieldCapsGetAsync(FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`FieldCapsGetAsync(String, FieldCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`Get(String, String, GetRequestParameters)` method:: added -`Get(String, String, String, GetRequestParameters)` method:: deleted -`GetAsync(String, String, GetRequestParameters, CancellationToken)` method:: added -`GetAsync(String, String, String, GetRequestParameters, CancellationToken)` method:: deleted -`GetSource(String, String, String, SourceRequestParameters)` method:: deleted -`GetSourceAsync(String, String, String, SourceRequestParameters, CancellationToken)` method:: deleted -`GetUsingType(String, String, String, GetRequestParameters)` method:: added -`GetUsingTypeAsync(String, String, String, GetRequestParameters, CancellationToken)` method:: added -`Index(String, PostData, IndexRequestParameters)` method:: added -`Index(String, String, PostData, IndexRequestParameters)` method:: -Parameter name changed from `type` to `id`. -`Index(String, String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexAsync(String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndexAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: -Parameter name changed from `type` to `id`. -`IndexAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexPut(String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexPut(String, String, String, PostData, IndexRequestParameters)` method:: deleted -`IndexPutAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexPutAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: deleted -`IndexUsingType(String, String, PostData, IndexRequestParameters)` method:: added -`IndexUsingType(String, String, String, PostData, IndexRequestParameters)` method:: added -`IndexUsingTypeAsync(String, String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndexUsingTypeAsync(String, String, String, PostData, IndexRequestParameters, CancellationToken)` method:: added -`IndicesAnalyze(String, PostData, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeAsync(String, PostData, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeForAll(PostData, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeForAllAsync(PostData, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeGet(String, AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeGetAsync(String, AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesAnalyzeGetForAll(AnalyzeRequestParameters)` method:: deleted -`IndicesAnalyzeGetForAllAsync(AnalyzeRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCache(String, ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheAsync(String, ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheForAll(ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheForAllAsync(ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheGet(String, ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheGetAsync(String, ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClearCacheGetForAll(ClearCacheRequestParameters)` method:: deleted -`IndicesClearCacheGetForAllAsync(ClearCacheRequestParameters, CancellationToken)` method:: deleted -`IndicesClose(String, CloseIndexRequestParameters)` method:: deleted -`IndicesCloseAsync(String, CloseIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesCreate(String, PostData, CreateIndexRequestParameters)` method:: deleted -`IndicesCreateAsync(String, PostData, CreateIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesDelete(String, DeleteIndexRequestParameters)` method:: deleted -`IndicesDeleteAlias(String, String, DeleteAliasRequestParameters)` method:: deleted -`IndicesDeleteAliasAsync(String, String, DeleteAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesDeleteAsync(String, DeleteIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesDeleteTemplateForAll(String, DeleteIndexTemplateRequestParameters)` method:: deleted -`IndicesDeleteTemplateForAllAsync(String, DeleteIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesExists(String, IndexExistsRequestParameters)` method:: deleted -`IndicesExistsAlias(String, String, AliasExistsRequestParameters)` method:: deleted -`IndicesExistsAliasAsync(String, String, AliasExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsAliasForAll(String, AliasExistsRequestParameters)` method:: deleted -`IndicesExistsAliasForAllAsync(String, AliasExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsAsync(String, IndexExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsTemplateForAll(String, IndexTemplateExistsRequestParameters)` method:: deleted -`IndicesExistsTemplateForAllAsync(String, IndexTemplateExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesExistsType(String, String, TypeExistsRequestParameters)` method:: deleted -`IndicesExistsTypeAsync(String, String, TypeExistsRequestParameters, CancellationToken)` method:: deleted -`IndicesFlush(String, FlushRequestParameters)` method:: deleted -`IndicesFlushAsync(String, FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushForAll(FlushRequestParameters)` method:: deleted -`IndicesFlushForAllAsync(FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushGet(String, FlushRequestParameters)` method:: deleted -`IndicesFlushGetAsync(String, FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushGetForAll(FlushRequestParameters)` method:: deleted -`IndicesFlushGetForAllAsync(FlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSynced(String, SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedAsync(String, SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedForAll(SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedForAllAsync(SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedGet(String, SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedGetAsync(String, SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesFlushSyncedGetForAll(SyncedFlushRequestParameters)` method:: deleted -`IndicesFlushSyncedGetForAllAsync(SyncedFlushRequestParameters, CancellationToken)` method:: deleted -`IndicesForcemerge(String, ForceMergeRequestParameters)` method:: deleted -`IndicesForcemergeAsync(String, ForceMergeRequestParameters, CancellationToken)` method:: deleted -`IndicesForcemergeForAll(ForceMergeRequestParameters)` method:: deleted -`IndicesForcemergeForAllAsync(ForceMergeRequestParameters, CancellationToken)` method:: deleted -`IndicesGet(String, GetIndexRequestParameters)` method:: deleted -`IndicesGetAlias(String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAlias(String, String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasAsync(String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasAsync(String, String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasForAll(GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasForAll(String, GetAliasRequestParameters)` method:: deleted -`IndicesGetAliasForAllAsync(GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAliasForAllAsync(String, GetAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesGetAsync(String, GetIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMapping(String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMapping(String, String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingAsync(String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingAsync(String, String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingForAll(String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingForAll(String, String, GetFieldMappingRequestParameters)` method:: deleted -`IndicesGetFieldMappingForAllAsync(String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetFieldMappingForAllAsync(String, String, GetFieldMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMapping(String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMapping(String, String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingAsync(String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingAsync(String, String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingForAll(GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingForAll(String, GetMappingRequestParameters)` method:: deleted -`IndicesGetMappingForAllAsync(GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetMappingForAllAsync(String, GetMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettings(String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettings(String, String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsAsync(String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsAsync(String, String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsForAll(GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsForAll(String, GetIndexSettingsRequestParameters)` method:: deleted -`IndicesGetSettingsForAllAsync(GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetSettingsForAllAsync(String, GetIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesGetTemplateForAll(GetIndexTemplateRequestParameters)` method:: deleted -`IndicesGetTemplateForAll(String, GetIndexTemplateRequestParameters)` method:: deleted -`IndicesGetTemplateForAllAsync(GetIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesGetTemplateForAllAsync(String, GetIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesGetUpgrade(String, UpgradeStatusRequestParameters)` method:: deleted -`IndicesGetUpgradeAsync(String, UpgradeStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesGetUpgradeForAll(UpgradeStatusRequestParameters)` method:: deleted -`IndicesGetUpgradeForAllAsync(UpgradeStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesOpen(String, OpenIndexRequestParameters)` method:: deleted -`IndicesOpenAsync(String, OpenIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesPutAlias(String, String, PostData, PutAliasRequestParameters)` method:: deleted -`IndicesPutAliasAsync(String, String, PostData, PutAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesPutAliasPost(String, String, PostData, PutAliasRequestParameters)` method:: deleted -`IndicesPutAliasPostAsync(String, String, PostData, PutAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMapping(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMapping(String, String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingAsync(String, String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingForAll(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingForAllAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPost(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPost(String, String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPostAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPostAsync(String, String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutMappingPostForAll(String, PostData, PutMappingRequestParameters)` method:: deleted -`IndicesPutMappingPostForAllAsync(String, PostData, PutMappingRequestParameters, CancellationToken)` method:: deleted -`IndicesPutSettings(String, PostData, UpdateIndexSettingsRequestParameters)` method:: deleted -`IndicesPutSettingsAsync(String, PostData, UpdateIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesPutSettingsForAll(PostData, UpdateIndexSettingsRequestParameters)` method:: deleted -`IndicesPutSettingsForAllAsync(PostData, UpdateIndexSettingsRequestParameters, CancellationToken)` method:: deleted -`IndicesPutTemplateForAll(String, PostData, PutIndexTemplateRequestParameters)` method:: deleted -`IndicesPutTemplateForAllAsync(String, PostData, PutIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesPutTemplatePostForAll(String, PostData, PutIndexTemplateRequestParameters)` method:: deleted -`IndicesPutTemplatePostForAllAsync(String, PostData, PutIndexTemplateRequestParameters, CancellationToken)` method:: deleted -`IndicesRecovery(String, RecoveryStatusRequestParameters)` method:: deleted -`IndicesRecoveryAsync(String, RecoveryStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesRecoveryForAll(RecoveryStatusRequestParameters)` method:: deleted -`IndicesRecoveryForAllAsync(RecoveryStatusRequestParameters, CancellationToken)` method:: deleted -`IndicesRefresh(String, RefreshRequestParameters)` method:: deleted -`IndicesRefreshAsync(String, RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshForAll(RefreshRequestParameters)` method:: deleted -`IndicesRefreshForAllAsync(RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshGet(String, RefreshRequestParameters)` method:: deleted -`IndicesRefreshGetAsync(String, RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRefreshGetForAll(RefreshRequestParameters)` method:: deleted -`IndicesRefreshGetForAllAsync(RefreshRequestParameters, CancellationToken)` method:: deleted -`IndicesRolloverForAll(String, PostData, RolloverIndexRequestParameters)` method:: deleted -`IndicesRolloverForAll(String, String, PostData, RolloverIndexRequestParameters)` method:: deleted -`IndicesRolloverForAllAsync(String, PostData, RolloverIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesRolloverForAllAsync(String, String, PostData, RolloverIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSegments(String, SegmentsRequestParameters)` method:: deleted -`IndicesSegmentsAsync(String, SegmentsRequestParameters, CancellationToken)` method:: deleted -`IndicesSegmentsForAll(SegmentsRequestParameters)` method:: deleted -`IndicesSegmentsForAllAsync(SegmentsRequestParameters, CancellationToken)` method:: deleted -`IndicesShardStores(String, IndicesShardStoresRequestParameters)` method:: deleted -`IndicesShardStoresAsync(String, IndicesShardStoresRequestParameters, CancellationToken)` method:: deleted -`IndicesShardStoresForAll(IndicesShardStoresRequestParameters)` method:: deleted -`IndicesShardStoresForAllAsync(IndicesShardStoresRequestParameters, CancellationToken)` method:: deleted -`IndicesShrink(String, String, PostData, ShrinkIndexRequestParameters)` method:: deleted -`IndicesShrinkAsync(String, String, PostData, ShrinkIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesShrinkPost(String, String, PostData, ShrinkIndexRequestParameters)` method:: deleted -`IndicesShrinkPostAsync(String, String, PostData, ShrinkIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSplit(String, String, PostData, SplitIndexRequestParameters)` method:: deleted -`IndicesSplitAsync(String, String, PostData, SplitIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesSplitPost(String, String, PostData, SplitIndexRequestParameters)` method:: deleted -`IndicesSplitPostAsync(String, String, PostData, SplitIndexRequestParameters, CancellationToken)` method:: deleted -`IndicesStats(String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStats(String, String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsAsync(String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsAsync(String, String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsForAll(IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsForAll(String, IndicesStatsRequestParameters)` method:: deleted -`IndicesStatsForAllAsync(IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesStatsForAllAsync(String, IndicesStatsRequestParameters, CancellationToken)` method:: deleted -`IndicesUpdateAliasesForAll(PostData, BulkAliasRequestParameters)` method:: deleted -`IndicesUpdateAliasesForAllAsync(PostData, BulkAliasRequestParameters, CancellationToken)` method:: deleted -`IndicesUpgrade(String, UpgradeRequestParameters)` method:: deleted -`IndicesUpgradeAsync(String, UpgradeRequestParameters, CancellationToken)` method:: deleted -`IndicesUpgradeForAll(UpgradeRequestParameters)` method:: deleted -`IndicesUpgradeForAllAsync(UpgradeRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQuery(String, PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQuery(String, String, PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryAsync(String, PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryAsync(String, String, PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryForAll(PostData, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryForAllAsync(PostData, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGet(String, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGet(String, String, ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGetAsync(String, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGetAsync(String, String, ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`IndicesValidateQueryGetForAll(ValidateQueryRequestParameters)` method:: deleted -`IndicesValidateQueryGetForAllAsync(ValidateQueryRequestParameters, CancellationToken)` method:: deleted -`Info(RootNodeInfoRequestParameters)` method:: deleted -`InfoAsync(RootNodeInfoRequestParameters, CancellationToken)` method:: deleted -`IngestDeletePipeline(String, DeletePipelineRequestParameters)` method:: deleted -`IngestDeletePipelineAsync(String, DeletePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestGetPipeline(GetPipelineRequestParameters)` method:: deleted -`IngestGetPipeline(String, GetPipelineRequestParameters)` method:: deleted -`IngestGetPipelineAsync(GetPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestGetPipelineAsync(String, GetPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestProcessorGrok(GrokProcessorPatternsRequestParameters)` method:: deleted -`IngestProcessorGrokAsync(GrokProcessorPatternsRequestParameters, CancellationToken)` method:: deleted -`IngestPutPipeline(String, PostData, PutPipelineRequestParameters)` method:: deleted -`IngestPutPipelineAsync(String, PostData, PutPipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulate(PostData, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulate(String, PostData, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateAsync(PostData, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateAsync(String, PostData, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateGet(SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateGet(String, SimulatePipelineRequestParameters)` method:: deleted -`IngestSimulateGetAsync(SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`IngestSimulateGetAsync(String, SimulatePipelineRequestParameters, CancellationToken)` method:: deleted -`Mget(PostData, MultiGetRequestParameters)` method:: deleted -`Mget(String, PostData, MultiGetRequestParameters)` method:: deleted -`Mget(String, String, PostData, MultiGetRequestParameters)` method:: deleted -`MgetAsync(PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetAsync(String, PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetAsync(String, String, PostData, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGet(MultiGetRequestParameters)` method:: deleted -`MgetGet(String, MultiGetRequestParameters)` method:: deleted -`MgetGet(String, String, MultiGetRequestParameters)` method:: deleted -`MgetGetAsync(MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGetAsync(String, MultiGetRequestParameters, CancellationToken)` method:: deleted -`MgetGetAsync(String, String, MultiGetRequestParameters, CancellationToken)` method:: deleted -`Msearch(PostData, MultiSearchRequestParameters)` method:: deleted -`Msearch(String, PostData, MultiSearchRequestParameters)` method:: deleted -`Msearch(String, String, PostData, MultiSearchRequestParameters)` method:: deleted -`MsearchAsync(PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchAsync(String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchAsync(String, String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGet(MultiSearchRequestParameters)` method:: deleted -`MsearchGet(String, MultiSearchRequestParameters)` method:: deleted -`MsearchGet(String, String, MultiSearchRequestParameters)` method:: deleted -`MsearchGetAsync(MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGetAsync(String, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchGetAsync(String, String, MultiSearchRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplate(PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplate(String, PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplate(String, String, PostData, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateAsync(PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateAsync(String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateAsync(String, String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGet(MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGet(String, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGet(String, String, MultiSearchTemplateRequestParameters)` method:: deleted -`MsearchTemplateGetAsync(MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGetAsync(String, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`MsearchTemplateGetAsync(String, String, MultiSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`Mtermvectors(PostData, MultiTermVectorsRequestParameters)` method:: deleted -`Mtermvectors(String, PostData, MultiTermVectorsRequestParameters)` method:: deleted -`Mtermvectors(String, String, PostData, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsAsync(PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsAsync(String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsAsync(String, String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGet(MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGet(String, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGet(String, String, MultiTermVectorsRequestParameters)` method:: deleted -`MtermvectorsGetAsync(MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGetAsync(String, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MtermvectorsGetAsync(String, String, MultiTermVectorsRequestParameters, CancellationToken)` method:: deleted -`MultiGet(PostData, MultiGetRequestParameters)` method:: added -`MultiGet(String, PostData, MultiGetRequestParameters)` method:: added -`MultiGetAsync(PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiGetAsync(String, PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiGetUsingType(String, String, PostData, MultiGetRequestParameters)` method:: added -`MultiGetUsingTypeAsync(String, String, PostData, MultiGetRequestParameters, CancellationToken)` method:: added -`MultiSearch(PostData, MultiSearchRequestParameters)` method:: added -`MultiSearch(String, PostData, MultiSearchRequestParameters)` method:: added -`MultiSearchAsync(PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiSearchAsync(String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplate(PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplate(String, PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplateAsync(PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplateAsync(String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchTemplateUsingType(String, String, PostData, MultiSearchTemplateRequestParameters)` method:: added -`MultiSearchTemplateUsingTypeAsync(String, String, PostData, MultiSearchTemplateRequestParameters, CancellationToken)` method:: added -`MultiSearchUsingType(String, String, PostData, MultiSearchRequestParameters)` method:: added -`MultiSearchUsingTypeAsync(String, String, PostData, MultiSearchRequestParameters, CancellationToken)` method:: added -`MultiTermVectors(PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectors(String, PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectorsAsync(PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`MultiTermVectorsAsync(String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`MultiTermVectorsUsingType(String, String, PostData, MultiTermVectorsRequestParameters)` method:: added -`MultiTermVectorsUsingTypeAsync(String, String, PostData, MultiTermVectorsRequestParameters, CancellationToken)` method:: added -`NodesHotThreads(String, NodesHotThreadsRequestParameters)` method:: deleted -`NodesHotThreadsAsync(String, NodesHotThreadsRequestParameters, CancellationToken)` method:: deleted -`NodesHotThreadsForAll(NodesHotThreadsRequestParameters)` method:: deleted -`NodesHotThreadsForAllAsync(NodesHotThreadsRequestParameters, CancellationToken)` method:: deleted -`NodesInfo(String, NodesInfoRequestParameters)` method:: deleted -`NodesInfo(String, String, NodesInfoRequestParameters)` method:: deleted -`NodesInfoAsync(String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoAsync(String, String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoForAll(NodesInfoRequestParameters)` method:: deleted -`NodesInfoForAll(String, NodesInfoRequestParameters)` method:: deleted -`NodesInfoForAllAsync(NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesInfoForAllAsync(String, NodesInfoRequestParameters, CancellationToken)` method:: deleted -`NodesReloadSecureSettings(String, ReloadSecureSettingsRequestParameters)` method:: deleted -`NodesReloadSecureSettingsAsync(String, ReloadSecureSettingsRequestParameters, CancellationToken)` method:: deleted -`NodesReloadSecureSettingsForAll(ReloadSecureSettingsRequestParameters)` method:: deleted -`NodesReloadSecureSettingsForAllAsync(ReloadSecureSettingsRequestParameters, CancellationToken)` method:: deleted -`NodesStats(String, NodesStatsRequestParameters)` method:: deleted -`NodesStats(String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStats(String, String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsAsync(String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsAsync(String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsAsync(String, String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAll(NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAll(String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAll(String, String, NodesStatsRequestParameters)` method:: deleted -`NodesStatsForAllAsync(NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAllAsync(String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesStatsForAllAsync(String, String, NodesStatsRequestParameters, CancellationToken)` method:: deleted -`NodesUsage(String, NodesUsageRequestParameters)` method:: deleted -`NodesUsage(String, String, NodesUsageRequestParameters)` method:: deleted -`NodesUsageAsync(String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageAsync(String, String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageForAll(NodesUsageRequestParameters)` method:: deleted -`NodesUsageForAll(String, NodesUsageRequestParameters)` method:: deleted -`NodesUsageForAllAsync(NodesUsageRequestParameters, CancellationToken)` method:: deleted -`NodesUsageForAllAsync(String, NodesUsageRequestParameters, CancellationToken)` method:: deleted -`PutScriptPost(String, PostData, PutScriptRequestParameters)` method:: deleted -`PutScriptPost(String, String, PostData, PutScriptRequestParameters)` method:: deleted -`PutScriptPostAsync(String, PostData, PutScriptRequestParameters, CancellationToken)` method:: deleted -`PutScriptPostAsync(String, String, PostData, PutScriptRequestParameters, CancellationToken)` method:: deleted -`Reindex(PostData, ReindexOnServerRequestParameters)` method:: deleted -`ReindexAsync(PostData, ReindexOnServerRequestParameters, CancellationToken)` method:: deleted -`ReindexOnServer(PostData, ReindexOnServerRequestParameters)` method:: added -`ReindexOnServerAsync(PostData, ReindexOnServerRequestParameters, CancellationToken)` method:: added -`ReindexRethrottle(String, ReindexRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`ReindexRethrottleAsync(String, ReindexRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`RenderSearchTemplateGet(RenderSearchTemplateRequestParameters)` method:: deleted -`RenderSearchTemplateGet(String, RenderSearchTemplateRequestParameters)` method:: deleted -`RenderSearchTemplateGetAsync(RenderSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`RenderSearchTemplateGetAsync(String, RenderSearchTemplateRequestParameters, CancellationToken)` method:: deleted -`RootNodeInfo(RootNodeInfoRequestParameters)` method:: added -`RootNodeInfoAsync(RootNodeInfoRequestParameters, CancellationToken)` method:: added -`ScriptsPainlessExecute(PostData, ExecutePainlessScriptRequestParameters)` method:: deleted -`ScriptsPainlessExecuteAsync(PostData, ExecutePainlessScriptRequestParameters, CancellationToken)` method:: deleted -`ScriptsPainlessExecuteGet(ExecutePainlessScriptRequestParameters)` method:: deleted -`ScriptsPainlessExecuteGetAsync(ExecutePainlessScriptRequestParameters, CancellationToken)` method:: deleted -`Scroll(String, PostData, ScrollRequestParameters)` method:: added -`ScrollAsync(String, PostData, ScrollRequestParameters, CancellationToken)` method:: added -`ScrollGet(ScrollRequestParameters)` method:: deleted -`ScrollGetAsync(ScrollRequestParameters, CancellationToken)` method:: deleted -`Search(String, String, PostData, SearchRequestParameters)` method:: deleted -`SearchAsync(String, String, PostData, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGet(SearchRequestParameters)` method:: deleted -`SearchGet(String, SearchRequestParameters)` method:: deleted -`SearchGet(String, String, SearchRequestParameters)` method:: deleted -`SearchGetAsync(SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGetAsync(String, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchGetAsync(String, String, SearchRequestParameters, CancellationToken)` method:: deleted -`SearchShardsGet(SearchShardsRequestParameters)` method:: deleted -`SearchShardsGet(String, SearchShardsRequestParameters)` method:: deleted -`SearchShardsGetAsync(SearchShardsRequestParameters, CancellationToken)` method:: deleted -`SearchShardsGetAsync(String, SearchShardsRequestParameters, CancellationToken)` method:: deleted -`SearchTemplate(String, String, PostData, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateAsync(String, String, PostData, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGet(SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGet(String, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGet(String, String, SearchTemplateRequestParameters)` method:: deleted -`SearchTemplateGetAsync(SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGetAsync(String, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateGetAsync(String, String, SearchTemplateRequestParameters, CancellationToken)` method:: deleted -`SearchTemplateUsingType(String, String, PostData, SearchTemplateRequestParameters)` method:: added -`SearchTemplateUsingTypeAsync(String, String, PostData, SearchTemplateRequestParameters, CancellationToken)` method:: added -`SearchUsingType(String, String, PostData, SearchRequestParameters)` method:: added -`SearchUsingTypeAsync(String, String, PostData, SearchRequestParameters, CancellationToken)` method:: added -`SnapshotCreate(String, String, PostData, SnapshotRequestParameters)` method:: deleted -`SnapshotCreateAsync(String, String, PostData, SnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreatePost(String, String, PostData, SnapshotRequestParameters)` method:: deleted -`SnapshotCreatePostAsync(String, String, PostData, SnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreateRepository(String, PostData, CreateRepositoryRequestParameters)` method:: deleted -`SnapshotCreateRepositoryAsync(String, PostData, CreateRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotCreateRepositoryPost(String, PostData, CreateRepositoryRequestParameters)` method:: deleted -`SnapshotCreateRepositoryPostAsync(String, PostData, CreateRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotDelete(String, String, DeleteSnapshotRequestParameters)` method:: deleted -`SnapshotDeleteAsync(String, String, DeleteSnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotDeleteRepository(String, DeleteRepositoryRequestParameters)` method:: deleted -`SnapshotDeleteRepositoryAsync(String, DeleteRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotGet(String, String, GetSnapshotRequestParameters)` method:: deleted -`SnapshotGetAsync(String, String, GetSnapshotRequestParameters, CancellationToken)` method:: deleted -`SnapshotGetRepository(GetRepositoryRequestParameters)` method:: deleted -`SnapshotGetRepository(String, GetRepositoryRequestParameters)` method:: deleted -`SnapshotGetRepositoryAsync(GetRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotGetRepositoryAsync(String, GetRepositoryRequestParameters, CancellationToken)` method:: deleted -`SnapshotRestore(String, String, PostData, RestoreRequestParameters)` method:: deleted -`SnapshotRestoreAsync(String, String, PostData, RestoreRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatus(SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatus(String, SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatus(String, String, SnapshotStatusRequestParameters)` method:: deleted -`SnapshotStatusAsync(SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatusAsync(String, SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotStatusAsync(String, String, SnapshotStatusRequestParameters, CancellationToken)` method:: deleted -`SnapshotVerifyRepository(String, VerifyRepositoryRequestParameters)` method:: deleted -`SnapshotVerifyRepositoryAsync(String, VerifyRepositoryRequestParameters, CancellationToken)` method:: deleted -`Source(String, String, SourceRequestParameters)` method:: added -`SourceAsync(String, String, SourceRequestParameters, CancellationToken)` method:: added -`SourceExists(String, String, SourceExistsRequestParameters)` method:: added -`SourceExistsAsync(String, String, SourceExistsRequestParameters, CancellationToken)` method:: added -`SourceExistsUsingType(String, String, String, SourceExistsRequestParameters)` method:: added -`SourceExistsUsingTypeAsync(String, String, String, SourceExistsRequestParameters, CancellationToken)` method:: added -`SourceUsingType(String, String, String, SourceRequestParameters)` method:: added -`SourceUsingTypeAsync(String, String, String, SourceRequestParameters, CancellationToken)` method:: added -`TasksCancel(CancelTasksRequestParameters)` method:: deleted -`TasksCancel(String, CancelTasksRequestParameters)` method:: deleted -`TasksCancelAsync(CancelTasksRequestParameters, CancellationToken)` method:: deleted -`TasksCancelAsync(String, CancelTasksRequestParameters, CancellationToken)` method:: deleted -`TasksGet(String, GetTaskRequestParameters)` method:: deleted -`TasksGetAsync(String, GetTaskRequestParameters, CancellationToken)` method:: deleted -`TasksList(ListTasksRequestParameters)` method:: deleted -`TasksListAsync(ListTasksRequestParameters, CancellationToken)` method:: deleted -`TermVectors(String, PostData, TermVectorsRequestParameters)` method:: added -`Termvectors(String, String, PostData, TermVectorsRequestParameters)` method:: deleted -`TermVectors(String, String, PostData, TermVectorsRequestParameters)` method:: added -`Termvectors(String, String, String, PostData, TermVectorsRequestParameters)` method:: deleted -`TermVectorsAsync(String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermvectorsAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermVectorsAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermvectorsAsync(String, String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermvectorsGet(String, String, TermVectorsRequestParameters)` method:: deleted -`TermvectorsGet(String, String, String, TermVectorsRequestParameters)` method:: deleted -`TermvectorsGetAsync(String, String, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermvectorsGetAsync(String, String, String, TermVectorsRequestParameters, CancellationToken)` method:: deleted -`TermVectorsUsingType(String, String, PostData, TermVectorsRequestParameters)` method:: added -`TermVectorsUsingType(String, String, String, PostData, TermVectorsRequestParameters)` method:: added -`TermVectorsUsingTypeAsync(String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`TermVectorsUsingTypeAsync(String, String, String, PostData, TermVectorsRequestParameters, CancellationToken)` method:: added -`Update(String, String, PostData, UpdateRequestParameters)` method:: added -`Update(String, String, String, PostData, UpdateRequestParameters)` method:: deleted -`UpdateAsync(String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: added -`UpdateAsync(String, String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: deleted -`UpdateByQuery(String, String, PostData, UpdateByQueryRequestParameters)` method:: deleted -`UpdateByQueryAsync(String, String, PostData, UpdateByQueryRequestParameters, CancellationToken)` method:: deleted -`UpdateByQueryRethrottle(String, UpdateByQueryRethrottleRequestParameters)` method:: -Parameter name changed from `task_id` to `taskId`. -`UpdateByQueryRethrottleAsync(String, UpdateByQueryRethrottleRequestParameters, CancellationToken)` method:: -Parameter name changed from `task_id` to `taskId`. -`UpdateByQueryUsingType(String, String, PostData, UpdateByQueryRequestParameters)` method:: added -`UpdateByQueryUsingTypeAsync(String, String, PostData, UpdateByQueryRequestParameters, CancellationToken)` method:: added -`UpdateUsingType(String, String, String, PostData, UpdateRequestParameters)` method:: added -`UpdateUsingTypeAsync(String, String, String, PostData, UpdateRequestParameters, CancellationToken)` method:: added -`XpackDeprecationInfo(DeprecationInfoRequestParameters)` method:: deleted -`XpackDeprecationInfo(String, DeprecationInfoRequestParameters)` method:: deleted -`XpackDeprecationInfoAsync(DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackDeprecationInfoAsync(String, DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExplore(String, PostData, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExplore(String, String, PostData, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreAsync(String, PostData, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreAsync(String, String, PostData, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreGet(String, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreGet(String, String, GraphExploreRequestParameters)` method:: deleted -`XpackGraphExploreGetAsync(String, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackGraphExploreGetAsync(String, String, GraphExploreRequestParameters, CancellationToken)` method:: deleted -`XpackIlmDeleteLifecycle(String, DeleteLifecycleRequestParameters)` method:: deleted -`XpackIlmDeleteLifecycleAsync(String, DeleteLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmExplainLifecycle(String, ExplainLifecycleRequestParameters)` method:: deleted -`XpackIlmExplainLifecycleAsync(String, ExplainLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetLifecycle(GetLifecycleRequestParameters)` method:: deleted -`XpackIlmGetLifecycle(String, GetLifecycleRequestParameters)` method:: deleted -`XpackIlmGetLifecycleAsync(GetLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetLifecycleAsync(String, GetLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmGetStatus(GetIlmStatusRequestParameters)` method:: deleted -`XpackIlmGetStatusAsync(GetIlmStatusRequestParameters, CancellationToken)` method:: deleted -`XpackIlmMoveToStep(String, PostData, MoveToStepRequestParameters)` method:: deleted -`XpackIlmMoveToStepAsync(String, PostData, MoveToStepRequestParameters, CancellationToken)` method:: deleted -`XpackIlmPutLifecycle(String, PostData, PutLifecycleRequestParameters)` method:: deleted -`XpackIlmPutLifecycleAsync(String, PostData, PutLifecycleRequestParameters, CancellationToken)` method:: deleted -`XpackIlmRemovePolicy(String, RemovePolicyRequestParameters)` method:: deleted -`XpackIlmRemovePolicyAsync(String, RemovePolicyRequestParameters, CancellationToken)` method:: deleted -`XpackIlmRetry(String, RetryIlmRequestParameters)` method:: deleted -`XpackIlmRetryAsync(String, RetryIlmRequestParameters, CancellationToken)` method:: deleted -`XpackIlmStart(StartIlmRequestParameters)` method:: deleted -`XpackIlmStartAsync(StartIlmRequestParameters, CancellationToken)` method:: deleted -`XpackIlmStop(StopIlmRequestParameters)` method:: deleted -`XpackIlmStopAsync(StopIlmRequestParameters, CancellationToken)` method:: deleted -`XpackInfo(XPackInfoRequestParameters)` method:: deleted -`XpackInfoAsync(XPackInfoRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseDelete(DeleteLicenseRequestParameters)` method:: deleted -`XpackLicenseDeleteAsync(DeleteLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGet(GetLicenseRequestParameters)` method:: deleted -`XpackLicenseGetAsync(GetLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGetBasicStatus(GetBasicLicenseStatusRequestParameters)` method:: deleted -`XpackLicenseGetBasicStatusAsync(GetBasicLicenseStatusRequestParameters, CancellationToken)` method:: deleted -`XpackLicenseGetTrialStatus(GetTrialLicenseStatusRequestParameters)` method:: deleted -`XpackLicenseGetTrialStatusAsync(GetTrialLicenseStatusRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePost(PostData, PostLicenseRequestParameters)` method:: deleted -`XpackLicensePostAsync(PostData, PostLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePostStartBasic(StartBasicLicenseRequestParameters)` method:: deleted -`XpackLicensePostStartBasicAsync(StartBasicLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackLicensePostStartTrial(StartTrialLicenseRequestParameters)` method:: deleted -`XpackLicensePostStartTrialAsync(StartTrialLicenseRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationDeprecations(DeprecationInfoRequestParameters)` method:: deleted -`XpackMigrationDeprecations(String, DeprecationInfoRequestParameters)` method:: deleted -`XpackMigrationDeprecationsAsync(DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationDeprecationsAsync(String, DeprecationInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationGetAssistance(MigrationAssistanceRequestParameters)` method:: deleted -`XpackMigrationGetAssistance(String, MigrationAssistanceRequestParameters)` method:: deleted -`XpackMigrationGetAssistanceAsync(MigrationAssistanceRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationGetAssistanceAsync(String, MigrationAssistanceRequestParameters, CancellationToken)` method:: deleted -`XpackMigrationUpgrade(String, MigrationUpgradeRequestParameters)` method:: deleted -`XpackMigrationUpgradeAsync(String, MigrationUpgradeRequestParameters, CancellationToken)` method:: deleted -`XpackMlCloseJob(String, CloseJobRequestParameters)` method:: deleted -`XpackMlCloseJobAsync(String, CloseJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendar(String, DeleteCalendarRequestParameters)` method:: deleted -`XpackMlDeleteCalendarAsync(String, DeleteCalendarRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendarEvent(String, String, DeleteCalendarEventRequestParameters)` method:: deleted -`XpackMlDeleteCalendarEventAsync(String, String, DeleteCalendarEventRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteCalendarJob(String, String, DeleteCalendarJobRequestParameters)` method:: deleted -`XpackMlDeleteCalendarJobAsync(String, String, DeleteCalendarJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteDatafeed(String, DeleteDatafeedRequestParameters)` method:: deleted -`XpackMlDeleteDatafeedAsync(String, DeleteDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteExpiredData(DeleteExpiredDataRequestParameters)` method:: deleted -`XpackMlDeleteExpiredDataAsync(DeleteExpiredDataRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteFilter(String, DeleteFilterRequestParameters)` method:: deleted -`XpackMlDeleteFilterAsync(String, DeleteFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteForecast(String, String, DeleteForecastRequestParameters)` method:: deleted -`XpackMlDeleteForecastAsync(String, String, DeleteForecastRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteJob(String, DeleteJobRequestParameters)` method:: deleted -`XpackMlDeleteJobAsync(String, DeleteJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlDeleteModelSnapshot(String, String, DeleteModelSnapshotRequestParameters)` method:: deleted -`XpackMlDeleteModelSnapshotAsync(String, String, DeleteModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlFlushJob(String, PostData, FlushJobRequestParameters)` method:: deleted -`XpackMlFlushJobAsync(String, PostData, FlushJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlForecast(String, ForecastJobRequestParameters)` method:: deleted -`XpackMlForecastAsync(String, ForecastJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetBuckets(String, GetBucketsRequestParameters)` method:: deleted -`XpackMlGetBuckets(String, PostData, GetBucketsRequestParameters)` method:: deleted -`XpackMlGetBucketsAsync(String, GetBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetBucketsAsync(String, PostData, GetBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarEvents(String, GetCalendarEventsRequestParameters)` method:: deleted -`XpackMlGetCalendarEventsAsync(String, GetCalendarEventsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendars(GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(PostData, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(String, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendars(String, PostData, GetCalendarsRequestParameters)` method:: deleted -`XpackMlGetCalendarsAsync(GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(PostData, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(String, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCalendarsAsync(String, PostData, GetCalendarsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategories(String, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, PostData, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, Int64, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategories(String, Int64, PostData, GetCategoriesRequestParameters)` method:: deleted -`XpackMlGetCategoriesAsync(String, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, PostData, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, Int64, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetCategoriesAsync(String, Int64, PostData, GetCategoriesRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeeds(GetDatafeedsRequestParameters)` method:: deleted -`XpackMlGetDatafeeds(String, GetDatafeedsRequestParameters)` method:: deleted -`XpackMlGetDatafeedsAsync(GetDatafeedsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedsAsync(String, GetDatafeedsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedStats(GetDatafeedStatsRequestParameters)` method:: deleted -`XpackMlGetDatafeedStats(String, GetDatafeedStatsRequestParameters)` method:: deleted -`XpackMlGetDatafeedStatsAsync(GetDatafeedStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetDatafeedStatsAsync(String, GetDatafeedStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetFilters(GetFiltersRequestParameters)` method:: deleted -`XpackMlGetFilters(String, GetFiltersRequestParameters)` method:: deleted -`XpackMlGetFiltersAsync(GetFiltersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetFiltersAsync(String, GetFiltersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetInfluencers(String, GetInfluencersRequestParameters)` method:: deleted -`XpackMlGetInfluencers(String, PostData, GetInfluencersRequestParameters)` method:: deleted -`XpackMlGetInfluencersAsync(String, GetInfluencersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetInfluencersAsync(String, PostData, GetInfluencersRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobs(GetJobsRequestParameters)` method:: deleted -`XpackMlGetJobs(String, GetJobsRequestParameters)` method:: deleted -`XpackMlGetJobsAsync(GetJobsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobsAsync(String, GetJobsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobStats(GetJobStatsRequestParameters)` method:: deleted -`XpackMlGetJobStats(String, GetJobStatsRequestParameters)` method:: deleted -`XpackMlGetJobStatsAsync(GetJobStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetJobStatsAsync(String, GetJobStatsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshots(String, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, PostData, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, String, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshots(String, String, PostData, GetModelSnapshotsRequestParameters)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, PostData, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, String, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetModelSnapshotsAsync(String, String, PostData, GetModelSnapshotsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetOverallBuckets(String, GetOverallBucketsRequestParameters)` method:: deleted -`XpackMlGetOverallBuckets(String, PostData, GetOverallBucketsRequestParameters)` method:: deleted -`XpackMlGetOverallBucketsAsync(String, GetOverallBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetOverallBucketsAsync(String, PostData, GetOverallBucketsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetRecords(String, GetAnomalyRecordsRequestParameters)` method:: deleted -`XpackMlGetRecords(String, PostData, GetAnomalyRecordsRequestParameters)` method:: deleted -`XpackMlGetRecordsAsync(String, GetAnomalyRecordsRequestParameters, CancellationToken)` method:: deleted -`XpackMlGetRecordsAsync(String, PostData, GetAnomalyRecordsRequestParameters, CancellationToken)` method:: deleted -`XpackMlInfo(MachineLearningInfoRequestParameters)` method:: deleted -`XpackMlInfoAsync(MachineLearningInfoRequestParameters, CancellationToken)` method:: deleted -`XpackMlOpenJob(String, OpenJobRequestParameters)` method:: deleted -`XpackMlOpenJobAsync(String, OpenJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlPostCalendarEvents(String, PostData, PostCalendarEventsRequestParameters)` method:: deleted -`XpackMlPostCalendarEventsAsync(String, PostData, PostCalendarEventsRequestParameters, CancellationToken)` method:: deleted -`XpackMlPostData(String, PostData, PostJobDataRequestParameters)` method:: deleted -`XpackMlPostDataAsync(String, PostData, PostJobDataRequestParameters, CancellationToken)` method:: deleted -`XpackMlPreviewDatafeed(String, PreviewDatafeedRequestParameters)` method:: deleted -`XpackMlPreviewDatafeedAsync(String, PreviewDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutCalendar(String, PostData, PutCalendarRequestParameters)` method:: deleted -`XpackMlPutCalendarAsync(String, PostData, PutCalendarRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutCalendarJob(String, String, PutCalendarJobRequestParameters)` method:: deleted -`XpackMlPutCalendarJobAsync(String, String, PutCalendarJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutDatafeed(String, PostData, PutDatafeedRequestParameters)` method:: deleted -`XpackMlPutDatafeedAsync(String, PostData, PutDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutFilter(String, PostData, PutFilterRequestParameters)` method:: deleted -`XpackMlPutFilterAsync(String, PostData, PutFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlPutJob(String, PostData, PutJobRequestParameters)` method:: deleted -`XpackMlPutJobAsync(String, PostData, PutJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlRevertModelSnapshot(String, String, PostData, RevertModelSnapshotRequestParameters)` method:: deleted -`XpackMlRevertModelSnapshotAsync(String, String, PostData, RevertModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlStartDatafeed(String, PostData, StartDatafeedRequestParameters)` method:: deleted -`XpackMlStartDatafeedAsync(String, PostData, StartDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlStopDatafeed(String, StopDatafeedRequestParameters)` method:: deleted -`XpackMlStopDatafeedAsync(String, StopDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateDatafeed(String, PostData, UpdateDatafeedRequestParameters)` method:: deleted -`XpackMlUpdateDatafeedAsync(String, PostData, UpdateDatafeedRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateFilter(String, PostData, UpdateFilterRequestParameters)` method:: deleted -`XpackMlUpdateFilterAsync(String, PostData, UpdateFilterRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateJob(String, PostData, UpdateJobRequestParameters)` method:: deleted -`XpackMlUpdateJobAsync(String, PostData, UpdateJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlUpdateModelSnapshot(String, String, PostData, UpdateModelSnapshotRequestParameters)` method:: deleted -`XpackMlUpdateModelSnapshotAsync(String, String, PostData, UpdateModelSnapshotRequestParameters, CancellationToken)` method:: deleted -`XpackMlValidate(PostData, ValidateJobRequestParameters)` method:: deleted -`XpackMlValidateAsync(PostData, ValidateJobRequestParameters, CancellationToken)` method:: deleted -`XpackMlValidateDetector(PostData, ValidateDetectorRequestParameters)` method:: deleted -`XpackMlValidateDetectorAsync(PostData, ValidateDetectorRequestParameters, CancellationToken)` method:: deleted -`XpackRollupDeleteJob(String, DeleteRollupJobRequestParameters)` method:: deleted -`XpackRollupDeleteJobAsync(String, DeleteRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetJobs(GetRollupJobRequestParameters)` method:: deleted -`XpackRollupGetJobs(String, GetRollupJobRequestParameters)` method:: deleted -`XpackRollupGetJobsAsync(GetRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetJobsAsync(String, GetRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupCaps(GetRollupCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupCaps(String, GetRollupCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupCapsAsync(GetRollupCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupCapsAsync(String, GetRollupCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupGetRollupIndexCaps(String, GetRollupIndexCapabilitiesRequestParameters)` method:: deleted -`XpackRollupGetRollupIndexCapsAsync(String, GetRollupIndexCapabilitiesRequestParameters, CancellationToken)` method:: deleted -`XpackRollupPutJob(String, PostData, CreateRollupJobRequestParameters)` method:: deleted -`XpackRollupPutJobAsync(String, PostData, CreateRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearch(String, PostData, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearch(String, String, PostData, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchAsync(String, PostData, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchAsync(String, String, PostData, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchGet(String, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchGet(String, String, RollupSearchRequestParameters)` method:: deleted -`XpackRollupRollupSearchGetAsync(String, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupRollupSearchGetAsync(String, String, RollupSearchRequestParameters, CancellationToken)` method:: deleted -`XpackRollupStartJob(String, StartRollupJobRequestParameters)` method:: deleted -`XpackRollupStartJobAsync(String, StartRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackRollupStopJob(String, StopRollupJobRequestParameters)` method:: deleted -`XpackRollupStopJobAsync(String, StopRollupJobRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityAuthenticate(AuthenticateRequestParameters)` method:: deleted -`XpackSecurityAuthenticateAsync(AuthenticateRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePassword(PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePassword(String, PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordAsync(PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordAsync(String, PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordPost(PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordPost(String, PostData, ChangePasswordRequestParameters)` method:: deleted -`XpackSecurityChangePasswordPostAsync(PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityChangePasswordPostAsync(String, PostData, ChangePasswordRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityClearCachedRealms(String, ClearCachedRealmsRequestParameters)` method:: deleted -`XpackSecurityClearCachedRealmsAsync(String, ClearCachedRealmsRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityClearCachedRoles(String, ClearCachedRolesRequestParameters)` method:: deleted -`XpackSecurityClearCachedRolesAsync(String, ClearCachedRolesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityCreateApiKey(PostData, CreateApiKeyRequestParameters)` method:: deleted -`XpackSecurityCreateApiKeyAsync(PostData, CreateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityCreateApiKeyPost(PostData, CreateApiKeyRequestParameters)` method:: deleted -`XpackSecurityCreateApiKeyPostAsync(PostData, CreateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeletePrivileges(String, String, DeletePrivilegesRequestParameters)` method:: deleted -`XpackSecurityDeletePrivilegesAsync(String, String, DeletePrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteRole(String, DeleteRoleRequestParameters)` method:: deleted -`XpackSecurityDeleteRoleAsync(String, DeleteRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteRoleMapping(String, DeleteRoleMappingRequestParameters)` method:: deleted -`XpackSecurityDeleteRoleMappingAsync(String, DeleteRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDeleteUser(String, DeleteUserRequestParameters)` method:: deleted -`XpackSecurityDeleteUserAsync(String, DeleteUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDisableUser(String, DisableUserRequestParameters)` method:: deleted -`XpackSecurityDisableUserAsync(String, DisableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityDisableUserPost(String, DisableUserRequestParameters)` method:: deleted -`XpackSecurityDisableUserPostAsync(String, DisableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityEnableUser(String, EnableUserRequestParameters)` method:: deleted -`XpackSecurityEnableUserAsync(String, EnableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityEnableUserPost(String, EnableUserRequestParameters)` method:: deleted -`XpackSecurityEnableUserPostAsync(String, EnableUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetApiKey(GetApiKeyRequestParameters)` method:: deleted -`XpackSecurityGetApiKeyAsync(GetApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivileges(GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivileges(String, GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivileges(String, String, GetPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetPrivilegesAsync(GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivilegesAsync(String, GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetPrivilegesAsync(String, String, GetPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRole(GetRoleRequestParameters)` method:: deleted -`XpackSecurityGetRole(String, GetRoleRequestParameters)` method:: deleted -`XpackSecurityGetRoleAsync(GetRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleAsync(String, GetRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleMapping(GetRoleMappingRequestParameters)` method:: deleted -`XpackSecurityGetRoleMapping(String, GetRoleMappingRequestParameters)` method:: deleted -`XpackSecurityGetRoleMappingAsync(GetRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetRoleMappingAsync(String, GetRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetToken(PostData, GetUserAccessTokenRequestParameters)` method:: deleted -`XpackSecurityGetTokenAsync(PostData, GetUserAccessTokenRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUser(GetUserRequestParameters)` method:: deleted -`XpackSecurityGetUser(String, GetUserRequestParameters)` method:: deleted -`XpackSecurityGetUserAsync(GetUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUserAsync(String, GetUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityGetUserPrivileges(GetUserPrivilegesRequestParameters)` method:: deleted -`XpackSecurityGetUserPrivilegesAsync(GetUserPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivileges(PostData, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivileges(String, PostData, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesAsync(PostData, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesAsync(String, PostData, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesGet(HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesGet(String, HasPrivilegesRequestParameters)` method:: deleted -`XpackSecurityHasPrivilegesGetAsync(HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityHasPrivilegesGetAsync(String, HasPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityInvalidateApiKey(PostData, InvalidateApiKeyRequestParameters)` method:: deleted -`XpackSecurityInvalidateApiKeyAsync(PostData, InvalidateApiKeyRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityInvalidateToken(PostData, InvalidateUserAccessTokenRequestParameters)` method:: deleted -`XpackSecurityInvalidateTokenAsync(PostData, InvalidateUserAccessTokenRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutPrivileges(PostData, PutPrivilegesRequestParameters)` method:: deleted -`XpackSecurityPutPrivilegesAsync(PostData, PutPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutPrivilegesPost(PostData, PutPrivilegesRequestParameters)` method:: deleted -`XpackSecurityPutPrivilegesPostAsync(PostData, PutPrivilegesRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRole(String, PostData, PutRoleRequestParameters)` method:: deleted -`XpackSecurityPutRoleAsync(String, PostData, PutRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRoleMapping(String, PostData, PutRoleMappingRequestParameters)` method:: deleted -`XpackSecurityPutRoleMappingAsync(String, PostData, PutRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRoleMappingPost(String, PostData, PutRoleMappingRequestParameters)` method:: deleted -`XpackSecurityPutRoleMappingPostAsync(String, PostData, PutRoleMappingRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutRolePost(String, PostData, PutRoleRequestParameters)` method:: deleted -`XpackSecurityPutRolePostAsync(String, PostData, PutRoleRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutUser(String, PostData, PutUserRequestParameters)` method:: deleted -`XpackSecurityPutUserAsync(String, PostData, PutUserRequestParameters, CancellationToken)` method:: deleted -`XpackSecurityPutUserPost(String, PostData, PutUserRequestParameters)` method:: deleted -`XpackSecurityPutUserPostAsync(String, PostData, PutUserRequestParameters, CancellationToken)` method:: deleted -`XpackSqlClearCursor(PostData, ClearSqlCursorRequestParameters)` method:: deleted -`XpackSqlClearCursorAsync(PostData, ClearSqlCursorRequestParameters, CancellationToken)` method:: deleted -`XpackSqlQuery(PostData, QuerySqlRequestParameters)` method:: deleted -`XpackSqlQueryAsync(PostData, QuerySqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlQueryGet(QuerySqlRequestParameters)` method:: deleted -`XpackSqlQueryGetAsync(QuerySqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlTranslate(PostData, TranslateSqlRequestParameters)` method:: deleted -`XpackSqlTranslateAsync(PostData, TranslateSqlRequestParameters, CancellationToken)` method:: deleted -`XpackSqlTranslateGet(TranslateSqlRequestParameters)` method:: deleted -`XpackSqlTranslateGetAsync(TranslateSqlRequestParameters, CancellationToken)` method:: deleted -`XpackSslCertificates(GetCertificatesRequestParameters)` method:: deleted -`XpackSslCertificatesAsync(GetCertificatesRequestParameters, CancellationToken)` method:: deleted -`XpackUsage(XPackUsageRequestParameters)` method:: deleted -`XpackUsageAsync(XPackUsageRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatch(String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatch(String, String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchAsync(String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchAsync(String, String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchPost(String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchPost(String, String, AcknowledgeWatchRequestParameters)` method:: deleted -`XpackWatcherAckWatchPostAsync(String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherAckWatchPostAsync(String, String, AcknowledgeWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherActivateWatch(String, ActivateWatchRequestParameters)` method:: deleted -`XpackWatcherActivateWatchAsync(String, ActivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherActivateWatchPost(String, ActivateWatchRequestParameters)` method:: deleted -`XpackWatcherActivateWatchPostAsync(String, ActivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeactivateWatch(String, DeactivateWatchRequestParameters)` method:: deleted -`XpackWatcherDeactivateWatchAsync(String, DeactivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeactivateWatchPost(String, DeactivateWatchRequestParameters)` method:: deleted -`XpackWatcherDeactivateWatchPostAsync(String, DeactivateWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherDeleteWatch(String, DeleteWatchRequestParameters)` method:: deleted -`XpackWatcherDeleteWatchAsync(String, DeleteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatch(PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatch(String, PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchAsync(PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchAsync(String, PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchPost(PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchPost(String, PostData, ExecuteWatchRequestParameters)` method:: deleted -`XpackWatcherExecuteWatchPostAsync(PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherExecuteWatchPostAsync(String, PostData, ExecuteWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherGetWatch(String, GetWatchRequestParameters)` method:: deleted -`XpackWatcherGetWatchAsync(String, GetWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherPutWatch(String, PostData, PutWatchRequestParameters)` method:: deleted -`XpackWatcherPutWatchAsync(String, PostData, PutWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherPutWatchPost(String, PostData, PutWatchRequestParameters)` method:: deleted -`XpackWatcherPutWatchPostAsync(String, PostData, PutWatchRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherRestart(RestartWatcherRequestParameters)` method:: deleted -`XpackWatcherRestartAsync(RestartWatcherRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStart(StartWatcherRequestParameters)` method:: deleted -`XpackWatcherStartAsync(StartWatcherRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStats(WatcherStatsMetric, WatcherStatsRequestParameters)` method:: deleted -`XpackWatcherStats(WatcherStatsRequestParameters)` method:: deleted -`XpackWatcherStatsAsync(WatcherStatsMetric, WatcherStatsRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStatsAsync(WatcherStatsRequestParameters, CancellationToken)` method:: deleted -`XpackWatcherStop(StopWatcherRequestParameters)` method:: deleted -`XpackWatcherStopAsync(StopWatcherRequestParameters, CancellationToken)` method:: deleted -`Cat` property:: added -`Cluster` property:: added -`CrossClusterReplication` property:: added -`Graph` property:: added -`IndexLifecycleManagement` property:: added -`Indices` property:: added -`Ingest` property:: added -`License` property:: added -`MachineLearning` property:: added -`Migration` property:: added -`Nodes` property:: added -`Rollup` property:: added -`Security` property:: added -`Snapshot` property:: added -`Sql` property:: added -`Tasks` property:: added -`Watcher` property:: added -`XPack` property:: added - -[discrete] -==== `Elasticsearch.Net.IHideObjectMembers` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IMemoryStreamFactory` - -[horizontal] -`Create(Byte[], Int32, Int32)` method:: added - -[discrete] -==== `Elasticsearch.Net.IndexExistsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IndexRequestParameters` - -[horizontal] -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted - -[discrete] -==== `Elasticsearch.Net.IndexTemplateExistsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IndicesShardStoresRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IndicesShardStoresStatus` - -[horizontal] -type:: added - - -[discrete] -==== `Elasticsearch.Net.IndicesStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.InvalidateApiKeyRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.InvalidateUserAccessTokenRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IPostData` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.IPostData` - -[horizontal] -`Write(Stream, IConnectionConfigurationValues)` method:: added -`WriteAsync(Stream, IConnectionConfigurationValues, CancellationToken)` method:: added - -[discrete] -==== `Elasticsearch.Net.IRequestConfiguration` - -[horizontal] - -[discrete] -==== `Elasticsearch.Net.IRequestParameters` - -[horizontal] -`CustomResponseBuilder` property:: added -`DeserializationOverride` property:: deleted - -[discrete] -==== `Elasticsearch.Net.KnownEnums` - -[horizontal] -`GetStringValue(ClusterRerouteMetric)` method:: added -`GetStringValue(Format)` method:: deleted -`GetStringValue(IndicesShardStoresStatus)` method:: added - - -[discrete] -==== `Elasticsearch.Net.ListTasksRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.MachineLearningInfoRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.MemoryStreamFactory` - -[horizontal] -`Create(Byte[], Int32, Int32)` method:: added - -[discrete] -==== `Elasticsearch.Net.MigrationAssistanceRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.MigrationUpgradeRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.MoveToStepRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.MultiGetRequestParameters` - -[horizontal] -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.MultiSearchRequestParameters` - -[horizontal] -`CcsMinimizeRoundtrips` property:: added - -[discrete] -==== `Elasticsearch.Net.MultiSearchTemplateRequestParameters` - -[horizontal] -`CcsMinimizeRoundtrips` property:: added - -[discrete] -==== `Elasticsearch.Net.MultiTermVectorsRequestParameters` - -[horizontal] -`Parent` property:: deleted - -[discrete] -==== `Elasticsearch.Net.NamespacedClientProxy` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.NodesHotThreadsRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.NodesInfoRequestParameters` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Elasticsearch.Net.NodesStatsRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.NodesUsageRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.OpenIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.OpenJobRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.PauseFollowIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PipelineException` - -[horizontal] -`PipelineException(String)` method:: deleted - -[discrete] -==== `Elasticsearch.Net.PostCalendarEventsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PostJobDataRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PostLicenseRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PreviewDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutAliasRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutCalendarJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutCalendarRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutFilterRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutIndexTemplateRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutLifecycleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutPipelineRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutPrivilegesRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutRoleMappingRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutRoleRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutUserRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.PutWatchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.QuerySqlRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RecoveryStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RecyclableMemoryStreamFactory` - -[horizontal] -`Create(Byte[], Int32, Int32)` method:: added -`Default` property:: added - - -[discrete] -==== `Elasticsearch.Net.RefreshRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ReloadSecureSettingsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RemoteInfoRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RemovePolicyRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RequestConfiguration` - -[horizontal] -`CancellationToken` property:: deleted - -[discrete] -==== `Elasticsearch.Net.RequestConfigurationDescriptor` - -[horizontal] -`BasicAuthentication(String, SecureString)` method:: added - -[discrete] -==== `Elasticsearch.Net.RequestData` - -[horizontal] -`ToString()` method:: added -`CustomConverter` property:: deleted -`CustomResponseBuilder` property:: added -`UserAgent` property:: added - -[discrete] -==== `Elasticsearch.Net.RequestParameters` - -[horizontal] -`CustomResponseBuilder` property:: added -`DeserializationOverride` property:: deleted - -[discrete] -==== `Elasticsearch.Net.RequestPipeline` - -[horizontal] -`DepleededRetries` property:: deleted -`DepletedRetries` property:: added - -[discrete] -==== `Elasticsearch.Net.RestartWatcherRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RestoreRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ResumeFollowIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RetryIlmRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RevertModelSnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RolloverIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.RollupSearchRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.SearchRequestParameters` - -[horizontal] -`CcsMinimizeRoundtrips` property:: added -`SeqNoPrimaryTerm` property:: deleted -`SequenceNumberPrimaryTerm` property:: added - -[discrete] -==== `Elasticsearch.Net.SearchTemplateRequestParameters` - -[horizontal] -`CcsMinimizeRoundtrips` property:: added - - -[discrete] -==== `Elasticsearch.Net.SecureStrings` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.SegmentsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.SerializableData` - -[horizontal] -`op_Implicit(T)` method:: -Parameter name changed from `serialiableData` to `serializableData`. - -[discrete] -==== `Elasticsearch.Net.SerializerRegistrationInformation` - -[horizontal] -type:: added - - - -[discrete] -==== `Elasticsearch.Net.ShrinkIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.SimulatePipelineRequestParameters` - -[horizontal] -type:: deleted - - -[discrete] -==== `Elasticsearch.Net.SnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.SnapshotStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.SourceExistsRequestParameters` - -[horizontal] -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.SourceRequestParameters` - -[horizontal] -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatAliasesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatAllocationRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatCountRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatFielddataRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatHealthRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatHelpRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatIndicesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatMasterRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatNodeAttributesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatNodesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatPendingTasksRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatPluginsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatRecoveryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatRepositoriesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatSegmentsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatShardsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatSnapshotsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatTasksRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatTemplatesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.CatThreadPoolRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CatApi.LowLevelCatNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterAllocationExplainRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterGetSettingsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterHealthRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterPendingTasksRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterPutSettingsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterRerouteRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterStateRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.ClusterStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.LowLevelClusterNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.ClusterApi.RemoteInfoRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.CcrStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.CreateAutoFollowPatternRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.CreateFollowIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.DeleteAutoFollowPatternRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.FollowIndexStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.GetAutoFollowPatternRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.LowLevelCrossClusterReplicationNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.PauseFollowIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.ResumeFollowIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.CrossClusterReplicationApi.UnfollowIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.GraphApi.GraphExploreRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.GraphApi.LowLevelGraphNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.DeleteLifecycleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.ExplainLifecycleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.GetIlmStatusRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.GetLifecycleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.LowLevelIndexLifecycleManagementNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.MoveToStepRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.PutLifecycleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.RemovePolicyRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.RetryIlmRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.StartIlmRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndexLifecycleManagementApi.StopIlmRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.AliasExistsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.AnalyzeRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.BulkAliasRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.ClearCacheRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.CloseIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.CreateIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.DeleteAliasRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.DeleteIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.DeleteIndexTemplateRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.FlushRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.ForceMergeRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetAliasRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetFieldMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetIndexSettingsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetIndexTemplateRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.GetMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.IndexExistsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.IndexTemplateExistsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.IndicesShardStoresRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.IndicesStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.LowLevelIndicesNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.OpenIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.PutAliasRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.PutIndexTemplateRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.PutMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.RecoveryStatusRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.RefreshRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.RolloverIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.SegmentsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.ShrinkIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.SplitIndexRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.SyncedFlushRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.TypeExistsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.UpdateIndexSettingsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IndicesApi.ValidateQueryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.DeletePipelineRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.GetPipelineRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.GrokProcessorPatternsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.LowLevelIngestNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.PutPipelineRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.IngestApi.SimulatePipelineRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.DeleteLicenseRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.GetBasicLicenseStatusRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.GetLicenseRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.GetTrialLicenseStatusRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.LowLevelLicenseNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.PostLicenseRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.StartBasicLicenseRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.LicenseApi.StartTrialLicenseRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.CloseJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteCalendarEventRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteCalendarJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteCalendarRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteExpiredDataRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteFilterRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteForecastRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.DeleteModelSnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.FlushJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.ForecastJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetAnomalyRecordsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetBucketsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetCalendarEventsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetCalendarsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetCategoriesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetDatafeedsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetDatafeedStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetFiltersRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetInfluencersRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetJobsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetJobStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetModelSnapshotsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.GetOverallBucketsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.LowLevelMachineLearningNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.MachineLearningInfoRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.OpenJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PostCalendarEventsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PostJobDataRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PreviewDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PutCalendarJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PutCalendarRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PutDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PutFilterRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.PutJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.RevertModelSnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.StartDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.StopDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.UpdateDatafeedRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.UpdateFilterRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.UpdateJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.UpdateModelSnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.ValidateDetectorRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MachineLearningApi.ValidateJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MigrationApi.DeprecationInfoRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.MigrationApi.LowLevelMigrationNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.LowLevelNodesNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.NodesHotThreadsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.NodesInfoRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.NodesStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.NodesUsageRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.NodesApi.ReloadSecureSettingsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.CreateRollupJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.DeleteRollupJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.GetRollupCapabilitiesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.GetRollupIndexCapabilitiesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.GetRollupJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.LowLevelRollupNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.RollupSearchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.StartRollupJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.RollupApi.StopRollupJobRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.AuthenticateRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.ChangePasswordRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.ClearCachedRealmsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.ClearCachedRolesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.CreateApiKeyRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.DeletePrivilegesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.DeleteRoleMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.DeleteRoleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.DeleteUserRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.DisableUserRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.EnableUserRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetApiKeyRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetCertificatesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetPrivilegesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetRoleMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetRoleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetUserAccessTokenRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetUserPrivilegesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.GetUserRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.HasPrivilegesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.InvalidateApiKeyRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.InvalidateUserAccessTokenRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.LowLevelSecurityNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.PutPrivilegesRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.PutRoleMappingRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.PutRoleRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SecurityApi.PutUserRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.CreateRepositoryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.DeleteRepositoryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.DeleteSnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.GetRepositoryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.GetSnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.LowLevelSnapshotNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.RestoreRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.SnapshotRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.SnapshotStatusRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SnapshotApi.VerifyRepositoryRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SqlApi.ClearSqlCursorRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SqlApi.LowLevelSqlNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SqlApi.QuerySqlRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.SqlApi.TranslateSqlRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.TasksApi.CancelTasksRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.TasksApi.GetTaskRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.TasksApi.ListTasksRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.TasksApi.LowLevelTasksNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.AcknowledgeWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.ActivateWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.DeactivateWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.DeleteWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.ExecuteWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.GetWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.LowLevelWatcherNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.PutWatchRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.StartWatcherRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.StopWatcherRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.WatcherApi.WatcherStatsRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.XPackApi.LowLevelXPackNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.XPackApi.XPackInfoRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.Specification.XPackApi.XPackUsageRequestParameters` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.SplitIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartBasicLicenseRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartIlmRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartRollupJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartTrialLicenseRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StartWatcherRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StopDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StopIlmRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StopRollupJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StopWatcherRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.StringEnumAttribute` - -[horizontal] -type:: added - - -[discrete] -==== `Elasticsearch.Net.SyncedFlushRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.TermVectorsRequestParameters` - -[horizontal] -`Parent` property:: deleted - - -[discrete] -==== `Elasticsearch.Net.TranslateSqlRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.TypeExistsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UnfollowIndexRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateByQueryRequestParameters` - -[horizontal] -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Elasticsearch.Net.UpdateDatafeedRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateFilterRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateIndexSettingsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateModelSnapshotRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpdateRequestParameters` - -[horizontal] -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Elasticsearch.Net.UpgradeRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.UpgradeStatusRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.Utf8Json.Formatters.EnumFormatterHelper` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Utf8Json.JsonParsingException` - -[horizontal] -type:: added - -[discrete] -==== `Elasticsearch.Net.ValidateDetectorRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ValidateJobRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.ValidateQueryRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.VerifyRepositoryRequestParameters` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Elasticsearch.Net.WatcherStatsRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.XPackInfoRequestParameters` - -[horizontal] -type:: deleted - -[discrete] -==== `Elasticsearch.Net.XPackUsageRequestParameters` - -[horizontal] -type:: deleted diff --git a/docs/7.0-breaking-changes/nest-breaking-changes.asciidoc b/docs/7.0-breaking-changes/nest-breaking-changes.asciidoc deleted file mode 100644 index 897b94a9d82..00000000000 --- a/docs/7.0-breaking-changes/nest-breaking-changes.asciidoc +++ /dev/null @@ -1,16224 +0,0 @@ -:github: https://github.com/elastic/elasticsearch-net -:nuget: https://www.nuget.org/packages - -[[nest-breaking-changes]] -== NEST Breaking Changes - -This lists *all* the binary breaking public API changes between {github}/tree/6.8.0[NEST 6.8.0], -the last 6.x version released when 7.0 went GA release, and {github}/tree/7.0.0[7.0.0]. - -The intention in providing such a large list is to allow you to quickly and -easily search the changes between the two major versions, to understand what has been removed and -equally importantly, what has been added. - -Oh my goodness, this looks like a lot of breaking changes! In a lot of cases however, -changes will not necessarily equate to compiler errors and therefore no action would be required on upgrade. - -The main breaking changes in this release are outlined below. - -[float] -=== Types removal - -Specifying types within the .NET clients is now deprecated in 7.0, inline with the overall Elasticsearch type removal strategy. - -In instances where your index contains type information and you need to preserve this information, -one recommendation is to introduce a property to describe the document type -(similar to a table per class with discriminator field in the ORM world) -and then implement a custom serialization / deserialization implementation for that class. - -[float] -=== Utf8Json for serialization - -SimpleJson has been completely removed and replaced with an implementation of Utf8Json, a fast serializer that works -directly with UTF-8 binary. This has yielded a significant performance improvement. - -That said, we removed some features that were available in the previous JSON libraries, -that have currently proven too onerous to carry forward at this stage. - -* JSON in the request is never indented, even if `SerializationFormatting.Indented` is specified. -The serialization routines generated by Utf8Json never generate an `IJsonFormatter` that will indent JSON, -for performance reasons. We are considering options for exposing indented JSON for development and debugging purposes. - -* NEST types cannot be extended by inheritance. With NEST 6.x, additional properties can be -included for a type by deriving from that type and annotating these new properties. -With the current implementation of serialization with Utf8Json, this approach will not work. - -* Serializer uses `Reflection.Emit`. Utf8Json uses `Reflection.Emit` to generate efficient formatters for -serializing types that it sees. `Reflection.Emit` is not supported on all platforms -e.g. UWP, Xamarin.iOS, Xamarin.Android. - -* Utf8Json is much stricter when deserializing JSON object field names to C# -https://en.wikipedia.org/wiki/Plain_old_CLR_object[POCO] properties. With the internal Json.NET serializer -in 6.x, JSON object field names would attempt to be matched with C# POCO property names first by an exact -match, falling back to a case insensitive match. With Utf8Json in 7.x however, JSON object field names must -match exactly the name configured for the C# POCO property name. - -* `DateTime` and `DateTimeOffset` are serialized with 7 sub-second fractional digits when the instance specifies a non-zero millisecond value. For example -** `new DateTime(2019,9,5, 12, 0, 0, 3)` serializes to `"2019-09-05T12:00:00.0030000"` -** `new DateTimeOffset(2019,9,5, 12, 0, 0, 3, TimeSpan.FromHours(12))` serializes to `"2019-09-05T12:00:00.0030000+12:00"` - -[float] -=== High to Low level client dispatch changes - -In 6.x, the process of an API call within NEST looked roughly like - -[source, csharp] ----- -client.Search() -=> Dispatch() -=> LowLevelDispatch.SearchDispatch() -=> lowlevelClient.Search() -=> lowlevelClient.DoRequest() ----- - -With 7.x, this process has been changed to remove dispatching to the low level client methods. The new process looks like - -[source, csharp] ----- -client.Search() -=> lowlevelClient.DoRequest() ----- - -This means that in the high level client `IRequest` now builds its own urls, with the upside that the -call chain is shorter and allocates fewer closures. The downside is that there are now two URL building -mechanisms, one in the low level client and a new one in the high level client. In practice this area -of the codebase is kept up to date via code generation, so does not place any additional burden on development. - -Given the simplified call chain and debugging experience, we believe this is an improvement worth making. - -[float] -=== Namespaced API methods and Upgrade Assistant - -As the API surface of Elasticsearch has grown to well over 200 endpoints, so has the number of -client methods exposed, leading to an almost overwhelming number to navigate and explore through in an IDE. - -This is further exacerbated by the fact that the .NET client exposes both synchronous and -asynchronous API methods for both the fluent API syntax as well as the object initializer syntax. - -To address this, the APIs are now accessible through sub-properties on the client instance. - -For example, in 6.x, to create a Machine Learning job: - -[source, csharp] ----- -var putJobResponse = client.PutJob("id", c => c - .Description("Lab 1 - Simple example") - .ResultsIndexName("server-metrics") - .AnalysisConfig(a => a - .BucketSpan("30m") - .Latency("0s") - .Detectors(d => d.Sum(c => c.FieldName(r => r.Total))) - ) - .DataDescription(d => d.TimeField(r => r.Timestamp)); -); ----- - -This has changed to: - -[source, csharp] ----- -var putJobResponse = client.MachineLearning.PutJob("id", c => c - .Description("Lab 1 - Simple example") - .ResultsIndexName("server-metrics") - .AnalysisConfig(a => a - .BucketSpan("30m") - .Latency("0s") - .Detectors(d => d.Sum(c => c.FieldName(r => r.Total))) - ) - .DataDescription(d => d.TimeField(r => r.Timestamp)); -); ----- - -Notice the `client.MachineLearning.PutJob` method call in 7.0, as opposed to `client.PutJob` in 6.x. - -We believe this grouping of functionality leads to a better discoverability experience -when writing your code, and more readable code when reviewing somebody else's. - -[float] -=== The Upgrade Assistant - -To assist developers in migrating from 6.x, we have published the -{nuget}/NEST.7xUpgradeAssistant/[Nest.7xUpgradeAssistant] package. -This package uses extension methods to reroute the method -calls on the client object root to the sub-property calls. - -When included in the project and the `using Nest.ElasticClientExtensions;` statement is -added the calls will be redirected. The result is that your project still compiles, -albeit that a compiler Obsolete warning is issued instead. - -This package is to assist developers migrating from 6.x to 7.0 and is limited in scope -to this purpose. It is recommended that you observe the compiler warnings and adjust your code as indicated. - -[float] -=== Response Interfaces removed - -Most API methods now return classes and not interfaces, for example, the client method -`client.Cat.Help` now returns a `CatResponse` as opposed to an interface named `ICatResponse`. - -In instances where methods can benefit from returning an interface, these have been left intact, for example, `ISearchResponse`. - -[float] -==== Why make the change? - -Firstly, this significantly reduces the number of types in -the library, reducing the overall download size, improving assembly load times and -eventually the execution. Secondly, it removes the need for us to manage the conversion -of a `Task` to `Task`, a somewhat awkward part of the request pipeline. - -The downside is that it does make it somewhat more difficult to create mocks / stubs of responses in the client. - -After lengthy discussion we decided that users can achieve a similar result using a JSON string -and the `InMemoryConnection`, a technique we use extensively in the Tests.Reproduce project. -An example can be {github}/blob/7.x/src/Tests/Tests.Reproduce/GithubIssue3813.cs[found in the Tests.Reproduce project]. - -Another alternative would be to introduce an intermediate layer in your application, and conceal -the client calls and objects within that layer so they can be mocked. - -[float] -=== `Response.IsValid` semantics - -`IApiCallDetails.Success` and `ResponseBase.IsValid` have been simplified, making it easier to inspect -if a request to Elasticsearch was indeed successful or not. - -[float] -==== Low Level Client - -If the status code from Elasticsearch is `2xx` then `.Success` will be `true`. In instances where a `404` -status code is received, for example if a `GET` request results in a missing document, then `.Success` -will be `false`. This is also the case for `HEAD` requests that result in a `404`. - -This is controlled via `IConnectionConfiguration.StatusCodeToResponseSuccess`, which currently has no public setter. - -[float] -==== High Level Client - -The NEST high level client overrides `StatusCodeToResponseSuccess`, whereby `404` status codes now sets `.Success` as `true`. - -The reasoning here is that because NEST is in full control of url and path building the only instances -where a `404` is received is in the case of a missing document, never from a missing endpoint. -However, in the case of a `404` the `ResponseBase.IsValid` property will be `false`. - -It has the nice side effect that if you set `.ThrowExceptions()` and perform an action on an entity -that does not exist it won't throw as `.ThrowExceptions()` only inspects `.Success` on `ApiCallDetails`. - -[float] -=== Public API changes - -[discrete] -==== `Nest.AcknowledgedResponseBase` - -[horizontal] -`Acknowledged` property getter:: -changed to non-virtual. -`IsValid` property:: added - -[discrete] -==== `Nest.AcknowledgeWatchDescriptor` - -[horizontal] -`AcknowledgeWatchDescriptor()` method:: added -`AcknowledgeWatchDescriptor(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`AcknowledgeWatchDescriptor(Id, Ids)` method:: added -`ActionId(ActionIds)` method:: deleted -`ActionId(Ids)` method:: added -`MasterTimeout(Time)` method:: deleted - -[discrete] -==== `Nest.AcknowledgeWatchRequest` - -[horizontal] -`AcknowledgeWatchRequest()` method:: added -`AcknowledgeWatchRequest(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`AcknowledgeWatchRequest(Id, ActionIds)` method:: deleted -`AcknowledgeWatchRequest(Id, Ids)` method:: added -`MasterTimeout` property:: deleted - -[discrete] -==== `Nest.AcknowledgeWatchResponse` - -[horizontal] -`Status` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ActionIds` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ActionsDescriptor` - -[horizontal] -`HipChat(String, Func)` method:: deleted - - - -[discrete] -==== `Nest.ActivateWatchDescriptor` - -[horizontal] -`ActivateWatchDescriptor()` method:: added -`ActivateWatchDescriptor(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`MasterTimeout(Time)` method:: deleted - -[discrete] -==== `Nest.ActivateWatchRequest` - -[horizontal] -`ActivateWatchRequest()` method:: added -`ActivateWatchRequest(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`MasterTimeout` property:: deleted - -[discrete] -==== `Nest.ActivateWatchResponse` - -[horizontal] -`Status` property getter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.AggregateDictionary` - -[horizontal] -`IpRange(String)` method:: -Member type changed from `MultiBucketAggregate` to `MultiBucketAggregate`. -`SignificantTerms(String)` method:: -Member type changed from `SignificantTermsAggregate` to `SignificantTermsAggregate`. -`SignificantTerms(String)` method:: added -`SignificantText(String)` method:: -Member type changed from `SignificantTermsAggregate` to `SignificantTermsAggregate`. -`SignificantText(String)` method:: added - - - - - - - - - - - -[discrete] -==== `Nest.AliasExistsDescriptor` - -[horizontal] -`AliasExistsDescriptor()` method:: -Member is less visible. -`AliasExistsDescriptor(Indices, Names)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`Name(Names)` method:: deleted - -[discrete] -==== `Nest.AliasExistsRequest` - -[horizontal] -`AliasExistsRequest()` method:: added - - - - - - -[discrete] -==== `Nest.AllocationId` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.AnalysisConfigDescriptor` - -[horizontal] -`CategorizationFieldName(Expression>)` method:: deleted -`CategorizationFieldName(Expression>)` method:: added -`SummaryCountFieldName(Expression>)` method:: deleted -`SummaryCountFieldName(Expression>)` method:: added - - -[discrete] -==== `Nest.AnalyzeCharFilters` - -[horizontal] -`Add(String)` method:: added - -[discrete] -==== `Nest.AnalyzeDescriptor` - -[horizontal] -`AnalyzeDescriptor(IndexName)` method:: added -`Field(Expression>)` method:: added -`Format(Nullable)` method:: deleted -`PreferLocal(Nullable)` method:: deleted - - -[discrete] -==== `Nest.AnalyzeRequest` - -[horizontal] -`Format` property:: deleted -`PreferLocal` property:: deleted - -[discrete] -==== `Nest.AnalyzeResponse` - -[horizontal] -`Detail` property getter:: -changed to non-virtual. -`Tokens` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.AnalyzeTokenFiltersDescriptor` - -[horizontal] -`Standard(Func)` method:: deleted - - - - - -[discrete] -==== `Nest.ApiKeys` - -[horizontal] -`Creation` property setter:: -Member is more visible. -`Expiration` property setter:: -Member is more visible. -`Id` property setter:: -Member is more visible. -`Invalidated` property setter:: -Member is more visible. -`Name` property setter:: -Member is more visible. -`Realm` property setter:: -Member is more visible. -`Username` property setter:: -Member is more visible. - -[discrete] -==== `Nest.AppendProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.ApplicationPrivilegesDescriptor` - -[horizontal] -`Add(Func, IApplicationPrivileges>)` method:: deleted -`Application(String)` method:: added -`Privileges(IEnumerable)` method:: added -`Privileges(String[])` method:: added -`Resources(IEnumerable)` method:: added -`Resources(String[])` method:: added - -[discrete] -==== `Nest.ApplicationPrivilegesDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ApplicationPrivilegesListDescriptor` - -[horizontal] -type:: added - - - - -[discrete] -==== `Nest.AttachmentProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`IndexedCharactersField(Expression>)` method:: deleted -`IndexedCharactersField(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - -[discrete] -==== `Nest.AuthenticateResponse` - -[horizontal] -`AuthenticationRealm` property getter:: -changed to non-virtual. -`Email` property getter:: -changed to non-virtual. -`FullName` property getter:: -changed to non-virtual. -`LookupRealm` property getter:: -changed to non-virtual. -`Metadata` property getter:: -changed to non-virtual. -`Roles` property getter:: -changed to non-virtual. -`Username` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.AutoDateHistogramAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.BlockingSubscribeExtensions` - -[horizontal] -`Wait(BulkAllObservable, TimeSpan, Action)` method:: added -`Wait(BulkAllObservable, TimeSpan, Action)` method:: deleted -`Wait(IObservable, TimeSpan, Action)` method:: added -`Wait(IObservable, TimeSpan, Action)` method:: deleted - -[discrete] -==== `Nest.BlockState` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.BucketAggregate` - -[horizontal] -`Meta` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.BucketAggregateBase` - -[horizontal] -`Meta` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.BucketAggregationDescriptorBase` - -[horizontal] -`Assign(Action)` method:: deleted - - -[discrete] -==== `Nest.BulkAliasDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.BulkAllDescriptor` - -[horizontal] -`DroppedDocumentCallback(Action)` method:: added -`DroppedDocumentCallback(Action)` method:: deleted -`Refresh(Nullable)` method:: deleted -`RetryDocumentPredicate(Func)` method:: added -`RetryDocumentPredicate(Func)` method:: deleted -`Type()` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.BulkAllObservable` - -[horizontal] -`Subscribe(IObserver)` method:: added -`Subscribe(IObserver)` method:: deleted -`IsDisposed` property:: deleted - -[discrete] -==== `Nest.BulkAllObserver` - -[horizontal] -`BulkAllObserver(Action, Action, Action)` method:: added -`BulkAllObserver(Action, Action, Action)` method:: deleted - -[discrete] -==== `Nest.BulkAllRequest` - -[horizontal] -`Refresh` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.BulkAllResponse` - -[horizontal] -`IsValid` property:: deleted -`Items` property getter:: -changed to non-virtual. -`Page` property getter:: -changed to non-virtual. -`Retries` property getter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.BulkDeleteDescriptor` - -[horizontal] -`IfPrimaryTerm(Nullable)` method:: added -`IfSequenceNumber(Nullable)` method:: added - -[discrete] -==== `Nest.BulkDeleteOperation` - -[horizontal] -`IfPrimaryTerm` property:: added -`IfSequenceNumber` property:: added - - -[discrete] -==== `Nest.BulkDescriptor` - -[horizontal] -`BulkDescriptor(IndexName)` method:: added -`Fields(Fields)` method:: deleted -`Fields(Expression>[])` method:: deleted -`SourceEnabled(Nullable)` method:: -Parameter name changed from `sourceEnabled` to `sourceenabled`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`TypeQueryString(String)` method:: added -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.BulkError` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.BulkIndexByScrollFailure` - -[horizontal] - -[discrete] -==== `Nest.BulkIndexDescriptor` - -[horizontal] -`IfPrimaryTerm(Nullable)` method:: added -`IfSequenceNumber(Nullable)` method:: added - -[discrete] -==== `Nest.BulkIndexFailureCause` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.BulkIndexOperation` - -[horizontal] -`IfPrimaryTerm` property:: added -`IfSequenceNumber` property:: added - - -[discrete] -==== `Nest.BulkOperationBase` - -[horizontal] -`Parent` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.BulkOperationDescriptorBase` - -[horizontal] -`Parent(Id)` method:: deleted -`Type()` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.BulkOperationsCollection` - -[horizontal] -type:: added - -[discrete] -==== `Nest.BulkRequest` - -[horizontal] -`BulkRequest(IndexName, TypeName)` method:: deleted -`Fields` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added -`TypeQueryString` property:: added - -[discrete] -==== `Nest.BulkResponse` - -[horizontal] -`Errors` property getter:: -changed to non-virtual. -`Items` property getter:: -changed to non-virtual. -`ItemsWithErrors` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.BulkResponseItemBase` - -[horizontal] -`Error` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Index` property getter:: -changed to non-virtual. -`IsValid` property getter:: -changed to non-virtual. -`PrimaryTerm` property getter:: -changed to non-virtual. -`Result` property getter:: -changed to non-virtual. -`SequenceNumber` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. -`Status` property getter:: -changed to non-virtual. -`Type` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - - - - - -[discrete] -==== `Nest.BytesProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - -[discrete] -==== `Nest.BytesValueConverter` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.CancelTasksDescriptor` - -[horizontal] -`CancelTasksDescriptor(TaskId)` method:: added -`ParentNode(String)` method:: deleted -`ParentTaskId(String)` method:: -Parameter name changed from `parentTaskId` to `parenttaskid`. - -[discrete] -==== `Nest.CancelTasksRequest` - -[horizontal] -`CancelTasksRequest(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. -`ParentNode` property:: deleted - -[discrete] -==== `Nest.CancelTasksResponse` - -[horizontal] -`NodeFailures` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CatAliasesDescriptor` - -[horizontal] -`CatAliasesDescriptor(Names)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatAllocationDescriptor` - -[horizontal] -`CatAllocationDescriptor(NodeIds)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatAllocationRequest` - -[horizontal] -`CatAllocationRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. - -[discrete] -==== `Nest.CatCountDescriptor` - -[horizontal] -`CatCountDescriptor(Indices)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - - -[discrete] -==== `Nest.CategoryId` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.CatFielddataDescriptor` - -[horizontal] -`CatFielddataDescriptor(Fields)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatHealthDescriptor` - -[horizontal] -`IncludeTimestamp(Nullable)` method:: -Parameter name changed from `includeTimestamp` to `includetimestamp`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatHelpDescriptor` - -[horizontal] -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatIndicesDescriptor` - -[horizontal] -`CatIndicesDescriptor(Indices)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - -[discrete] -==== `Nest.CatIndicesRecord` - -[horizontal] -`UUID` property:: added - -[discrete] -==== `Nest.CatMasterDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatNodeAttributesDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatNodesDescriptor` - -[horizontal] -`FullId(Nullable)` method:: -Parameter name changed from `fullId` to `fullid`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatPendingTasksDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatPluginsDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatRecoveryDescriptor` - -[horizontal] -`CatRecoveryDescriptor(Indices)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatRepositoriesDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatResponse` - -[horizontal] -`Records` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CatSegmentsDescriptor` - -[horizontal] -`CatSegmentsDescriptor(Indices)` method:: added -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatShardsDescriptor` - -[horizontal] -`CatShardsDescriptor(Indices)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatSnapshotsDescriptor` - -[horizontal] -`CatSnapshotsDescriptor(Names)` method:: added -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - -[discrete] -==== `Nest.CatSnapshotsRecord` - -[horizontal] -`SuccesfulShards` property:: deleted -`SuccessfulShards` property:: added - -[discrete] -==== `Nest.CatTasksDescriptor` - -[horizontal] -`NodeId(String[])` method:: -Parameter name changed from `nodeId` to `nodeid`. -`ParentNode(String)` method:: deleted -`ParentTask(Nullable)` method:: -Parameter name changed from `parentTask` to `parenttask`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - - -[discrete] -==== `Nest.CatTasksRequest` - -[horizontal] -`ParentNode` property:: deleted - -[discrete] -==== `Nest.CatTemplatesDescriptor` - -[horizontal] -`CatTemplatesDescriptor(Name)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - -[discrete] -==== `Nest.CatTemplatesRecord` - -[horizontal] - -[discrete] -==== `Nest.CatThreadPoolDescriptor` - -[horizontal] -`CatThreadPoolDescriptor(Names)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`SortByColumns(String[])` method:: -Parameter name changed from `sortByColumns` to `sortbycolumns`. - -[discrete] -==== `Nest.CatThreadPoolRecord` - -[horizontal] -`Core` property:: added -`Minimum` property:: deleted -`PoolSize` property:: added - -[discrete] -==== `Nest.CatThreadPoolRequest` - -[horizontal] -`CatThreadPoolRequest(Names)` method:: -Parameter name changed from `thread_pool_patterns` to `threadPoolPatterns`. - - - -[discrete] -==== `Nest.CcrStatsResponse` - -[horizontal] -`AutoFollowStats` property getter:: -changed to non-virtual. -`FollowStats` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ChangePasswordDescriptor` - -[horizontal] -`ChangePasswordDescriptor(Name)` method:: added - - - - - -[discrete] -==== `Nest.CircleGeoShape` - -[horizontal] -`CircleGeoShape()` method:: -Member is less visible. -`CircleGeoShape(GeoCoordinate)` method:: deleted -`CircleGeoShape(GeoCoordinate, String)` method:: added - -[discrete] -==== `Nest.ClassicSimilarity` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ClassicSimilarityDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ClearCacheDescriptor` - -[horizontal] -`ClearCacheDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`Recycler(Nullable)` method:: deleted -`RequestCache(Nullable)` method:: deleted - -[discrete] -==== `Nest.ClearCachedRealmsDescriptor` - -[horizontal] -`ClearCachedRealmsDescriptor()` method:: added - -[discrete] -==== `Nest.ClearCachedRealmsRequest` - -[horizontal] -`ClearCachedRealmsRequest()` method:: added - -[discrete] -==== `Nest.ClearCachedRealmsResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ClearCachedRolesDescriptor` - -[horizontal] -`ClearCachedRolesDescriptor()` method:: added - -[discrete] -==== `Nest.ClearCachedRolesRequest` - -[horizontal] -`ClearCachedRolesRequest()` method:: added - -[discrete] -==== `Nest.ClearCachedRolesResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ClearCacheRequest` - -[horizontal] -`Recycler` property:: deleted -`RequestCache` property:: deleted - - - -[discrete] -==== `Nest.ClearSqlCursorResponse` - -[horizontal] -`Succeeded` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CloseIndexDescriptor` - -[horizontal] -`CloseIndexDescriptor()` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.CloseIndexRequest` - -[horizontal] -`CloseIndexRequest()` method:: added - -[discrete] -==== `Nest.CloseJobDescriptor` - -[horizontal] -`CloseJobDescriptor()` method:: added -`CloseJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`AllowNoJobs(Nullable)` method:: -Parameter name changed from `allowNoJobs` to `allownojobs`. - -[discrete] -==== `Nest.CloseJobRequest` - -[horizontal] -`CloseJobRequest()` method:: added -`CloseJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.CloseJobResponse` - -[horizontal] -`Closed` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ClrTypeMapping` - -[horizontal] -`TypeName` property:: deleted - -[discrete] -==== `Nest.ClrTypeMappingDescriptor` - -[horizontal] -`TypeName(String)` method:: deleted - -[discrete] -==== `Nest.ClrTypeMappingDescriptor` - -[horizontal] -`TypeName(String)` method:: deleted - -[discrete] -==== `Nest.ClusterAllocationExplainDescriptor` - -[horizontal] -`IncludeDiskInfo(Nullable)` method:: -Parameter name changed from `includeDiskInfo` to `includediskinfo`. -`IncludeYesDecisions(Nullable)` method:: -Parameter name changed from `includeYesDecisions` to `includeyesdecisions`. - -[discrete] -==== `Nest.ClusterAllocationExplainResponse` - -[horizontal] -`AllocateExplanation` property getter:: -changed to non-virtual. -`AllocationDelay` property getter:: -changed to non-virtual. -`AllocationDelayInMilliseconds` property getter:: -changed to non-virtual. -`CanAllocate` property getter:: -changed to non-virtual. -`CanMoveToOtherNode` property getter:: -changed to non-virtual. -`CanRebalanceCluster` property getter:: -changed to non-virtual. -`CanRebalanceClusterDecisions` property getter:: -changed to non-virtual. -`CanRebalanceToOtherNode` property getter:: -changed to non-virtual. -`CanRemainDecisions` property getter:: -changed to non-virtual. -`CanRemainOnCurrentNode` property getter:: -changed to non-virtual. -`ConfiguredDelay` property getter:: -changed to non-virtual. -`ConfiguredDelayInMilliseconds` property getter:: -changed to non-virtual. -`CurrentNode` property getter:: -changed to non-virtual. -`CurrentState` property getter:: -changed to non-virtual. -`Index` property getter:: -changed to non-virtual. -`MoveExplanation` property getter:: -changed to non-virtual. -`NodeAllocationDecisions` property getter:: -changed to non-virtual. -`Primary` property getter:: -changed to non-virtual. -`RebalanceExplanation` property getter:: -changed to non-virtual. -`RemainingDelay` property getter:: -changed to non-virtual. -`RemainingDelayInMilliseconds` property getter:: -changed to non-virtual. -`Shard` property getter:: -changed to non-virtual. -`UnassignedInformation` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ClusterFileSystem` - -[horizontal] -`Available` property:: deleted -`Free` property:: deleted -`Total` property:: deleted - -[discrete] -==== `Nest.ClusterGetSettingsDescriptor` - -[horizontal] -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IncludeDefaults(Nullable)` method:: -Parameter name changed from `includeDefaults` to `includedefaults`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.ClusterGetSettingsResponse` - -[horizontal] -`Persistent` property getter:: -changed to non-virtual. -`Transient` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ClusterHealthDescriptor` - -[horizontal] -`ClusterHealthDescriptor(Indices)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. -`WaitForEvents(Nullable)` method:: -Parameter name changed from `waitForEvents` to `waitforevents`. -`WaitForNodes(String)` method:: -Parameter name changed from `waitForNodes` to `waitfornodes`. -`WaitForNoInitializingShards(Nullable)` method:: -Parameter name changed from `waitForNoInitializingShards` to `waitfornoinitializingshards`. -`WaitForNoRelocatingShards(Nullable)` method:: -Parameter name changed from `waitForNoRelocatingShards` to `waitfornorelocatingshards`. -`WaitForStatus(Nullable)` method:: -Parameter name changed from `waitForStatus` to `waitforstatus`. - -[discrete] -==== `Nest.ClusterHealthResponse` - -[horizontal] -`ActivePrimaryShards` property getter:: -changed to non-virtual. -`ActiveShards` property getter:: -changed to non-virtual. -`ActiveShardsPercentAsNumber` property getter:: -changed to non-virtual. -`ClusterName` property getter:: -changed to non-virtual. -`DelayedUnassignedShards` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`InitializingShards` property getter:: -changed to non-virtual. -`NumberOfDataNodes` property getter:: -changed to non-virtual. -`NumberOfInFlightFetch` property getter:: -changed to non-virtual. -`NumberOfNodes` property getter:: -changed to non-virtual. -`NumberOfPendingTasks` property getter:: -changed to non-virtual. -`RelocatingShards` property getter:: -changed to non-virtual. -`Status` property getter:: -changed to non-virtual. -`TaskMaxWaitTimeInQueueInMilliseconds` property getter:: -changed to non-virtual. -`TimedOut` property getter:: -changed to non-virtual. -`UnassignedShards` property getter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.ClusterJvm` - -[horizontal] -`MaxUptime` property:: deleted - -[discrete] -==== `Nest.ClusterJvmMemory` - -[horizontal] -`HeapMax` property:: deleted -`HeapUsed` property:: deleted - -[discrete] -==== `Nest.ClusterJvmVersion` - -[horizontal] -`BundledJdk` property:: added -`UsingBundledJdk` property:: added - - - -[discrete] -==== `Nest.ClusterNodesStats` - -[horizontal] -`DiscoveryTypes` property:: added - - - - -[discrete] -==== `Nest.ClusterPendingTasksDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.ClusterPendingTasksResponse` - -[horizontal] -`Tasks` property getter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.ClusterPutSettingsDescriptor` - -[horizontal] -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.ClusterPutSettingsResponse` - -[horizontal] -`Acknowledged` property getter:: -changed to non-virtual. -`Persistent` property getter:: -changed to non-virtual. -`Transient` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ClusterRerouteDescriptor` - -[horizontal] -`DryRun(Nullable)` method:: -Parameter name changed from `dryRun` to `dryrun`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`RetryFailed(Nullable)` method:: -Parameter name changed from `retryFailed` to `retryfailed`. - - - -[discrete] -==== `Nest.ClusterRerouteResponse` - -[horizontal] -`Explanations` property getter:: -changed to non-virtual. -`State` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ClusterRerouteState` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ClusterStateDescriptor` - -[horizontal] -`ClusterStateDescriptor(Metrics)` method:: added -`ClusterStateDescriptor(Metrics, Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`Metric(ClusterStateMetric)` method:: deleted -`Metric(Metrics)` method:: added -`WaitForMetadataVersion(Nullable)` method:: -Parameter name changed from `waitForMetadataVersion` to `waitformetadataversion`. -`WaitForTimeout(Time)` method:: -Parameter name changed from `waitForTimeout` to `waitfortimeout`. - -[discrete] -==== `Nest.ClusterStateRequest` - -[horizontal] -`ClusterStateRequest(ClusterStateMetric)` method:: deleted -`ClusterStateRequest(ClusterStateMetric, Indices)` method:: deleted -`ClusterStateRequest(Metrics)` method:: added -`ClusterStateRequest(Metrics, Indices)` method:: added - -[discrete] -==== `Nest.ClusterStateResponse` - -[horizontal] -`Blocks` property:: deleted -`ClusterName` property getter:: -changed to non-virtual. -`ClusterUUID` property getter:: -changed to non-virtual. -`MasterNode` property getter:: -changed to non-virtual. -`Metadata` property:: deleted -`Nodes` property:: deleted -`RoutingNodes` property:: deleted -`RoutingTable` property:: deleted -`State` property:: added -`StateUUID` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ClusterStatsDescriptor` - -[horizontal] -`ClusterStatsDescriptor(NodeIds)` method:: added -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. - -[discrete] -==== `Nest.ClusterStatsRequest` - -[horizontal] -`ClusterStatsRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. - -[discrete] -==== `Nest.ClusterStatsResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`ClusterUUID` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. -`Status` property getter:: -changed to non-virtual. -`Timestamp` property getter:: -changed to non-virtual. - - - - - - -[discrete] -==== `Nest.CompletionStats` - -[horizontal] -`Size` property:: deleted - -[discrete] -==== `Nest.CompletionSuggester` - -[horizontal] - -[discrete] -==== `Nest.CompletionSuggesterDescriptor` - -[horizontal] -`Fuzzy(Func, IFuzzySuggester>)` method:: deleted -`Fuzzy(Func, ISuggestFuzziness>)` method:: added - -[discrete] -==== `Nest.CompositeAggregation` - -[horizontal] - -[discrete] -==== `Nest.CompositeAggregationDescriptor` - -[horizontal] -`After(CompositeKey)` method:: added -`After(Object)` method:: deleted - -[discrete] -==== `Nest.CompositeAggregationSourceBase` - -[horizontal] -`Missing` property:: deleted - -[discrete] -==== `Nest.CompositeAggregationSourceDescriptorBase` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`Missing(Object)` method:: deleted - - - - - - - -[discrete] -==== `Nest.ConnectionSettingsBase` - -[horizontal] -`DefaultTypeName(String)` method:: deleted -`DefaultTypeNameInferrer(Func)` method:: deleted -`HttpStatusCodeClassifier(HttpMethod, Int32)` method:: added -`InferMappingFor(Func, IClrTypeMapping>)` method:: deleted - -[discrete] -==== `Nest.ConstantScoreQuery` - -[horizontal] -`Lang` property:: deleted -`Params` property:: deleted -`Script` property:: deleted - - - -[discrete] -==== `Nest.ConvertProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - -[discrete] -==== `Nest.CorePropertyBase` - -[horizontal] - -[discrete] -==== `Nest.CorePropertyDescriptorBase` - -[horizontal] -`Similarity(Nullable)` method:: deleted - -[discrete] -==== `Nest.CountDescriptor` - -[horizontal] -`CountDescriptor(Indices)` method:: added -`AllIndices()` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`AllTypes()` method:: deleted -`Analyzer(String)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`AnalyzeWildcard(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`DefaultOperator(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Df(String)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`ExpandWildcards(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`IgnoreThrottled(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Index()` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Index(Indices)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Lenient(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`MinScore(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Preference(String)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryOnQueryString(String)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Routing(Routing)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`TerminateAfter(Nullable)` method:: -Member type changed from `CountDescriptor` to `CountDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted - -[discrete] -==== `Nest.CountDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.CountRequest` - -[horizontal] -`CountRequest(Indices, Types)` method:: deleted - -[discrete] -==== `Nest.CountRequest` - -[horizontal] -`CountRequest(Indices, Types)` method:: deleted -`AllowNoIndices` property:: deleted -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`ExpandWildcards` property:: deleted -`HttpMethod` property:: deleted -`IgnoreThrottled` property:: deleted -`IgnoreUnavailable` property:: deleted -`Lenient` property:: deleted -`MinScore` property:: deleted -`Preference` property:: deleted -`Query` property:: deleted -`QueryOnQueryString` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`TerminateAfter` property:: deleted -`TypedSelf` property:: added - -[discrete] -==== `Nest.CountResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.CreateApiKeyResponse` - -[horizontal] -`ApiKey` property getter:: -changed to non-virtual. -`Expiration` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Name` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CreateAutoFollowPatternDescriptor` - -[horizontal] -`CreateAutoFollowPatternDescriptor()` method:: added - -[discrete] -==== `Nest.CreateAutoFollowPatternRequest` - -[horizontal] -`CreateAutoFollowPatternRequest()` method:: added - -[discrete] -==== `Nest.CreateDescriptor` - -[horizontal] -`CreateDescriptor()` method:: added -`CreateDescriptor(DocumentPath)` method:: deleted -`CreateDescriptor(Id)` method:: added -`CreateDescriptor(IndexName, Id)` method:: added -`CreateDescriptor(IndexName, TypeName, Id)` method:: deleted -`CreateDescriptor(TDocument, IndexName, Id)` method:: added -`Parent(String)` method:: deleted -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`VersionType(Nullable)` method:: -Parameter name changed from `versionType` to `versiontype`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.CreateFollowIndexDescriptor` - -[horizontal] -`CreateFollowIndexDescriptor()` method:: added -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.CreateFollowIndexRequest` - -[horizontal] -`CreateFollowIndexRequest()` method:: added - -[discrete] -==== `Nest.CreateFollowIndexResponse` - -[horizontal] -`FollowIndexCreated` property getter:: -changed to non-virtual. -`FollowIndexShardsAcked` property getter:: -changed to non-virtual. -`IndexFollowingStarted` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CreateIndexDescriptor` - -[horizontal] -`CreateIndexDescriptor()` method:: added -`IncludeTypeName(Nullable)` method:: -Parameter name changed from `includeTypeName` to `includetypename`. -`Map(Func, ITypeMapping>)` method:: added -`Map(Func, ITypeMapping>)` method:: added -`Mappings(Func>)` method:: deleted -`Mappings(Func)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`UpdateAllTypes(Nullable)` method:: deleted -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.CreateIndexRequest` - -[horizontal] -`CreateIndexRequest()` method:: -Member is more visible. -`UpdateAllTypes` property:: deleted - -[discrete] -==== `Nest.CreateIndexResponse` - -[horizontal] -`Index` property:: added -`ShardsAcknowledged` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.CreateRepositoryDescriptor` - -[horizontal] -`CreateRepositoryDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.CreateRepositoryRequest` - -[horizontal] -`CreateRepositoryRequest()` method:: added - -[discrete] -==== `Nest.CreateRequest` - -[horizontal] -`CreateRequest()` method:: added -`CreateRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`CreateRequest(Id)` method:: added -`CreateRequest(IndexName, Id)` method:: added -`CreateRequest(IndexName, TypeName, Id)` method:: deleted -`CreateRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted - -[discrete] -==== `Nest.CreateResponse` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`IsValid` property:: added -`PrimaryTerm` property:: deleted -`Result` property:: deleted -`SequenceNumber` property:: deleted -`Shards` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.CreateRollupJobDescriptor` - -[horizontal] -`CreateRollupJobDescriptor()` method:: added -`Cron(String)` method:: -Member type changed from `CreateRollupJobDescriptor` to `CreateRollupJobDescriptor`. -`Groups(Func, IRollupGroupings>)` method:: deleted -`Groups(Func, IRollupGroupings>)` method:: added -`IndexPattern(String)` method:: -Member type changed from `CreateRollupJobDescriptor` to `CreateRollupJobDescriptor`. -`Metrics(Func, IPromise>>)` method:: deleted -`Metrics(Func, IPromise>>)` method:: added -`PageSize(Nullable)` method:: -Member type changed from `CreateRollupJobDescriptor` to `CreateRollupJobDescriptor`. -`RollupIndex(IndexName)` method:: -Member type changed from `CreateRollupJobDescriptor` to `CreateRollupJobDescriptor`. - -[discrete] -==== `Nest.CreateRollupJobRequest` - -[horizontal] -`CreateRollupJobRequest()` method:: added - - -[discrete] -==== `Nest.CurrentNode` - -[horizontal] - - - -[discrete] -==== `Nest.DataDescriptionDescriptor` - -[horizontal] -`TimeField(Expression>)` method:: deleted -`TimeField(Expression>)` method:: added - -[discrete] -==== `Nest.DatafeedConfig` - -[horizontal] -`Types` property:: deleted - - - - -[discrete] -==== `Nest.DateHistogramAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.DateHistogramCompositeAggregationSource` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - -[discrete] -==== `Nest.DateHistogramCompositeAggregationSourceDescriptor` - -[horizontal] -`Timezone(String)` method:: deleted -`TimeZone(String)` method:: added - -[discrete] -==== `Nest.DateHistogramRollupGroupingDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.DateIndexNameProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - - -[discrete] -==== `Nest.DateProcessor` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - -[discrete] -==== `Nest.DateProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added -`Timezone(String)` method:: deleted -`TimeZone(String)` method:: added - - -[discrete] -==== `Nest.DateRangeAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - -[discrete] -==== `Nest.DeactivateWatchDescriptor` - -[horizontal] -`DeactivateWatchDescriptor()` method:: added -`DeactivateWatchDescriptor(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`MasterTimeout(Time)` method:: deleted - -[discrete] -==== `Nest.DeactivateWatchRequest` - -[horizontal] -`DeactivateWatchRequest()` method:: added -`DeactivateWatchRequest(Id)` method:: -Parameter name changed from `watch_id` to `watchId`. -`MasterTimeout` property:: deleted - -[discrete] -==== `Nest.DeactivateWatchResponse` - -[horizontal] -`Status` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DecayFunctionDescriptorBase` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - -[discrete] -==== `Nest.DeleteAliasDescriptor` - -[horizontal] -`DeleteAliasDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteAliasRequest` - -[horizontal] -`DeleteAliasRequest()` method:: added - -[discrete] -==== `Nest.DeleteAutoFollowPatternDescriptor` - -[horizontal] -`DeleteAutoFollowPatternDescriptor()` method:: added - -[discrete] -==== `Nest.DeleteAutoFollowPatternRequest` - -[horizontal] -`DeleteAutoFollowPatternRequest()` method:: added - -[discrete] -==== `Nest.DeleteByQueryDescriptor` - -[horizontal] -`DeleteByQueryDescriptor()` method:: added -`AllIndices()` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`AllTypes()` method:: deleted -`Analyzer(String)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`AnalyzeWildcard(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Conflicts(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`DefaultOperator(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Df(String)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`ExpandWildcards(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`From(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Index()` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Index(Indices)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Lenient(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`MatchAll()` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Preference(String)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryOnQueryString(String)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`RequestCache(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`RequestsPerSecond(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Routing(Routing)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Scroll(Time)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`ScrollSize(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`SearchTimeout(Time)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`SearchType(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Size(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Slice(Func, ISlicedScroll>)` method:: deleted -`Slice(Func, ISlicedScroll>)` method:: added -`Slices(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Sort(String[])` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Stats(String[])` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`TerminateAfter(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Timeout(Time)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`WaitForActiveShards(String)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. -`WaitForCompletion(Nullable)` method:: -Member type changed from `DeleteByQueryDescriptor` to `DeleteByQueryDescriptor`. - -[discrete] -==== `Nest.DeleteByQueryRequest` - -[horizontal] -`DeleteByQueryRequest()` method:: added -`DeleteByQueryRequest(Indices, Types)` method:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.DeleteByQueryRequest` - -[horizontal] -`DeleteByQueryRequest(Indices, Types)` method:: deleted -`AllowNoIndices` property:: deleted -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`Conflicts` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`ExpandWildcards` property:: deleted -`From` property:: deleted -`IgnoreUnavailable` property:: deleted -`Lenient` property:: deleted -`Preference` property:: deleted -`Query` property:: deleted -`QueryOnQueryString` property:: deleted -`Refresh` property:: deleted -`RequestCache` property:: deleted -`RequestsPerSecond` property:: deleted -`Routing` property:: deleted -`Scroll` property:: deleted -`ScrollSize` property:: deleted -`SearchTimeout` property:: deleted -`SearchType` property:: deleted -`Self` property:: deleted -`Size` property:: deleted -`Slice` property:: deleted -`Slices` property:: deleted -`Sort` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`Stats` property:: deleted -`TerminateAfter` property:: deleted -`Timeout` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`WaitForActiveShards` property:: deleted -`WaitForCompletion` property:: deleted - -[discrete] -==== `Nest.DeleteByQueryResponse` - -[horizontal] -`Batches` property getter:: -changed to non-virtual. -`Deleted` property getter:: -changed to non-virtual. -`Failures` property getter:: -changed to non-virtual. -`Noops` property getter:: -changed to non-virtual. -`RequestsPerSecond` property getter:: -changed to non-virtual. -`Retries` property getter:: -changed to non-virtual. -`SliceId` property getter:: -changed to non-virtual. -`Task` property getter:: -changed to non-virtual. -`ThrottledMilliseconds` property getter:: -changed to non-virtual. -`ThrottledUntilMilliseconds` property getter:: -changed to non-virtual. -`TimedOut` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. -`Total` property getter:: -changed to non-virtual. -`VersionConflicts` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteByQueryRethrottleDescriptor` - -[horizontal] -`DeleteByQueryRethrottleDescriptor()` method:: added -`DeleteByQueryRethrottleDescriptor(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. -`RequestsPerSecond(Nullable)` method:: -Parameter name changed from `requestsPerSecond` to `requestspersecond`. - -[discrete] -==== `Nest.DeleteByQueryRethrottleRequest` - -[horizontal] -`DeleteByQueryRethrottleRequest()` method:: added -`DeleteByQueryRethrottleRequest(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. - -[discrete] -==== `Nest.DeleteCalendarDescriptor` - -[horizontal] -`DeleteCalendarDescriptor()` method:: added -`DeleteCalendarDescriptor(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteCalendarEventDescriptor` - -[horizontal] -`DeleteCalendarEventDescriptor()` method:: added -`DeleteCalendarEventDescriptor(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteCalendarEventRequest` - -[horizontal] -`DeleteCalendarEventRequest()` method:: added -`DeleteCalendarEventRequest(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteCalendarJobDescriptor` - -[horizontal] -`DeleteCalendarJobDescriptor()` method:: added -`DeleteCalendarJobDescriptor(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteCalendarJobRequest` - -[horizontal] -`DeleteCalendarJobRequest()` method:: added -`DeleteCalendarJobRequest(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteCalendarJobResponse` - -[horizontal] -`CalendarId` property getter:: -changed to non-virtual. -`Description` property getter:: -changed to non-virtual. -`JobIds` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteCalendarRequest` - -[horizontal] -`DeleteCalendarRequest()` method:: added -`DeleteCalendarRequest(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.DeleteDatafeedDescriptor` - -[horizontal] -`DeleteDatafeedDescriptor()` method:: added -`DeleteDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.DeleteDatafeedRequest` - -[horizontal] -`DeleteDatafeedRequest()` method:: added -`DeleteDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.DeleteDescriptor` - -[horizontal] -`DeleteDescriptor()` method:: added -`DeleteDescriptor(DocumentPath)` method:: deleted -`DeleteDescriptor(Id)` method:: added -`DeleteDescriptor(IndexName, Id)` method:: added -`DeleteDescriptor(IndexName, TypeName, Id)` method:: deleted -`DeleteDescriptor(TDocument, IndexName, Id)` method:: added -`IfPrimaryTerm(Nullable)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`IfSeqNo(Nullable)` method:: deleted -`IfSequenceNumber(Nullable)` method:: added -`Index()` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`Index(IndexName)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`Parent(String)` method:: deleted -`Refresh(Nullable)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`Routing(Routing)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`Timeout(Time)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. -`WaitForActiveShards(String)` method:: -Member type changed from `DeleteDescriptor` to `DeleteDescriptor`. - - -[discrete] -==== `Nest.DeleteExpiredDataResponse` - -[horizontal] -`Deleted` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteFilterDescriptor` - -[horizontal] -`DeleteFilterDescriptor()` method:: added -`DeleteFilterDescriptor(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.DeleteFilterRequest` - -[horizontal] -`DeleteFilterRequest()` method:: added -`DeleteFilterRequest(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.DeleteForecastDescriptor` - -[horizontal] -`DeleteForecastDescriptor()` method:: added -`DeleteForecastDescriptor(Id, ForecastIds)` method:: deleted -`DeleteForecastDescriptor(Id, Ids)` method:: added -`AllowNoForecasts(Nullable)` method:: -Parameter name changed from `allowNoForecasts` to `allownoforecasts`. - -[discrete] -==== `Nest.DeleteForecastRequest` - -[horizontal] -`DeleteForecastRequest()` method:: added -`DeleteForecastRequest(Id, ForecastIds)` method:: deleted -`DeleteForecastRequest(Id, Ids)` method:: added - -[discrete] -==== `Nest.DeleteIndexDescriptor` - -[horizontal] -`DeleteIndexDescriptor()` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteIndexRequest` - -[horizontal] -`DeleteIndexRequest()` method:: added - -[discrete] -==== `Nest.DeleteIndexTemplateDescriptor` - -[horizontal] -`DeleteIndexTemplateDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteIndexTemplateRequest` - -[horizontal] -`DeleteIndexTemplateRequest()` method:: added - -[discrete] -==== `Nest.DeleteJobDescriptor` - -[horizontal] -`DeleteJobDescriptor()` method:: added -`DeleteJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.DeleteJobRequest` - -[horizontal] -`DeleteJobRequest()` method:: added -`DeleteJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - - -[discrete] -==== `Nest.DeleteLifecycleDescriptor` - -[horizontal] -`DeleteLifecycleDescriptor()` method:: added -`DeleteLifecycleDescriptor(Id)` method:: added -`DeleteLifecycleDescriptor(PolicyId)` method:: deleted -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.DeleteLifecycleRequest` - -[horizontal] -`DeleteLifecycleRequest()` method:: added -`DeleteLifecycleRequest(Id)` method:: added -`DeleteLifecycleRequest(PolicyId)` method:: deleted -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.DeleteManyExtensions` - -[horizontal] -`DeleteMany(IElasticClient, IEnumerable, IndexName)` method:: added -`DeleteMany(IElasticClient, IEnumerable, IndexName, TypeName)` method:: deleted -`DeleteManyAsync(IElasticClient, IEnumerable, IndexName, TypeName, CancellationToken)` method:: deleted -`DeleteManyAsync(IElasticClient, IEnumerable, IndexName, CancellationToken)` method:: added - -[discrete] -==== `Nest.DeleteModelSnapshotDescriptor` - -[horizontal] -`DeleteModelSnapshotDescriptor()` method:: added -`DeleteModelSnapshotDescriptor(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.DeleteModelSnapshotRequest` - -[horizontal] -`DeleteModelSnapshotRequest()` method:: added -`DeleteModelSnapshotRequest(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.DeletePipelineDescriptor` - -[horizontal] -`DeletePipelineDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeletePipelineRequest` - -[horizontal] -`DeletePipelineRequest()` method:: added - -[discrete] -==== `Nest.DeletePrivilegesDescriptor` - -[horizontal] -`DeletePrivilegesDescriptor()` method:: added - -[discrete] -==== `Nest.DeletePrivilegesRequest` - -[horizontal] -`DeletePrivilegesRequest()` method:: added - -[discrete] -==== `Nest.DeletePrivilegesResponse` - -[horizontal] -`Applications` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteRepositoryDescriptor` - -[horizontal] -`DeleteRepositoryDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteRepositoryRequest` - -[horizontal] -`DeleteRepositoryRequest()` method:: added - -[discrete] -==== `Nest.DeleteRequest` - -[horizontal] -`DeleteRequest()` method:: added -`DeleteRequest(IndexName, Id)` method:: added -`DeleteRequest(IndexName, TypeName, Id)` method:: deleted -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted - -[discrete] -==== `Nest.DeleteRequest` - -[horizontal] -`DeleteRequest()` method:: added -`DeleteRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`DeleteRequest(Id)` method:: added -`DeleteRequest(IndexName, Id)` method:: added -`DeleteRequest(IndexName, TypeName, Id)` method:: deleted -`DeleteRequest(TDocument, IndexName, Id)` method:: added -`IfPrimaryTerm` property:: deleted -`IfSeqNo` property:: deleted -`Parent` property:: deleted -`Refresh` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`Timeout` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted -`WaitForActiveShards` property:: deleted - -[discrete] -==== `Nest.DeleteResponse` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`IsValid` property:: added -`PrimaryTerm` property:: deleted -`Result` property:: deleted -`SequenceNumber` property:: deleted -`Shards` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.DeleteRoleDescriptor` - -[horizontal] -`DeleteRoleDescriptor()` method:: added - -[discrete] -==== `Nest.DeleteRoleMappingDescriptor` - -[horizontal] -`DeleteRoleMappingDescriptor()` method:: added - -[discrete] -==== `Nest.DeleteRoleMappingRequest` - -[horizontal] -`DeleteRoleMappingRequest()` method:: added - -[discrete] -==== `Nest.DeleteRoleMappingResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteRoleRequest` - -[horizontal] -`DeleteRoleRequest()` method:: added - -[discrete] -==== `Nest.DeleteRoleResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteRollupJobDescriptor` - -[horizontal] -`DeleteRollupJobDescriptor()` method:: added - -[discrete] -==== `Nest.DeleteRollupJobRequest` - -[horizontal] -`DeleteRollupJobRequest()` method:: added - -[discrete] -==== `Nest.DeleteRollupJobResponse` - -[horizontal] -`IsValid` property:: deleted - -[discrete] -==== `Nest.DeleteScriptDescriptor` - -[horizontal] -`DeleteScriptDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteScriptRequest` - -[horizontal] -`DeleteScriptRequest()` method:: added - -[discrete] -==== `Nest.DeleteSnapshotDescriptor` - -[horizontal] -`DeleteSnapshotDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.DeleteSnapshotRequest` - -[horizontal] -`DeleteSnapshotRequest()` method:: added - -[discrete] -==== `Nest.DeleteUserDescriptor` - -[horizontal] -`DeleteUserDescriptor()` method:: added - -[discrete] -==== `Nest.DeleteUserRequest` - -[horizontal] -`DeleteUserRequest()` method:: added - -[discrete] -==== `Nest.DeleteUserResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.DeleteWatchDescriptor` - -[horizontal] -`DeleteWatchDescriptor()` method:: added -`MasterTimeout(Time)` method:: deleted - -[discrete] -==== `Nest.DeleteWatchRequest` - -[horizontal] -`DeleteWatchRequest()` method:: added -`MasterTimeout` property:: deleted - -[discrete] -==== `Nest.DeleteWatchResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.DeprecationInfoDescriptor` - -[horizontal] -`DeprecationInfoDescriptor(IndexName)` method:: added - -[discrete] -==== `Nest.DeprecationInfoResponse` - -[horizontal] -`ClusterSettings` property getter:: -changed to non-virtual. -`IndexSettings` property getter:: -changed to non-virtual. -`NodeSettings` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.DescriptorBase` - -[horizontal] -`Assign(Action)` method:: deleted - - - - - -[discrete] -==== `Nest.DirectGenerator` - -[horizontal] - -[discrete] -==== `Nest.DirectGeneratorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`MaxInspections(Nullable)` method:: deleted -`MaxInspections(Nullable)` method:: added -`MaxTermFrequency(Nullable)` method:: deleted -`MaxTermFrequency(Nullable)` method:: added -`MinDocFrequency(Nullable)` method:: deleted -`MinDocFrequency(Nullable)` method:: added - -[discrete] -==== `Nest.DisableUserDescriptor` - -[horizontal] -`DisableUserDescriptor()` method:: -Member is less visible. -`Username(Name)` method:: deleted - -[discrete] -==== `Nest.DisableUserRequest` - -[horizontal] -`DisableUserRequest()` method:: added - - - - -[discrete] -==== `Nest.DissectProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.Distance` - -[horizontal] -`ToString()` method:: added - - -[discrete] -==== `Nest.DistinctCountDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - - -[discrete] -==== `Nest.DocumentExistsDescriptor` - -[horizontal] -`DocumentExistsDescriptor()` method:: added -`DocumentExistsDescriptor(DocumentPath)` method:: deleted -`DocumentExistsDescriptor(Id)` method:: added -`DocumentExistsDescriptor(IndexName, Id)` method:: added -`DocumentExistsDescriptor(IndexName, TypeName, Id)` method:: deleted -`DocumentExistsDescriptor(TDocument, IndexName, Id)` method:: added -`Index()` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`Index(IndexName)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`Parent(String)` method:: deleted -`Preference(String)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`Realtime(Nullable)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`Routing(Routing)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`StoredFields(Fields)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`StoredFields(Expression>[])` method:: deleted -`StoredFields(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `DocumentExistsDescriptor` to `DocumentExistsDescriptor`. - -[discrete] -==== `Nest.DocumentExistsRequest` - -[horizontal] -`DocumentExistsRequest()` method:: added -`DocumentExistsRequest(IndexName, Id)` method:: added -`DocumentExistsRequest(IndexName, TypeName, Id)` method:: deleted -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.DocumentExistsRequest` - -[horizontal] -`DocumentExistsRequest()` method:: added -`DocumentExistsRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`DocumentExistsRequest(Id)` method:: added -`DocumentExistsRequest(IndexName, Id)` method:: added -`DocumentExistsRequest(IndexName, TypeName, Id)` method:: deleted -`DocumentExistsRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted -`Preference` property:: deleted -`Realtime` property:: deleted -`Refresh` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`StoredFields` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Nest.DocumentPath` - -[horizontal] -`Type(TypeName)` method:: deleted - - - -[discrete] -==== `Nest.DotExpanderProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.DslPrettyPrintVisitor` - -[horizontal] -`Visit(IGeoIndexedShapeQuery)` method:: deleted -`Visit(IGeoShapeCircleQuery)` method:: deleted -`Visit(IGeoShapeEnvelopeQuery)` method:: deleted -`Visit(IGeoShapeGeometryCollectionQuery)` method:: deleted -`Visit(IGeoShapeLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiPointQuery)` method:: deleted -`Visit(IGeoShapeMultiPolygonQuery)` method:: deleted -`Visit(IGeoShapePointQuery)` method:: deleted -`Visit(IGeoShapePolygonQuery)` method:: deleted -`Visit(IIntervalsQuery)` method:: added -`Visit(ITypeQuery)` method:: deleted - -[discrete] -==== `Nest.DynamicIndexSettingsDescriptorBase` - -[horizontal] -`RoutingAllocationTotalShardsPerNode(Nullable)` method:: added -`TotalShardsPerNode(Nullable)` method:: deleted - - -[discrete] -==== `Nest.DynamicResponseBase` - -[horizontal] -type:: added - - - -[discrete] -==== `Nest.ElasticClient` - -[horizontal] -`AcknowledgeWatch(IAcknowledgeWatchRequest)` method:: deleted -`AcknowledgeWatch(Id, Func)` method:: deleted -`AcknowledgeWatchAsync(IAcknowledgeWatchRequest, CancellationToken)` method:: deleted -`AcknowledgeWatchAsync(Id, Func, CancellationToken)` method:: deleted -`ActivateWatch(IActivateWatchRequest)` method:: deleted -`ActivateWatch(Id, Func)` method:: deleted -`ActivateWatchAsync(IActivateWatchRequest, CancellationToken)` method:: deleted -`ActivateWatchAsync(Id, Func, CancellationToken)` method:: deleted -`Alias(IBulkAliasRequest)` method:: deleted -`Alias(Func)` method:: deleted -`AliasAsync(IBulkAliasRequest, CancellationToken)` method:: deleted -`AliasAsync(Func, CancellationToken)` method:: deleted -`AliasExists(IAliasExistsRequest)` method:: deleted -`AliasExists(Names, Func)` method:: deleted -`AliasExists(Func)` method:: deleted -`AliasExistsAsync(IAliasExistsRequest, CancellationToken)` method:: deleted -`AliasExistsAsync(Names, Func, CancellationToken)` method:: deleted -`AliasExistsAsync(Func, CancellationToken)` method:: deleted -`Analyze(IAnalyzeRequest)` method:: deleted -`Analyze(Func)` method:: deleted -`AnalyzeAsync(IAnalyzeRequest, CancellationToken)` method:: deleted -`AnalyzeAsync(Func, CancellationToken)` method:: deleted -`Authenticate(IAuthenticateRequest)` method:: deleted -`Authenticate(Func)` method:: deleted -`AuthenticateAsync(IAuthenticateRequest, CancellationToken)` method:: deleted -`AuthenticateAsync(Func, CancellationToken)` method:: deleted -`Bulk(IBulkRequest)` method:: -Member type changed from `IBulkResponse` to `BulkResponse`. -`Bulk(Func)` method:: -Member type changed from `IBulkResponse` to `BulkResponse`. -`BulkAsync(IBulkRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`BulkAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CancelTasks(ICancelTasksRequest)` method:: deleted -`CancelTasks(Func)` method:: deleted -`CancelTasksAsync(ICancelTasksRequest, CancellationToken)` method:: deleted -`CancelTasksAsync(Func, CancellationToken)` method:: deleted -`CatAliases(ICatAliasesRequest)` method:: deleted -`CatAliases(Func)` method:: deleted -`CatAliasesAsync(ICatAliasesRequest, CancellationToken)` method:: deleted -`CatAliasesAsync(Func, CancellationToken)` method:: deleted -`CatAllocation(ICatAllocationRequest)` method:: deleted -`CatAllocation(Func)` method:: deleted -`CatAllocationAsync(ICatAllocationRequest, CancellationToken)` method:: deleted -`CatAllocationAsync(Func, CancellationToken)` method:: deleted -`CatCount(ICatCountRequest)` method:: deleted -`CatCount(Func)` method:: deleted -`CatCountAsync(ICatCountRequest, CancellationToken)` method:: deleted -`CatCountAsync(Func, CancellationToken)` method:: deleted -`CatFielddata(ICatFielddataRequest)` method:: deleted -`CatFielddata(Func)` method:: deleted -`CatFielddataAsync(ICatFielddataRequest, CancellationToken)` method:: deleted -`CatFielddataAsync(Func, CancellationToken)` method:: deleted -`CatHealth(ICatHealthRequest)` method:: deleted -`CatHealth(Func)` method:: deleted -`CatHealthAsync(ICatHealthRequest, CancellationToken)` method:: deleted -`CatHealthAsync(Func, CancellationToken)` method:: deleted -`CatHelp(ICatHelpRequest)` method:: deleted -`CatHelp(Func)` method:: deleted -`CatHelpAsync(ICatHelpRequest, CancellationToken)` method:: deleted -`CatHelpAsync(Func, CancellationToken)` method:: deleted -`CatIndices(ICatIndicesRequest)` method:: deleted -`CatIndices(Func)` method:: deleted -`CatIndicesAsync(ICatIndicesRequest, CancellationToken)` method:: deleted -`CatIndicesAsync(Func, CancellationToken)` method:: deleted -`CatMaster(ICatMasterRequest)` method:: deleted -`CatMaster(Func)` method:: deleted -`CatMasterAsync(ICatMasterRequest, CancellationToken)` method:: deleted -`CatMasterAsync(Func, CancellationToken)` method:: deleted -`CatNodeAttributes(ICatNodeAttributesRequest)` method:: deleted -`CatNodeAttributes(Func)` method:: deleted -`CatNodeAttributesAsync(ICatNodeAttributesRequest, CancellationToken)` method:: deleted -`CatNodeAttributesAsync(Func, CancellationToken)` method:: deleted -`CatNodes(ICatNodesRequest)` method:: deleted -`CatNodes(Func)` method:: deleted -`CatNodesAsync(ICatNodesRequest, CancellationToken)` method:: deleted -`CatNodesAsync(Func, CancellationToken)` method:: deleted -`CatPendingTasks(ICatPendingTasksRequest)` method:: deleted -`CatPendingTasks(Func)` method:: deleted -`CatPendingTasksAsync(ICatPendingTasksRequest, CancellationToken)` method:: deleted -`CatPendingTasksAsync(Func, CancellationToken)` method:: deleted -`CatPlugins(ICatPluginsRequest)` method:: deleted -`CatPlugins(Func)` method:: deleted -`CatPluginsAsync(ICatPluginsRequest, CancellationToken)` method:: deleted -`CatPluginsAsync(Func, CancellationToken)` method:: deleted -`CatRecovery(ICatRecoveryRequest)` method:: deleted -`CatRecovery(Func)` method:: deleted -`CatRecoveryAsync(ICatRecoveryRequest, CancellationToken)` method:: deleted -`CatRecoveryAsync(Func, CancellationToken)` method:: deleted -`CatRepositories(ICatRepositoriesRequest)` method:: deleted -`CatRepositories(Func)` method:: deleted -`CatRepositoriesAsync(ICatRepositoriesRequest, CancellationToken)` method:: deleted -`CatRepositoriesAsync(Func, CancellationToken)` method:: deleted -`CatSegments(ICatSegmentsRequest)` method:: deleted -`CatSegments(Func)` method:: deleted -`CatSegmentsAsync(ICatSegmentsRequest, CancellationToken)` method:: deleted -`CatSegmentsAsync(Func, CancellationToken)` method:: deleted -`CatShards(ICatShardsRequest)` method:: deleted -`CatShards(Func)` method:: deleted -`CatShardsAsync(ICatShardsRequest, CancellationToken)` method:: deleted -`CatShardsAsync(Func, CancellationToken)` method:: deleted -`CatSnapshots(ICatSnapshotsRequest)` method:: deleted -`CatSnapshots(Names, Func)` method:: deleted -`CatSnapshotsAsync(ICatSnapshotsRequest, CancellationToken)` method:: deleted -`CatSnapshotsAsync(Names, Func, CancellationToken)` method:: deleted -`CatTasks(ICatTasksRequest)` method:: deleted -`CatTasks(Func)` method:: deleted -`CatTasksAsync(ICatTasksRequest, CancellationToken)` method:: deleted -`CatTasksAsync(Func, CancellationToken)` method:: deleted -`CatTemplates(ICatTemplatesRequest)` method:: deleted -`CatTemplates(Func)` method:: deleted -`CatTemplatesAsync(ICatTemplatesRequest, CancellationToken)` method:: deleted -`CatTemplatesAsync(Func, CancellationToken)` method:: deleted -`CatThreadPool(ICatThreadPoolRequest)` method:: deleted -`CatThreadPool(Func)` method:: deleted -`CatThreadPoolAsync(ICatThreadPoolRequest, CancellationToken)` method:: deleted -`CatThreadPoolAsync(Func, CancellationToken)` method:: deleted -`CcrStats(ICcrStatsRequest)` method:: deleted -`CcrStats(Func)` method:: deleted -`CcrStatsAsync(ICcrStatsRequest, CancellationToken)` method:: deleted -`CcrStatsAsync(Func, CancellationToken)` method:: deleted -`ChangePassword(IChangePasswordRequest)` method:: deleted -`ChangePassword(Func)` method:: deleted -`ChangePasswordAsync(IChangePasswordRequest, CancellationToken)` method:: deleted -`ChangePasswordAsync(Func, CancellationToken)` method:: deleted -`ClearCache(IClearCacheRequest)` method:: deleted -`ClearCache(Indices, Func)` method:: deleted -`ClearCacheAsync(IClearCacheRequest, CancellationToken)` method:: deleted -`ClearCacheAsync(Indices, Func, CancellationToken)` method:: deleted -`ClearCachedRealms(IClearCachedRealmsRequest)` method:: deleted -`ClearCachedRealms(Names, Func)` method:: deleted -`ClearCachedRealmsAsync(IClearCachedRealmsRequest, CancellationToken)` method:: deleted -`ClearCachedRealmsAsync(Names, Func, CancellationToken)` method:: deleted -`ClearCachedRoles(IClearCachedRolesRequest)` method:: deleted -`ClearCachedRoles(Names, Func)` method:: deleted -`ClearCachedRolesAsync(IClearCachedRolesRequest, CancellationToken)` method:: deleted -`ClearCachedRolesAsync(Names, Func, CancellationToken)` method:: deleted -`ClearScroll(IClearScrollRequest)` method:: -Member type changed from `IClearScrollResponse` to `ClearScrollResponse`. -`ClearScroll(Func)` method:: -Member type changed from `IClearScrollResponse` to `ClearScrollResponse`. -`ClearScrollAsync(IClearScrollRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ClearScrollAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ClearSqlCursor(IClearSqlCursorRequest)` method:: deleted -`ClearSqlCursor(Func)` method:: deleted -`ClearSqlCursorAsync(IClearSqlCursorRequest, CancellationToken)` method:: deleted -`ClearSqlCursorAsync(Func, CancellationToken)` method:: deleted -`CloseIndex(ICloseIndexRequest)` method:: deleted -`CloseIndex(Indices, Func)` method:: deleted -`CloseIndexAsync(ICloseIndexRequest, CancellationToken)` method:: deleted -`CloseIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`CloseJob(ICloseJobRequest)` method:: deleted -`CloseJob(Id, Func)` method:: deleted -`CloseJobAsync(ICloseJobRequest, CancellationToken)` method:: deleted -`CloseJobAsync(Id, Func, CancellationToken)` method:: deleted -`ClusterAllocationExplain(IClusterAllocationExplainRequest)` method:: deleted -`ClusterAllocationExplain(Func)` method:: deleted -`ClusterAllocationExplainAsync(IClusterAllocationExplainRequest, CancellationToken)` method:: deleted -`ClusterAllocationExplainAsync(Func, CancellationToken)` method:: deleted -`ClusterGetSettings(IClusterGetSettingsRequest)` method:: deleted -`ClusterGetSettings(Func)` method:: deleted -`ClusterGetSettingsAsync(IClusterGetSettingsRequest, CancellationToken)` method:: deleted -`ClusterGetSettingsAsync(Func, CancellationToken)` method:: deleted -`ClusterHealth(IClusterHealthRequest)` method:: deleted -`ClusterHealth(Func)` method:: deleted -`ClusterHealthAsync(IClusterHealthRequest, CancellationToken)` method:: deleted -`ClusterHealthAsync(Func, CancellationToken)` method:: deleted -`ClusterPendingTasks(IClusterPendingTasksRequest)` method:: deleted -`ClusterPendingTasks(Func)` method:: deleted -`ClusterPendingTasksAsync(IClusterPendingTasksRequest, CancellationToken)` method:: deleted -`ClusterPendingTasksAsync(Func, CancellationToken)` method:: deleted -`ClusterPutSettings(IClusterPutSettingsRequest)` method:: deleted -`ClusterPutSettings(Func)` method:: deleted -`ClusterPutSettingsAsync(IClusterPutSettingsRequest, CancellationToken)` method:: deleted -`ClusterPutSettingsAsync(Func, CancellationToken)` method:: deleted -`ClusterReroute(IClusterRerouteRequest)` method:: deleted -`ClusterReroute(Func)` method:: deleted -`ClusterRerouteAsync(IClusterRerouteRequest, CancellationToken)` method:: deleted -`ClusterRerouteAsync(Func, CancellationToken)` method:: deleted -`ClusterState(IClusterStateRequest)` method:: deleted -`ClusterState(Func)` method:: deleted -`ClusterStateAsync(IClusterStateRequest, CancellationToken)` method:: deleted -`ClusterStateAsync(Func, CancellationToken)` method:: deleted -`ClusterStats(IClusterStatsRequest)` method:: deleted -`ClusterStats(Func)` method:: deleted -`ClusterStatsAsync(IClusterStatsRequest, CancellationToken)` method:: deleted -`ClusterStatsAsync(Func, CancellationToken)` method:: deleted -`Count(ICountRequest)` method:: -Member type changed from `ICountResponse` to `CountResponse`. -`Count(Func, ICountRequest>)` method:: deleted -`Count(Func, ICountRequest>)` method:: added -`CountAsync(ICountRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CountAsync(Func, ICountRequest>, CancellationToken)` method:: deleted -`CountAsync(Func, ICountRequest>, CancellationToken)` method:: added -`Create(ICreateRequest)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`Create(TDocument, Func, ICreateRequest>)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`CreateApiKey(ICreateApiKeyRequest)` method:: deleted -`CreateApiKey(Func)` method:: deleted -`CreateApiKeyAsync(ICreateApiKeyRequest, CancellationToken)` method:: deleted -`CreateApiKeyAsync(Func, CancellationToken)` method:: deleted -`CreateAsync(ICreateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateAsync(TDocument, Func, ICreateRequest>, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateAutoFollowPattern(ICreateAutoFollowPatternRequest)` method:: deleted -`CreateAutoFollowPattern(Name, Func)` method:: deleted -`CreateAutoFollowPatternAsync(ICreateAutoFollowPatternRequest, CancellationToken)` method:: deleted -`CreateAutoFollowPatternAsync(Name, Func, CancellationToken)` method:: deleted -`CreateDocument(TDocument)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`CreateDocumentAsync(TDocument, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateFollowIndex(ICreateFollowIndexRequest)` method:: deleted -`CreateFollowIndex(IndexName, Func)` method:: deleted -`CreateFollowIndexAsync(ICreateFollowIndexRequest, CancellationToken)` method:: deleted -`CreateFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`CreateIndex(ICreateIndexRequest)` method:: deleted -`CreateIndex(IndexName, Func)` method:: deleted -`CreateIndexAsync(ICreateIndexRequest, CancellationToken)` method:: deleted -`CreateIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`CreateRepository(ICreateRepositoryRequest)` method:: deleted -`CreateRepository(Name, Func)` method:: deleted -`CreateRepositoryAsync(ICreateRepositoryRequest, CancellationToken)` method:: deleted -`CreateRepositoryAsync(Name, Func, CancellationToken)` method:: deleted -`CreateRollupJob(ICreateRollupJobRequest)` method:: deleted -`CreateRollupJob(Id, Func, ICreateRollupJobRequest>)` method:: deleted -`CreateRollupJobAsync(ICreateRollupJobRequest, CancellationToken)` method:: deleted -`CreateRollupJobAsync(Id, Func, ICreateRollupJobRequest>, CancellationToken)` method:: deleted -`DeactivateWatch(Id, Func)` method:: deleted -`DeactivateWatch(IDeactivateWatchRequest)` method:: deleted -`DeactivateWatchAsync(Id, Func, CancellationToken)` method:: deleted -`DeactivateWatchAsync(IDeactivateWatchRequest, CancellationToken)` method:: deleted -`Delete(DocumentPath, Func, IDeleteRequest>)` method:: deleted -`Delete(DocumentPath, Func, IDeleteRequest>)` method:: added -`Delete(IDeleteRequest)` method:: -Member type changed from `IDeleteResponse` to `DeleteResponse`. -`DeleteAlias(IDeleteAliasRequest)` method:: deleted -`DeleteAlias(Indices, Names, Func)` method:: deleted -`DeleteAliasAsync(IDeleteAliasRequest, CancellationToken)` method:: deleted -`DeleteAliasAsync(Indices, Names, Func, CancellationToken)` method:: deleted -`DeleteAsync(DocumentPath, Func, IDeleteRequest>, CancellationToken)` method:: deleted -`DeleteAsync(DocumentPath, Func, IDeleteRequest>, CancellationToken)` method:: added -`DeleteAsync(IDeleteRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteAutoFollowPattern(IDeleteAutoFollowPatternRequest)` method:: deleted -`DeleteAutoFollowPattern(Name, Func)` method:: deleted -`DeleteAutoFollowPatternAsync(IDeleteAutoFollowPatternRequest, CancellationToken)` method:: deleted -`DeleteAutoFollowPatternAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteByQuery(IDeleteByQueryRequest)` method:: -Member type changed from `IDeleteByQueryResponse` to `DeleteByQueryResponse`. -`DeleteByQuery(Func, IDeleteByQueryRequest>)` method:: deleted -`DeleteByQuery(Func, IDeleteByQueryRequest>)` method:: added -`DeleteByQueryAsync(IDeleteByQueryRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteByQueryAsync(Func, IDeleteByQueryRequest>, CancellationToken)` method:: deleted -`DeleteByQueryAsync(Func, IDeleteByQueryRequest>, CancellationToken)` method:: added -`DeleteByQueryRethrottle(IDeleteByQueryRethrottleRequest)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`DeleteByQueryRethrottle(TaskId, Func)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`DeleteByQueryRethrottleAsync(IDeleteByQueryRethrottleRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteByQueryRethrottleAsync(TaskId, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteCalendar(Id, Func)` method:: deleted -`DeleteCalendar(IDeleteCalendarRequest)` method:: deleted -`DeleteCalendarAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarAsync(IDeleteCalendarRequest, CancellationToken)` method:: deleted -`DeleteCalendarEvent(Id, Id, Func)` method:: deleted -`DeleteCalendarEvent(IDeleteCalendarEventRequest)` method:: deleted -`DeleteCalendarEventAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarEventAsync(IDeleteCalendarEventRequest, CancellationToken)` method:: deleted -`DeleteCalendarJob(Id, Id, Func)` method:: deleted -`DeleteCalendarJob(IDeleteCalendarJobRequest)` method:: deleted -`DeleteCalendarJobAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarJobAsync(IDeleteCalendarJobRequest, CancellationToken)` method:: deleted -`DeleteDatafeed(Id, Func)` method:: deleted -`DeleteDatafeed(IDeleteDatafeedRequest)` method:: deleted -`DeleteDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteDatafeedAsync(IDeleteDatafeedRequest, CancellationToken)` method:: deleted -`DeleteExpiredData(IDeleteExpiredDataRequest)` method:: deleted -`DeleteExpiredData(Func)` method:: deleted -`DeleteExpiredDataAsync(IDeleteExpiredDataRequest, CancellationToken)` method:: deleted -`DeleteExpiredDataAsync(Func, CancellationToken)` method:: deleted -`DeleteFilter(Id, Func)` method:: deleted -`DeleteFilter(IDeleteFilterRequest)` method:: deleted -`DeleteFilterAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteFilterAsync(IDeleteFilterRequest, CancellationToken)` method:: deleted -`DeleteForecast(Id, ForecastIds, Func)` method:: deleted -`DeleteForecast(IDeleteForecastRequest)` method:: deleted -`DeleteForecastAsync(Id, ForecastIds, Func, CancellationToken)` method:: deleted -`DeleteForecastAsync(IDeleteForecastRequest, CancellationToken)` method:: deleted -`DeleteIndex(IDeleteIndexRequest)` method:: deleted -`DeleteIndex(Indices, Func)` method:: deleted -`DeleteIndexAsync(IDeleteIndexRequest, CancellationToken)` method:: deleted -`DeleteIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`DeleteIndexTemplate(IDeleteIndexTemplateRequest)` method:: deleted -`DeleteIndexTemplate(Name, Func)` method:: deleted -`DeleteIndexTemplateAsync(IDeleteIndexTemplateRequest, CancellationToken)` method:: deleted -`DeleteIndexTemplateAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteJob(Id, Func)` method:: deleted -`DeleteJob(IDeleteJobRequest)` method:: deleted -`DeleteJobAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteJobAsync(IDeleteJobRequest, CancellationToken)` method:: deleted -`DeleteLicense(IDeleteLicenseRequest)` method:: deleted -`DeleteLicense(Func)` method:: deleted -`DeleteLicenseAsync(IDeleteLicenseRequest, CancellationToken)` method:: deleted -`DeleteLicenseAsync(Func, CancellationToken)` method:: deleted -`DeleteLifecycle(IDeleteLifecycleRequest)` method:: deleted -`DeleteLifecycle(PolicyId, Func)` method:: deleted -`DeleteLifecycleAsync(IDeleteLifecycleRequest, CancellationToken)` method:: deleted -`DeleteLifecycleAsync(PolicyId, Func, CancellationToken)` method:: deleted -`DeleteModelSnapshot(Id, Id, Func)` method:: deleted -`DeleteModelSnapshot(IDeleteModelSnapshotRequest)` method:: deleted -`DeleteModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteModelSnapshotAsync(IDeleteModelSnapshotRequest, CancellationToken)` method:: deleted -`DeletePipeline(Id, Func)` method:: deleted -`DeletePipeline(IDeletePipelineRequest)` method:: deleted -`DeletePipelineAsync(Id, Func, CancellationToken)` method:: deleted -`DeletePipelineAsync(IDeletePipelineRequest, CancellationToken)` method:: deleted -`DeletePrivileges(IDeletePrivilegesRequest)` method:: deleted -`DeletePrivileges(Name, Name, Func)` method:: deleted -`DeletePrivilegesAsync(IDeletePrivilegesRequest, CancellationToken)` method:: deleted -`DeletePrivilegesAsync(Name, Name, Func, CancellationToken)` method:: deleted -`DeleteRepository(IDeleteRepositoryRequest)` method:: deleted -`DeleteRepository(Names, Func)` method:: deleted -`DeleteRepositoryAsync(IDeleteRepositoryRequest, CancellationToken)` method:: deleted -`DeleteRepositoryAsync(Names, Func, CancellationToken)` method:: deleted -`DeleteRole(IDeleteRoleRequest)` method:: deleted -`DeleteRole(Name, Func)` method:: deleted -`DeleteRoleAsync(IDeleteRoleRequest, CancellationToken)` method:: deleted -`DeleteRoleAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteRoleMapping(IDeleteRoleMappingRequest)` method:: deleted -`DeleteRoleMapping(Name, Func)` method:: deleted -`DeleteRoleMappingAsync(IDeleteRoleMappingRequest, CancellationToken)` method:: deleted -`DeleteRoleMappingAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteRollupJob(Id, Func)` method:: deleted -`DeleteRollupJob(IDeleteRollupJobRequest)` method:: deleted -`DeleteRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteRollupJobAsync(IDeleteRollupJobRequest, CancellationToken)` method:: deleted -`DeleteScript(Id, Func)` method:: -Member type changed from `IDeleteScriptResponse` to `DeleteScriptResponse`. -`DeleteScript(IDeleteScriptRequest)` method:: -Member type changed from `IDeleteScriptResponse` to `DeleteScriptResponse`. -`DeleteScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteScriptAsync(IDeleteScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteSnapshot(IDeleteSnapshotRequest)` method:: deleted -`DeleteSnapshot(Name, Name, Func)` method:: deleted -`DeleteSnapshotAsync(IDeleteSnapshotRequest, CancellationToken)` method:: deleted -`DeleteSnapshotAsync(Name, Name, Func, CancellationToken)` method:: deleted -`DeleteUser(IDeleteUserRequest)` method:: deleted -`DeleteUser(Name, Func)` method:: deleted -`DeleteUserAsync(IDeleteUserRequest, CancellationToken)` method:: deleted -`DeleteUserAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteWatch(Id, Func)` method:: deleted -`DeleteWatch(IDeleteWatchRequest)` method:: deleted -`DeleteWatchAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteWatchAsync(IDeleteWatchRequest, CancellationToken)` method:: deleted -`DeprecationInfo(IDeprecationInfoRequest)` method:: deleted -`DeprecationInfo(Func)` method:: deleted -`DeprecationInfoAsync(IDeprecationInfoRequest, CancellationToken)` method:: deleted -`DeprecationInfoAsync(Func, CancellationToken)` method:: deleted -`DisableUser(IDisableUserRequest)` method:: deleted -`DisableUser(Name, Func)` method:: deleted -`DisableUserAsync(IDisableUserRequest, CancellationToken)` method:: deleted -`DisableUserAsync(Name, Func, CancellationToken)` method:: deleted -`DocumentExists(DocumentPath, Func, IDocumentExistsRequest>)` method:: deleted -`DocumentExists(DocumentPath, Func, IDocumentExistsRequest>)` method:: added -`DocumentExists(IDocumentExistsRequest)` method:: -Member type changed from `IExistsResponse` to `ExistsResponse`. -`DocumentExistsAsync(DocumentPath, Func, IDocumentExistsRequest>, CancellationToken)` method:: deleted -`DocumentExistsAsync(DocumentPath, Func, IDocumentExistsRequest>, CancellationToken)` method:: added -`DocumentExistsAsync(IDocumentExistsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`EnableUser(IEnableUserRequest)` method:: deleted -`EnableUser(Name, Func)` method:: deleted -`EnableUserAsync(IEnableUserRequest, CancellationToken)` method:: deleted -`EnableUserAsync(Name, Func, CancellationToken)` method:: deleted -`ExecutePainlessScript(IExecutePainlessScriptRequest)` method:: -Member type changed from `IExecutePainlessScriptResponse` to `ExecutePainlessScriptResponse`. -`ExecutePainlessScript(Func)` method:: -Member type changed from `IExecutePainlessScriptResponse` to `ExecutePainlessScriptResponse`. -`ExecutePainlessScriptAsync(IExecutePainlessScriptRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ExecutePainlessScriptAsync(Func, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ExecuteWatch(IExecuteWatchRequest)` method:: deleted -`ExecuteWatch(Func)` method:: deleted -`ExecuteWatchAsync(IExecuteWatchRequest, CancellationToken)` method:: deleted -`ExecuteWatchAsync(Func, CancellationToken)` method:: deleted -`Explain(DocumentPath, Func, IExplainRequest>)` method:: deleted -`Explain(DocumentPath, Func, IExplainRequest>)` method:: added -`Explain(IExplainRequest)` method:: added -`Explain(IExplainRequest)` method:: deleted -`ExplainAsync(DocumentPath, Func, IExplainRequest>, CancellationToken)` method:: deleted -`ExplainAsync(DocumentPath, Func, IExplainRequest>, CancellationToken)` method:: added -`ExplainAsync(IExplainRequest, CancellationToken)` method:: added -`ExplainAsync(IExplainRequest, CancellationToken)` method:: deleted -`ExplainLifecycle(IExplainLifecycleRequest)` method:: deleted -`ExplainLifecycle(IndexName, Func)` method:: deleted -`ExplainLifecycleAsync(IExplainLifecycleRequest, CancellationToken)` method:: deleted -`ExplainLifecycleAsync(IndexName, Func, CancellationToken)` method:: deleted -`FieldCapabilities(IFieldCapabilitiesRequest)` method:: -Member type changed from `IFieldCapabilitiesResponse` to `FieldCapabilitiesResponse`. -`FieldCapabilities(Indices, Func)` method:: -Member type changed from `IFieldCapabilitiesResponse` to `FieldCapabilitiesResponse`. -`FieldCapabilitiesAsync(IFieldCapabilitiesRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`FieldCapabilitiesAsync(Indices, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`Flush(IFlushRequest)` method:: deleted -`Flush(Indices, Func)` method:: deleted -`FlushAsync(IFlushRequest, CancellationToken)` method:: deleted -`FlushAsync(Indices, Func, CancellationToken)` method:: deleted -`FlushJob(Id, Func)` method:: deleted -`FlushJob(IFlushJobRequest)` method:: deleted -`FlushJobAsync(Id, Func, CancellationToken)` method:: deleted -`FlushJobAsync(IFlushJobRequest, CancellationToken)` method:: deleted -`FollowIndexStats(IFollowIndexStatsRequest)` method:: deleted -`FollowIndexStats(Indices, Func)` method:: deleted -`FollowIndexStatsAsync(IFollowIndexStatsRequest, CancellationToken)` method:: deleted -`FollowIndexStatsAsync(Indices, Func, CancellationToken)` method:: deleted -`ForceMerge(IForceMergeRequest)` method:: deleted -`ForceMerge(Indices, Func)` method:: deleted -`ForceMergeAsync(IForceMergeRequest, CancellationToken)` method:: deleted -`ForceMergeAsync(Indices, Func, CancellationToken)` method:: deleted -`ForecastJob(Id, Func)` method:: deleted -`ForecastJob(IForecastJobRequest)` method:: deleted -`ForecastJobAsync(Id, Func, CancellationToken)` method:: deleted -`ForecastJobAsync(IForecastJobRequest, CancellationToken)` method:: deleted -`Get(DocumentPath, Func, IGetRequest>)` method:: deleted -`Get(DocumentPath, Func, IGetRequest>)` method:: added -`Get(IGetRequest)` method:: -Member type changed from `IGetResponse` to `GetResponse`. -`GetAlias(IGetAliasRequest)` method:: deleted -`GetAlias(Func)` method:: deleted -`GetAliasAsync(IGetAliasRequest, CancellationToken)` method:: deleted -`GetAliasAsync(Func, CancellationToken)` method:: deleted -`GetAnomalyRecords(Id, Func)` method:: deleted -`GetAnomalyRecords(IGetAnomalyRecordsRequest)` method:: deleted -`GetAnomalyRecordsAsync(Id, Func, CancellationToken)` method:: deleted -`GetAnomalyRecordsAsync(IGetAnomalyRecordsRequest, CancellationToken)` method:: deleted -`GetApiKey(IGetApiKeyRequest)` method:: deleted -`GetApiKey(Func)` method:: deleted -`GetApiKeyAsync(IGetApiKeyRequest, CancellationToken)` method:: deleted -`GetApiKeyAsync(Func, CancellationToken)` method:: deleted -`GetAsync(DocumentPath, Func, IGetRequest>, CancellationToken)` method:: deleted -`GetAsync(DocumentPath, Func, IGetRequest>, CancellationToken)` method:: added -`GetAsync(IGetRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`GetAutoFollowPattern(IGetAutoFollowPatternRequest)` method:: deleted -`GetAutoFollowPattern(Func)` method:: deleted -`GetAutoFollowPatternAsync(IGetAutoFollowPatternRequest, CancellationToken)` method:: deleted -`GetAutoFollowPatternAsync(Func, CancellationToken)` method:: deleted -`GetBasicLicenseStatus(IGetBasicLicenseStatusRequest)` method:: deleted -`GetBasicLicenseStatus(Func)` method:: deleted -`GetBasicLicenseStatusAsync(IGetBasicLicenseStatusRequest, CancellationToken)` method:: deleted -`GetBasicLicenseStatusAsync(Func, CancellationToken)` method:: deleted -`GetBuckets(Id, Func)` method:: deleted -`GetBuckets(IGetBucketsRequest)` method:: deleted -`GetBucketsAsync(Id, Func, CancellationToken)` method:: deleted -`GetBucketsAsync(IGetBucketsRequest, CancellationToken)` method:: deleted -`GetCalendarEvents(Id, Func)` method:: deleted -`GetCalendarEvents(IGetCalendarEventsRequest)` method:: deleted -`GetCalendarEventsAsync(Id, Func, CancellationToken)` method:: deleted -`GetCalendarEventsAsync(IGetCalendarEventsRequest, CancellationToken)` method:: deleted -`GetCalendars(IGetCalendarsRequest)` method:: deleted -`GetCalendars(Func)` method:: deleted -`GetCalendarsAsync(IGetCalendarsRequest, CancellationToken)` method:: deleted -`GetCalendarsAsync(Func, CancellationToken)` method:: deleted -`GetCategories(Id, Func)` method:: deleted -`GetCategories(IGetCategoriesRequest)` method:: deleted -`GetCategoriesAsync(Id, Func, CancellationToken)` method:: deleted -`GetCategoriesAsync(IGetCategoriesRequest, CancellationToken)` method:: deleted -`GetCertificates(IGetCertificatesRequest)` method:: deleted -`GetCertificates(Func)` method:: deleted -`GetCertificatesAsync(IGetCertificatesRequest, CancellationToken)` method:: deleted -`GetCertificatesAsync(Func, CancellationToken)` method:: deleted -`GetDatafeeds(IGetDatafeedsRequest)` method:: deleted -`GetDatafeeds(Func)` method:: deleted -`GetDatafeedsAsync(IGetDatafeedsRequest, CancellationToken)` method:: deleted -`GetDatafeedsAsync(Func, CancellationToken)` method:: deleted -`GetDatafeedStats(IGetDatafeedStatsRequest)` method:: deleted -`GetDatafeedStats(Func)` method:: deleted -`GetDatafeedStatsAsync(IGetDatafeedStatsRequest, CancellationToken)` method:: deleted -`GetDatafeedStatsAsync(Func, CancellationToken)` method:: deleted -`GetFieldMapping(Fields, Func, IGetFieldMappingRequest>)` method:: deleted -`GetFieldMapping(IGetFieldMappingRequest)` method:: deleted -`GetFieldMappingAsync(Fields, Func, IGetFieldMappingRequest>, CancellationToken)` method:: deleted -`GetFieldMappingAsync(IGetFieldMappingRequest, CancellationToken)` method:: deleted -`GetFilters(IGetFiltersRequest)` method:: deleted -`GetFilters(Func)` method:: deleted -`GetFiltersAsync(IGetFiltersRequest, CancellationToken)` method:: deleted -`GetFiltersAsync(Func, CancellationToken)` method:: deleted -`GetIlmStatus(IGetIlmStatusRequest)` method:: deleted -`GetIlmStatus(Func)` method:: deleted -`GetIlmStatusAsync(IGetIlmStatusRequest, CancellationToken)` method:: deleted -`GetIlmStatusAsync(Func, CancellationToken)` method:: deleted -`GetIndex(IGetIndexRequest)` method:: deleted -`GetIndex(Indices, Func)` method:: deleted -`GetIndexAsync(IGetIndexRequest, CancellationToken)` method:: deleted -`GetIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`GetIndexSettings(IGetIndexSettingsRequest)` method:: deleted -`GetIndexSettings(Func)` method:: deleted -`GetIndexSettingsAsync(IGetIndexSettingsRequest, CancellationToken)` method:: deleted -`GetIndexSettingsAsync(Func, CancellationToken)` method:: deleted -`GetIndexTemplate(IGetIndexTemplateRequest)` method:: deleted -`GetIndexTemplate(Func)` method:: deleted -`GetIndexTemplateAsync(IGetIndexTemplateRequest, CancellationToken)` method:: deleted -`GetIndexTemplateAsync(Func, CancellationToken)` method:: deleted -`GetInfluencers(Id, Func)` method:: deleted -`GetInfluencers(IGetInfluencersRequest)` method:: deleted -`GetInfluencersAsync(Id, Func, CancellationToken)` method:: deleted -`GetInfluencersAsync(IGetInfluencersRequest, CancellationToken)` method:: deleted -`GetJobs(IGetJobsRequest)` method:: deleted -`GetJobs(Func)` method:: deleted -`GetJobsAsync(IGetJobsRequest, CancellationToken)` method:: deleted -`GetJobsAsync(Func, CancellationToken)` method:: deleted -`GetJobStats(IGetJobStatsRequest)` method:: deleted -`GetJobStats(Func)` method:: deleted -`GetJobStatsAsync(IGetJobStatsRequest, CancellationToken)` method:: deleted -`GetJobStatsAsync(Func, CancellationToken)` method:: deleted -`GetLicense(IGetLicenseRequest)` method:: deleted -`GetLicense(Func)` method:: deleted -`GetLicenseAsync(IGetLicenseRequest, CancellationToken)` method:: deleted -`GetLicenseAsync(Func, CancellationToken)` method:: deleted -`GetLifecycle(IGetLifecycleRequest)` method:: deleted -`GetLifecycle(Func)` method:: deleted -`GetLifecycleAsync(IGetLifecycleRequest, CancellationToken)` method:: deleted -`GetLifecycleAsync(Func, CancellationToken)` method:: deleted -`GetMapping(IGetMappingRequest)` method:: deleted -`GetMapping(Func, IGetMappingRequest>)` method:: deleted -`GetMappingAsync(IGetMappingRequest, CancellationToken)` method:: deleted -`GetMappingAsync(Func, IGetMappingRequest>, CancellationToken)` method:: deleted -`GetModelSnapshots(Id, Func)` method:: deleted -`GetModelSnapshots(IGetModelSnapshotsRequest)` method:: deleted -`GetModelSnapshotsAsync(Id, Func, CancellationToken)` method:: deleted -`GetModelSnapshotsAsync(IGetModelSnapshotsRequest, CancellationToken)` method:: deleted -`GetOverallBuckets(Id, Func)` method:: deleted -`GetOverallBuckets(IGetOverallBucketsRequest)` method:: deleted -`GetOverallBucketsAsync(Id, Func, CancellationToken)` method:: deleted -`GetOverallBucketsAsync(IGetOverallBucketsRequest, CancellationToken)` method:: deleted -`GetPipeline(IGetPipelineRequest)` method:: deleted -`GetPipeline(Func)` method:: deleted -`GetPipelineAsync(IGetPipelineRequest, CancellationToken)` method:: deleted -`GetPipelineAsync(Func, CancellationToken)` method:: deleted -`GetPrivileges(IGetPrivilegesRequest)` method:: deleted -`GetPrivileges(Func)` method:: deleted -`GetPrivilegesAsync(IGetPrivilegesRequest, CancellationToken)` method:: deleted -`GetPrivilegesAsync(Func, CancellationToken)` method:: deleted -`GetRepository(IGetRepositoryRequest)` method:: deleted -`GetRepository(Func)` method:: deleted -`GetRepositoryAsync(IGetRepositoryRequest, CancellationToken)` method:: deleted -`GetRepositoryAsync(Func, CancellationToken)` method:: deleted -`GetRole(IGetRoleRequest)` method:: deleted -`GetRole(Func)` method:: deleted -`GetRoleAsync(IGetRoleRequest, CancellationToken)` method:: deleted -`GetRoleAsync(Func, CancellationToken)` method:: deleted -`GetRoleMapping(IGetRoleMappingRequest)` method:: deleted -`GetRoleMapping(Func)` method:: deleted -`GetRoleMappingAsync(IGetRoleMappingRequest, CancellationToken)` method:: deleted -`GetRoleMappingAsync(Func, CancellationToken)` method:: deleted -`GetRollupCapabilities(IGetRollupCapabilitiesRequest)` method:: deleted -`GetRollupCapabilities(Func)` method:: deleted -`GetRollupCapabilitiesAsync(IGetRollupCapabilitiesRequest, CancellationToken)` method:: deleted -`GetRollupCapabilitiesAsync(Func, CancellationToken)` method:: deleted -`GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest)` method:: deleted -`GetRollupIndexCapabilities(IndexName, Func)` method:: deleted -`GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest, CancellationToken)` method:: deleted -`GetRollupIndexCapabilitiesAsync(IndexName, Func, CancellationToken)` method:: deleted -`GetRollupJob(IGetRollupJobRequest)` method:: deleted -`GetRollupJob(Func)` method:: deleted -`GetRollupJobAsync(IGetRollupJobRequest, CancellationToken)` method:: deleted -`GetRollupJobAsync(Func, CancellationToken)` method:: deleted -`GetScript(Id, Func)` method:: -Member type changed from `IGetScriptResponse` to `GetScriptResponse`. -`GetScript(IGetScriptRequest)` method:: -Member type changed from `IGetScriptResponse` to `GetScriptResponse`. -`GetScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`GetScriptAsync(IGetScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`GetSnapshot(IGetSnapshotRequest)` method:: deleted -`GetSnapshot(Name, Names, Func)` method:: deleted -`GetSnapshotAsync(IGetSnapshotRequest, CancellationToken)` method:: deleted -`GetSnapshotAsync(Name, Names, Func, CancellationToken)` method:: deleted -`GetTask(IGetTaskRequest)` method:: deleted -`GetTask(TaskId, Func)` method:: deleted -`GetTaskAsync(IGetTaskRequest, CancellationToken)` method:: deleted -`GetTaskAsync(TaskId, Func, CancellationToken)` method:: deleted -`GetTrialLicenseStatus(IGetTrialLicenseStatusRequest)` method:: deleted -`GetTrialLicenseStatus(Func)` method:: deleted -`GetTrialLicenseStatusAsync(IGetTrialLicenseStatusRequest, CancellationToken)` method:: deleted -`GetTrialLicenseStatusAsync(Func, CancellationToken)` method:: deleted -`GetUser(IGetUserRequest)` method:: deleted -`GetUser(Func)` method:: deleted -`GetUserAccessToken(IGetUserAccessTokenRequest)` method:: deleted -`GetUserAccessToken(String, String, Func)` method:: deleted -`GetUserAccessTokenAsync(IGetUserAccessTokenRequest, CancellationToken)` method:: deleted -`GetUserAccessTokenAsync(String, String, Func, CancellationToken)` method:: deleted -`GetUserAsync(IGetUserRequest, CancellationToken)` method:: deleted -`GetUserAsync(Func, CancellationToken)` method:: deleted -`GetUserPrivileges(IGetUserPrivilegesRequest)` method:: deleted -`GetUserPrivileges(Func)` method:: deleted -`GetUserPrivilegesAsync(IGetUserPrivilegesRequest, CancellationToken)` method:: deleted -`GetUserPrivilegesAsync(Func, CancellationToken)` method:: deleted -`GetWatch(Id, Func)` method:: deleted -`GetWatch(IGetWatchRequest)` method:: deleted -`GetWatchAsync(Id, Func, CancellationToken)` method:: deleted -`GetWatchAsync(IGetWatchRequest, CancellationToken)` method:: deleted -`GraphExplore(IGraphExploreRequest)` method:: deleted -`GraphExplore(Func, IGraphExploreRequest>)` method:: deleted -`GraphExploreAsync(IGraphExploreRequest, CancellationToken)` method:: deleted -`GraphExploreAsync(Func, IGraphExploreRequest>, CancellationToken)` method:: deleted -`GrokProcessorPatterns(IGrokProcessorPatternsRequest)` method:: deleted -`GrokProcessorPatterns(Func)` method:: deleted -`GrokProcessorPatternsAsync(IGrokProcessorPatternsRequest, CancellationToken)` method:: deleted -`GrokProcessorPatternsAsync(Func, CancellationToken)` method:: deleted -`HasPrivileges(IHasPrivilegesRequest)` method:: deleted -`HasPrivileges(Func)` method:: deleted -`HasPrivilegesAsync(IHasPrivilegesRequest, CancellationToken)` method:: deleted -`HasPrivilegesAsync(Func, CancellationToken)` method:: deleted -`Index(IIndexRequest)` method:: deleted -`Index(IIndexRequest)` method:: added -`Index(T, Func, IIndexRequest>)` method:: deleted -`Index(TDocument, Func, IIndexRequest>)` method:: added -`IndexAsync(IIndexRequest, CancellationToken)` method:: deleted -`IndexAsync(IIndexRequest, CancellationToken)` method:: added -`IndexAsync(T, Func, IIndexRequest>, CancellationToken)` method:: deleted -`IndexAsync(TDocument, Func, IIndexRequest>, CancellationToken)` method:: added -`IndexDocument(T)` method:: deleted -`IndexDocument(TDocument)` method:: added -`IndexDocumentAsync(T, CancellationToken)` method:: deleted -`IndexDocumentAsync(TDocument, CancellationToken)` method:: added -`IndexExists(IIndexExistsRequest)` method:: deleted -`IndexExists(Indices, Func)` method:: deleted -`IndexExistsAsync(IIndexExistsRequest, CancellationToken)` method:: deleted -`IndexExistsAsync(Indices, Func, CancellationToken)` method:: deleted -`IndexTemplateExists(IIndexTemplateExistsRequest)` method:: deleted -`IndexTemplateExists(Name, Func)` method:: deleted -`IndexTemplateExistsAsync(IIndexTemplateExistsRequest, CancellationToken)` method:: deleted -`IndexTemplateExistsAsync(Name, Func, CancellationToken)` method:: deleted -`IndicesShardStores(IIndicesShardStoresRequest)` method:: deleted -`IndicesShardStores(Func)` method:: deleted -`IndicesShardStoresAsync(IIndicesShardStoresRequest, CancellationToken)` method:: deleted -`IndicesShardStoresAsync(Func, CancellationToken)` method:: deleted -`IndicesStats(IIndicesStatsRequest)` method:: deleted -`IndicesStats(Indices, Func)` method:: deleted -`IndicesStatsAsync(IIndicesStatsRequest, CancellationToken)` method:: deleted -`IndicesStatsAsync(Indices, Func, CancellationToken)` method:: deleted -`InvalidateApiKey(IInvalidateApiKeyRequest)` method:: deleted -`InvalidateApiKey(Func)` method:: deleted -`InvalidateApiKeyAsync(IInvalidateApiKeyRequest, CancellationToken)` method:: deleted -`InvalidateApiKeyAsync(Func, CancellationToken)` method:: deleted -`InvalidateUserAccessToken(IInvalidateUserAccessTokenRequest)` method:: deleted -`InvalidateUserAccessToken(String, Func)` method:: deleted -`InvalidateUserAccessTokenAsync(IInvalidateUserAccessTokenRequest, CancellationToken)` method:: deleted -`InvalidateUserAccessTokenAsync(String, Func, CancellationToken)` method:: deleted -`ListTasks(IListTasksRequest)` method:: deleted -`ListTasks(Func)` method:: deleted -`ListTasksAsync(IListTasksRequest, CancellationToken)` method:: deleted -`ListTasksAsync(Func, CancellationToken)` method:: deleted -`MachineLearningInfo(IMachineLearningInfoRequest)` method:: deleted -`MachineLearningInfo(Func)` method:: deleted -`MachineLearningInfoAsync(IMachineLearningInfoRequest, CancellationToken)` method:: deleted -`MachineLearningInfoAsync(Func, CancellationToken)` method:: deleted -`Map(IPutMappingRequest)` method:: -Member type changed from `IPutMappingResponse` to `PutMappingResponse`. -`Map(Func, IPutMappingRequest>)` method:: -Member type changed from `IPutMappingResponse` to `PutMappingResponse`. -`MapAsync(IPutMappingRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MapAsync(Func, IPutMappingRequest>, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MigrationAssistance(IMigrationAssistanceRequest)` method:: deleted -`MigrationAssistance(Func)` method:: deleted -`MigrationAssistanceAsync(IMigrationAssistanceRequest, CancellationToken)` method:: deleted -`MigrationAssistanceAsync(Func, CancellationToken)` method:: deleted -`MigrationUpgrade(IMigrationUpgradeRequest)` method:: deleted -`MigrationUpgrade(IndexName, Func)` method:: deleted -`MigrationUpgradeAsync(IMigrationUpgradeRequest, CancellationToken)` method:: deleted -`MigrationUpgradeAsync(IndexName, Func, CancellationToken)` method:: deleted -`MoveToStep(IMoveToStepRequest)` method:: deleted -`MoveToStep(IndexName, Func)` method:: deleted -`MoveToStepAsync(IMoveToStepRequest, CancellationToken)` method:: deleted -`MoveToStepAsync(IndexName, Func, CancellationToken)` method:: deleted -`MultiGet(IMultiGetRequest)` method:: -Member type changed from `IMultiGetResponse` to `MultiGetResponse`. -`MultiGet(Func)` method:: -Member type changed from `IMultiGetResponse` to `MultiGetResponse`. -`MultiGetAsync(IMultiGetRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiGetAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearch(IMultiSearchRequest)` method:: -Member type changed from `IMultiSearchResponse` to `MultiSearchResponse`. -`MultiSearch(Indices, Func)` method:: added -`MultiSearch(Func)` method:: deleted -`MultiSearchAsync(IMultiSearchRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearchAsync(Indices, Func, CancellationToken)` method:: added -`MultiSearchAsync(Func, CancellationToken)` method:: deleted -`MultiSearchTemplate(IMultiSearchTemplateRequest)` method:: -Member type changed from `IMultiSearchResponse` to `MultiSearchResponse`. -`MultiSearchTemplate(Indices, Func)` method:: added -`MultiSearchTemplate(Func)` method:: deleted -`MultiSearchTemplateAsync(IMultiSearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearchTemplateAsync(Indices, Func, CancellationToken)` method:: added -`MultiSearchTemplateAsync(Func, CancellationToken)` method:: deleted -`MultiTermVectors(IMultiTermVectorsRequest)` method:: -Member type changed from `IMultiTermVectorsResponse` to `MultiTermVectorsResponse`. -`MultiTermVectors(Func)` method:: -Member type changed from `IMultiTermVectorsResponse` to `MultiTermVectorsResponse`. -`MultiTermVectorsAsync(IMultiTermVectorsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiTermVectorsAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`NodesHotThreads(INodesHotThreadsRequest)` method:: deleted -`NodesHotThreads(Func)` method:: deleted -`NodesHotThreadsAsync(INodesHotThreadsRequest, CancellationToken)` method:: deleted -`NodesHotThreadsAsync(Func, CancellationToken)` method:: deleted -`NodesInfo(INodesInfoRequest)` method:: deleted -`NodesInfo(Func)` method:: deleted -`NodesInfoAsync(INodesInfoRequest, CancellationToken)` method:: deleted -`NodesInfoAsync(Func, CancellationToken)` method:: deleted -`NodesStats(INodesStatsRequest)` method:: deleted -`NodesStats(Func)` method:: deleted -`NodesStatsAsync(INodesStatsRequest, CancellationToken)` method:: deleted -`NodesStatsAsync(Func, CancellationToken)` method:: deleted -`NodesUsage(INodesUsageRequest)` method:: deleted -`NodesUsage(Func)` method:: deleted -`NodesUsageAsync(INodesUsageRequest, CancellationToken)` method:: deleted -`NodesUsageAsync(Func, CancellationToken)` method:: deleted -`OpenIndex(Indices, Func)` method:: deleted -`OpenIndex(IOpenIndexRequest)` method:: deleted -`OpenIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`OpenIndexAsync(IOpenIndexRequest, CancellationToken)` method:: deleted -`OpenJob(Id, Func)` method:: deleted -`OpenJob(IOpenJobRequest)` method:: deleted -`OpenJobAsync(Id, Func, CancellationToken)` method:: deleted -`OpenJobAsync(IOpenJobRequest, CancellationToken)` method:: deleted -`PauseFollowIndex(IndexName, Func)` method:: deleted -`PauseFollowIndex(IPauseFollowIndexRequest)` method:: deleted -`PauseFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`PauseFollowIndexAsync(IPauseFollowIndexRequest, CancellationToken)` method:: deleted -`Ping(IPingRequest)` method:: -Member type changed from `IPingResponse` to `PingResponse`. -`Ping(Func)` method:: -Member type changed from `IPingResponse` to `PingResponse`. -`PingAsync(IPingRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PingAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PostCalendarEvents(Id, Func)` method:: deleted -`PostCalendarEvents(IPostCalendarEventsRequest)` method:: deleted -`PostCalendarEventsAsync(Id, Func, CancellationToken)` method:: deleted -`PostCalendarEventsAsync(IPostCalendarEventsRequest, CancellationToken)` method:: deleted -`PostJobData(Id, Func)` method:: deleted -`PostJobData(IPostJobDataRequest)` method:: deleted -`PostJobDataAsync(Id, Func, CancellationToken)` method:: deleted -`PostJobDataAsync(IPostJobDataRequest, CancellationToken)` method:: deleted -`PostLicense(IPostLicenseRequest)` method:: deleted -`PostLicense(Func)` method:: deleted -`PostLicenseAsync(IPostLicenseRequest, CancellationToken)` method:: deleted -`PostLicenseAsync(Func, CancellationToken)` method:: deleted -`PreviewDatafeed(Id, Func)` method:: deleted -`PreviewDatafeed(IPreviewDatafeedRequest)` method:: deleted -`PreviewDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`PreviewDatafeedAsync(IPreviewDatafeedRequest, CancellationToken)` method:: deleted -`PutAlias(Indices, Name, Func)` method:: deleted -`PutAlias(IPutAliasRequest)` method:: deleted -`PutAliasAsync(Indices, Name, Func, CancellationToken)` method:: deleted -`PutAliasAsync(IPutAliasRequest, CancellationToken)` method:: deleted -`PutCalendar(Id, Func)` method:: deleted -`PutCalendar(IPutCalendarRequest)` method:: deleted -`PutCalendarAsync(Id, Func, CancellationToken)` method:: deleted -`PutCalendarAsync(IPutCalendarRequest, CancellationToken)` method:: deleted -`PutCalendarJob(Id, Id, Func)` method:: deleted -`PutCalendarJob(IPutCalendarJobRequest)` method:: deleted -`PutCalendarJobAsync(Id, Id, Func, CancellationToken)` method:: deleted -`PutCalendarJobAsync(IPutCalendarJobRequest, CancellationToken)` method:: deleted -`PutDatafeed(Id, Func, IPutDatafeedRequest>)` method:: deleted -`PutDatafeed(IPutDatafeedRequest)` method:: deleted -`PutDatafeedAsync(Id, Func, IPutDatafeedRequest>, CancellationToken)` method:: deleted -`PutDatafeedAsync(IPutDatafeedRequest, CancellationToken)` method:: deleted -`PutFilter(Id, Func)` method:: deleted -`PutFilter(IPutFilterRequest)` method:: deleted -`PutFilterAsync(Id, Func, CancellationToken)` method:: deleted -`PutFilterAsync(IPutFilterRequest, CancellationToken)` method:: deleted -`PutIndexTemplate(IPutIndexTemplateRequest)` method:: deleted -`PutIndexTemplate(Name, Func)` method:: deleted -`PutIndexTemplateAsync(IPutIndexTemplateRequest, CancellationToken)` method:: deleted -`PutIndexTemplateAsync(Name, Func, CancellationToken)` method:: deleted -`PutJob(Id, Func, IPutJobRequest>)` method:: deleted -`PutJob(IPutJobRequest)` method:: deleted -`PutJobAsync(Id, Func, IPutJobRequest>, CancellationToken)` method:: deleted -`PutJobAsync(IPutJobRequest, CancellationToken)` method:: deleted -`PutLifecycle(IPutLifecycleRequest)` method:: deleted -`PutLifecycle(PolicyId, Func)` method:: deleted -`PutLifecycleAsync(IPutLifecycleRequest, CancellationToken)` method:: deleted -`PutLifecycleAsync(PolicyId, Func, CancellationToken)` method:: deleted -`PutPipeline(Id, Func)` method:: deleted -`PutPipeline(IPutPipelineRequest)` method:: deleted -`PutPipelineAsync(Id, Func, CancellationToken)` method:: deleted -`PutPipelineAsync(IPutPipelineRequest, CancellationToken)` method:: deleted -`PutPrivileges(IPutPrivilegesRequest)` method:: deleted -`PutPrivileges(Func)` method:: deleted -`PutPrivilegesAsync(IPutPrivilegesRequest, CancellationToken)` method:: deleted -`PutPrivilegesAsync(Func, CancellationToken)` method:: deleted -`PutRole(IPutRoleRequest)` method:: deleted -`PutRole(Name, Func)` method:: deleted -`PutRoleAsync(IPutRoleRequest, CancellationToken)` method:: deleted -`PutRoleAsync(Name, Func, CancellationToken)` method:: deleted -`PutRoleMapping(IPutRoleMappingRequest)` method:: deleted -`PutRoleMapping(Name, Func)` method:: deleted -`PutRoleMappingAsync(IPutRoleMappingRequest, CancellationToken)` method:: deleted -`PutRoleMappingAsync(Name, Func, CancellationToken)` method:: deleted -`PutScript(Id, Func)` method:: -Member type changed from `IPutScriptResponse` to `PutScriptResponse`. -`PutScript(IPutScriptRequest)` method:: -Member type changed from `IPutScriptResponse` to `PutScriptResponse`. -`PutScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PutScriptAsync(IPutScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PutUser(IPutUserRequest)` method:: deleted -`PutUser(Name, Func)` method:: deleted -`PutUserAsync(IPutUserRequest, CancellationToken)` method:: deleted -`PutUserAsync(Name, Func, CancellationToken)` method:: deleted -`PutWatch(Id, Func)` method:: deleted -`PutWatch(IPutWatchRequest)` method:: deleted -`PutWatchAsync(Id, Func, CancellationToken)` method:: deleted -`PutWatchAsync(IPutWatchRequest, CancellationToken)` method:: deleted -`QuerySql(IQuerySqlRequest)` method:: deleted -`QuerySql(Func)` method:: deleted -`QuerySqlAsync(IQuerySqlRequest, CancellationToken)` method:: deleted -`QuerySqlAsync(Func, CancellationToken)` method:: deleted -`RecoveryStatus(Indices, Func)` method:: deleted -`RecoveryStatus(IRecoveryStatusRequest)` method:: deleted -`RecoveryStatusAsync(Indices, Func, CancellationToken)` method:: deleted -`RecoveryStatusAsync(IRecoveryStatusRequest, CancellationToken)` method:: deleted -`Refresh(Indices, Func)` method:: deleted -`Refresh(IRefreshRequest)` method:: deleted -`RefreshAsync(Indices, Func, CancellationToken)` method:: deleted -`RefreshAsync(IRefreshRequest, CancellationToken)` method:: deleted -`Reindex(IndexName, IndexName, Func, QueryContainer>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IndexName, IndexName, Func, Func, QueryContainer>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IReindexRequest, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IReindexRequest, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(Func, IReindexRequest>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(Func, Func, IReindexRequest>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`ReindexOnServer(IReindexOnServerRequest)` method:: -Member type changed from `IReindexOnServerResponse` to `ReindexOnServerResponse`. -`ReindexOnServer(Func)` method:: -Member type changed from `IReindexOnServerResponse` to `ReindexOnServerResponse`. -`ReindexOnServerAsync(IReindexOnServerRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ReindexOnServerAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ReindexRethrottle(IReindexRethrottleRequest)` method:: added -`ReindexRethrottle(TaskId, Func)` method:: added -`ReindexRethrottleAsync(IReindexRethrottleRequest, CancellationToken)` method:: added -`ReindexRethrottleAsync(TaskId, Func, CancellationToken)` method:: added -`ReloadSecureSettings(IReloadSecureSettingsRequest)` method:: deleted -`ReloadSecureSettings(Func)` method:: deleted -`ReloadSecureSettingsAsync(IReloadSecureSettingsRequest, CancellationToken)` method:: deleted -`ReloadSecureSettingsAsync(Func, CancellationToken)` method:: deleted -`RemoteInfo(IRemoteInfoRequest)` method:: deleted -`RemoteInfo(Func)` method:: deleted -`RemoteInfoAsync(IRemoteInfoRequest, CancellationToken)` method:: deleted -`RemoteInfoAsync(Func, CancellationToken)` method:: deleted -`RemovePolicy(IndexName, Func)` method:: deleted -`RemovePolicy(IRemovePolicyRequest)` method:: deleted -`RemovePolicyAsync(IndexName, Func, CancellationToken)` method:: deleted -`RemovePolicyAsync(IRemovePolicyRequest, CancellationToken)` method:: deleted -`RenderSearchTemplate(IRenderSearchTemplateRequest)` method:: -Member type changed from `IRenderSearchTemplateResponse` to `RenderSearchTemplateResponse`. -`RenderSearchTemplate(Func)` method:: -Member type changed from `IRenderSearchTemplateResponse` to `RenderSearchTemplateResponse`. -`RenderSearchTemplateAsync(IRenderSearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RenderSearchTemplateAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RestartWatcher(IRestartWatcherRequest)` method:: deleted -`RestartWatcher(Func)` method:: deleted -`RestartWatcherAsync(IRestartWatcherRequest, CancellationToken)` method:: deleted -`RestartWatcherAsync(Func, CancellationToken)` method:: deleted -`Restore(IRestoreRequest)` method:: deleted -`Restore(Name, Name, Func)` method:: deleted -`RestoreAsync(IRestoreRequest, CancellationToken)` method:: deleted -`RestoreAsync(Name, Name, Func, CancellationToken)` method:: deleted -`RestoreObservable(Name, Name, TimeSpan, Func)` method:: deleted -`RestoreObservable(TimeSpan, IRestoreRequest)` method:: deleted -`ResumeFollowIndex(IndexName, Func)` method:: deleted -`ResumeFollowIndex(IResumeFollowIndexRequest)` method:: deleted -`ResumeFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`ResumeFollowIndexAsync(IResumeFollowIndexRequest, CancellationToken)` method:: deleted -`Rethrottle(IReindexRethrottleRequest)` method:: deleted -`Rethrottle(TaskId, Func)` method:: deleted -`Rethrottle(Func)` method:: deleted -`RethrottleAsync(IReindexRethrottleRequest, CancellationToken)` method:: deleted -`RethrottleAsync(TaskId, Func, CancellationToken)` method:: deleted -`RethrottleAsync(Func, CancellationToken)` method:: deleted -`RetryIlm(IndexName, Func)` method:: deleted -`RetryIlm(IRetryIlmRequest)` method:: deleted -`RetryIlmAsync(IndexName, Func, CancellationToken)` method:: deleted -`RetryIlmAsync(IRetryIlmRequest, CancellationToken)` method:: deleted -`RevertModelSnapshot(Id, Id, Func)` method:: deleted -`RevertModelSnapshot(IRevertModelSnapshotRequest)` method:: deleted -`RevertModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`RevertModelSnapshotAsync(IRevertModelSnapshotRequest, CancellationToken)` method:: deleted -`RolloverIndex(IRolloverIndexRequest)` method:: deleted -`RolloverIndex(Name, Func)` method:: deleted -`RolloverIndexAsync(IRolloverIndexRequest, CancellationToken)` method:: deleted -`RolloverIndexAsync(Name, Func, CancellationToken)` method:: deleted -`RollupSearch(Indices, Func, IRollupSearchRequest>)` method:: deleted -`RollupSearch(Indices, Func, IRollupSearchRequest>)` method:: deleted -`RollupSearch(IRollupSearchRequest)` method:: deleted -`RollupSearchAsync(Indices, Func, IRollupSearchRequest>, CancellationToken)` method:: deleted -`RollupSearchAsync(Indices, Func, IRollupSearchRequest>, CancellationToken)` method:: deleted -`RollupSearchAsync(IRollupSearchRequest, CancellationToken)` method:: deleted -`RootNodeInfo(IRootNodeInfoRequest)` method:: -Member type changed from `IRootNodeInfoResponse` to `RootNodeInfoResponse`. -`RootNodeInfo(Func)` method:: -Member type changed from `IRootNodeInfoResponse` to `RootNodeInfoResponse`. -`RootNodeInfoAsync(IRootNodeInfoRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RootNodeInfoAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`Scroll(IScrollRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`Scroll(Time, String, Func, IScrollRequest>)` method:: deleted -`Scroll(Time, String, Func, IScrollRequest>)` method:: added -`Scroll(Time, String, Func, IScrollRequest>)` method:: added -`ScrollAll(IScrollAllRequest, CancellationToken)` method:: -Member type changed from `IObservable>` to `IObservable>`. -`ScrollAll(Time, Int32, Func, IScrollAllRequest>, CancellationToken)` method:: -Member type changed from `IObservable>` to `IObservable>`. -`ScrollAsync(IScrollRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: deleted -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: added -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: added -`Search(ISearchRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`Search(ISearchRequest)` method:: deleted -`Search(Func, ISearchRequest>)` method:: deleted -`Search(Func, ISearchRequest>)` method:: deleted -`Search(Func, ISearchRequest>)` method:: added -`Search(Func, ISearchRequest>)` method:: added -`SearchAsync(ISearchRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`SearchAsync(ISearchRequest, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: added -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: added -`SearchShards(ISearchShardsRequest)` method:: -Member type changed from `ISearchShardsResponse` to `SearchShardsResponse`. -`SearchShards(Func, ISearchShardsRequest>)` method:: deleted -`SearchShards(Func, ISearchShardsRequest>)` method:: added -`SearchShardsAsync(ISearchShardsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`SearchShardsAsync(Func, ISearchShardsRequest>, CancellationToken)` method:: deleted -`SearchShardsAsync(Func, ISearchShardsRequest>, CancellationToken)` method:: added -`SearchTemplate(ISearchTemplateRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`SearchTemplate(ISearchTemplateRequest)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: added -`SearchTemplateAsync(ISearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`SearchTemplateAsync(ISearchTemplateRequest, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: added -`Segments(Indices, Func)` method:: deleted -`Segments(ISegmentsRequest)` method:: deleted -`SegmentsAsync(Indices, Func, CancellationToken)` method:: deleted -`SegmentsAsync(ISegmentsRequest, CancellationToken)` method:: deleted -`ShrinkIndex(IndexName, IndexName, Func)` method:: deleted -`ShrinkIndex(IShrinkIndexRequest)` method:: deleted -`ShrinkIndexAsync(IndexName, IndexName, Func, CancellationToken)` method:: deleted -`ShrinkIndexAsync(IShrinkIndexRequest, CancellationToken)` method:: deleted -`SimulatePipeline(ISimulatePipelineRequest)` method:: deleted -`SimulatePipeline(Func)` method:: deleted -`SimulatePipelineAsync(ISimulatePipelineRequest, CancellationToken)` method:: deleted -`SimulatePipelineAsync(Func, CancellationToken)` method:: deleted -`Snapshot(ISnapshotRequest)` method:: deleted -`Snapshot(Name, Name, Func)` method:: deleted -`SnapshotAsync(ISnapshotRequest, CancellationToken)` method:: deleted -`SnapshotAsync(Name, Name, Func, CancellationToken)` method:: deleted -`SnapshotObservable(Name, Name, TimeSpan, Func)` method:: deleted -`SnapshotObservable(TimeSpan, ISnapshotRequest)` method:: deleted -`SnapshotStatus(ISnapshotStatusRequest)` method:: deleted -`SnapshotStatus(Func)` method:: deleted -`SnapshotStatusAsync(ISnapshotStatusRequest, CancellationToken)` method:: deleted -`SnapshotStatusAsync(Func, CancellationToken)` method:: deleted -`Source(DocumentPath, Func, ISourceRequest>)` method:: deleted -`Source(DocumentPath, Func, ISourceRequest>)` method:: added -`Source(ISourceRequest)` method:: -Member type changed from `T` to `SourceResponse`. -`SourceAsync(DocumentPath, Func, ISourceRequest>, CancellationToken)` method:: deleted -`SourceAsync(DocumentPath, Func, ISourceRequest>, CancellationToken)` method:: added -`SourceAsync(ISourceRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task>`. -`SourceExists(DocumentPath, Func, ISourceExistsRequest>)` method:: deleted -`SourceExists(DocumentPath, Func, ISourceExistsRequest>)` method:: added -`SourceExists(ISourceExistsRequest)` method:: -Member type changed from `IExistsResponse` to `ExistsResponse`. -`SourceExistsAsync(DocumentPath, Func, ISourceExistsRequest>, CancellationToken)` method:: deleted -`SourceExistsAsync(DocumentPath, Func, ISourceExistsRequest>, CancellationToken)` method:: added -`SourceExistsAsync(ISourceExistsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`SplitIndex(IndexName, IndexName, Func)` method:: deleted -`SplitIndex(ISplitIndexRequest)` method:: deleted -`SplitIndexAsync(IndexName, IndexName, Func, CancellationToken)` method:: deleted -`SplitIndexAsync(ISplitIndexRequest, CancellationToken)` method:: deleted -`StartBasicLicense(IStartBasicLicenseRequest)` method:: deleted -`StartBasicLicense(Func)` method:: deleted -`StartBasicLicenseAsync(IStartBasicLicenseRequest, CancellationToken)` method:: deleted -`StartBasicLicenseAsync(Func, CancellationToken)` method:: deleted -`StartDatafeed(Id, Func)` method:: deleted -`StartDatafeed(IStartDatafeedRequest)` method:: deleted -`StartDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`StartDatafeedAsync(IStartDatafeedRequest, CancellationToken)` method:: deleted -`StartIlm(IStartIlmRequest)` method:: deleted -`StartIlm(Func)` method:: deleted -`StartIlmAsync(IStartIlmRequest, CancellationToken)` method:: deleted -`StartIlmAsync(Func, CancellationToken)` method:: deleted -`StartRollupJob(Id, Func)` method:: deleted -`StartRollupJob(IStartRollupJobRequest)` method:: deleted -`StartRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`StartRollupJobAsync(IStartRollupJobRequest, CancellationToken)` method:: deleted -`StartTrialLicense(IStartTrialLicenseRequest)` method:: deleted -`StartTrialLicense(Func)` method:: deleted -`StartTrialLicenseAsync(IStartTrialLicenseRequest, CancellationToken)` method:: deleted -`StartTrialLicenseAsync(Func, CancellationToken)` method:: deleted -`StartWatcher(IStartWatcherRequest)` method:: deleted -`StartWatcher(Func)` method:: deleted -`StartWatcherAsync(IStartWatcherRequest, CancellationToken)` method:: deleted -`StartWatcherAsync(Func, CancellationToken)` method:: deleted -`StopDatafeed(Id, Func)` method:: deleted -`StopDatafeed(IStopDatafeedRequest)` method:: deleted -`StopDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`StopDatafeedAsync(IStopDatafeedRequest, CancellationToken)` method:: deleted -`StopIlm(IStopIlmRequest)` method:: deleted -`StopIlm(Func)` method:: deleted -`StopIlmAsync(IStopIlmRequest, CancellationToken)` method:: deleted -`StopIlmAsync(Func, CancellationToken)` method:: deleted -`StopRollupJob(Id, Func)` method:: deleted -`StopRollupJob(IStopRollupJobRequest)` method:: deleted -`StopRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`StopRollupJobAsync(IStopRollupJobRequest, CancellationToken)` method:: deleted -`StopWatcher(IStopWatcherRequest)` method:: deleted -`StopWatcher(Func)` method:: deleted -`StopWatcherAsync(IStopWatcherRequest, CancellationToken)` method:: deleted -`StopWatcherAsync(Func, CancellationToken)` method:: deleted -`SyncedFlush(Indices, Func)` method:: deleted -`SyncedFlush(ISyncedFlushRequest)` method:: deleted -`SyncedFlushAsync(Indices, Func, CancellationToken)` method:: deleted -`SyncedFlushAsync(ISyncedFlushRequest, CancellationToken)` method:: deleted -`TermVectors(ITermVectorsRequest)` method:: deleted -`TermVectors(ITermVectorsRequest)` method:: added -`TermVectors(Func, ITermVectorsRequest>)` method:: deleted -`TermVectors(Func, ITermVectorsRequest>)` method:: added -`TermVectorsAsync(ITermVectorsRequest, CancellationToken)` method:: deleted -`TermVectorsAsync(ITermVectorsRequest, CancellationToken)` method:: added -`TermVectorsAsync(Func, ITermVectorsRequest>, CancellationToken)` method:: deleted -`TermVectorsAsync(Func, ITermVectorsRequest>, CancellationToken)` method:: added -`TranslateSql(ITranslateSqlRequest)` method:: deleted -`TranslateSql(Func)` method:: deleted -`TranslateSqlAsync(ITranslateSqlRequest, CancellationToken)` method:: deleted -`TranslateSqlAsync(Func, CancellationToken)` method:: deleted -`TypeExists(Indices, Types, Func)` method:: deleted -`TypeExists(ITypeExistsRequest)` method:: deleted -`TypeExistsAsync(Indices, Types, Func, CancellationToken)` method:: deleted -`TypeExistsAsync(ITypeExistsRequest, CancellationToken)` method:: deleted -`UnfollowIndex(IndexName, Func)` method:: deleted -`UnfollowIndex(IUnfollowIndexRequest)` method:: deleted -`UnfollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`UnfollowIndexAsync(IUnfollowIndexRequest, CancellationToken)` method:: deleted -`Update(DocumentPath, Func, IUpdateRequest>)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`Update(DocumentPath, Func, IUpdateRequest>)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`Update(IUpdateRequest)` method:: deleted -`Update(IUpdateRequest)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`UpdateAsync(DocumentPath, Func, IUpdateRequest>, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateAsync(DocumentPath, Func, IUpdateRequest>, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateAsync(IUpdateRequest, CancellationToken)` method:: deleted -`UpdateAsync(IUpdateRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateByQuery(IUpdateByQueryRequest)` method:: -Member type changed from `IUpdateByQueryResponse` to `UpdateByQueryResponse`. -`UpdateByQuery(Func, IUpdateByQueryRequest>)` method:: deleted -`UpdateByQuery(Func, IUpdateByQueryRequest>)` method:: added -`UpdateByQueryAsync(IUpdateByQueryRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateByQueryAsync(Func, IUpdateByQueryRequest>, CancellationToken)` method:: deleted -`UpdateByQueryAsync(Func, IUpdateByQueryRequest>, CancellationToken)` method:: added -`UpdateByQueryRethrottle(IUpdateByQueryRethrottleRequest)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`UpdateByQueryRethrottle(TaskId, Func)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`UpdateByQueryRethrottleAsync(IUpdateByQueryRethrottleRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateByQueryRethrottleAsync(TaskId, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateDatafeed(Id, Func, IUpdateDatafeedRequest>)` method:: deleted -`UpdateDatafeed(IUpdateDatafeedRequest)` method:: deleted -`UpdateDatafeedAsync(Id, Func, IUpdateDatafeedRequest>, CancellationToken)` method:: deleted -`UpdateDatafeedAsync(IUpdateDatafeedRequest, CancellationToken)` method:: deleted -`UpdateFilter(Id, Func)` method:: deleted -`UpdateFilter(IUpdateFilterRequest)` method:: deleted -`UpdateFilterAsync(Id, Func, CancellationToken)` method:: deleted -`UpdateFilterAsync(IUpdateFilterRequest, CancellationToken)` method:: deleted -`UpdateIndexSettings(Indices, Func)` method:: deleted -`UpdateIndexSettings(IUpdateIndexSettingsRequest)` method:: deleted -`UpdateIndexSettingsAsync(Indices, Func, CancellationToken)` method:: deleted -`UpdateIndexSettingsAsync(IUpdateIndexSettingsRequest, CancellationToken)` method:: deleted -`UpdateJob(Id, Func, IUpdateJobRequest>)` method:: deleted -`UpdateJob(IUpdateJobRequest)` method:: deleted -`UpdateJobAsync(Id, Func, IUpdateJobRequest>, CancellationToken)` method:: deleted -`UpdateJobAsync(IUpdateJobRequest, CancellationToken)` method:: deleted -`UpdateModelSnapshot(Id, Id, Func)` method:: deleted -`UpdateModelSnapshot(IUpdateModelSnapshotRequest)` method:: deleted -`UpdateModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`UpdateModelSnapshotAsync(IUpdateModelSnapshotRequest, CancellationToken)` method:: deleted -`Upgrade(Indices, Func)` method:: deleted -`Upgrade(IUpgradeRequest)` method:: deleted -`UpgradeAsync(Indices, Func, CancellationToken)` method:: deleted -`UpgradeAsync(IUpgradeRequest, CancellationToken)` method:: deleted -`UpgradeStatus(IUpgradeStatusRequest)` method:: deleted -`UpgradeStatus(Func)` method:: deleted -`UpgradeStatusAsync(IUpgradeStatusRequest, CancellationToken)` method:: deleted -`UpgradeStatusAsync(Func, CancellationToken)` method:: deleted -`ValidateDetector(IValidateDetectorRequest)` method:: deleted -`ValidateDetector(Func, IValidateDetectorRequest>)` method:: deleted -`ValidateDetectorAsync(IValidateDetectorRequest, CancellationToken)` method:: deleted -`ValidateDetectorAsync(Func, IValidateDetectorRequest>, CancellationToken)` method:: deleted -`ValidateJob(IValidateJobRequest)` method:: deleted -`ValidateJob(Func, IValidateJobRequest>)` method:: deleted -`ValidateJobAsync(IValidateJobRequest, CancellationToken)` method:: deleted -`ValidateJobAsync(Func, IValidateJobRequest>, CancellationToken)` method:: deleted -`ValidateQuery(IValidateQueryRequest)` method:: deleted -`ValidateQuery(Func, IValidateQueryRequest>)` method:: deleted -`ValidateQueryAsync(IValidateQueryRequest, CancellationToken)` method:: deleted -`ValidateQueryAsync(Func, IValidateQueryRequest>, CancellationToken)` method:: deleted -`VerifyRepository(IVerifyRepositoryRequest)` method:: deleted -`VerifyRepository(Name, Func)` method:: deleted -`VerifyRepositoryAsync(IVerifyRepositoryRequest, CancellationToken)` method:: deleted -`VerifyRepositoryAsync(Name, Func, CancellationToken)` method:: deleted -`WatcherStats(IWatcherStatsRequest)` method:: deleted -`WatcherStats(Func)` method:: deleted -`WatcherStatsAsync(IWatcherStatsRequest, CancellationToken)` method:: deleted -`WatcherStatsAsync(Func, CancellationToken)` method:: deleted -`XPackInfo(IXPackInfoRequest)` method:: deleted -`XPackInfo(Func)` method:: deleted -`XPackInfoAsync(IXPackInfoRequest, CancellationToken)` method:: deleted -`XPackInfoAsync(Func, CancellationToken)` method:: deleted -`XPackUsage(IXPackUsageRequest)` method:: deleted -`XPackUsage(Func)` method:: deleted -`XPackUsageAsync(IXPackUsageRequest, CancellationToken)` method:: deleted -`XPackUsageAsync(Func, CancellationToken)` method:: deleted -`Cat` property:: added -`Cluster` property:: added -`CrossClusterReplication` property:: added -`Graph` property:: added -`IndexLifecycleManagement` property:: added -`Indices` property:: added -`Ingest` property:: added -`License` property:: added -`MachineLearning` property:: added -`Migration` property:: added -`Nodes` property:: added -`Rollup` property:: added -`Security` property:: added -`Snapshot` property:: added -`Sql` property:: added -`Tasks` property:: added -`Watcher` property:: added -`XPack` property:: added - - - -[discrete] -==== `Nest.ElasticsearchPropertyAttributeBase` - -[horizontal] -`AllowPrivate` property:: added -`Order` property:: added - -[discrete] -==== `Nest.ElasticsearchTypeAttribute` - -[horizontal] -`RelationName` property:: added - -[discrete] -==== `Nest.ElasticsearchVersionInfo` - -[horizontal] -`BuildDate` property:: added -`BuildFlavor` property:: added -`BuildHash` property:: added -`BuildSnapshot` property:: added -`BuildType` property:: added -`IsSnapShotBuild` property:: deleted -`MinimumIndexCompatibilityVersion` property:: added -`MinimumWireCompatibilityVersion` property:: added - - - - -[discrete] -==== `Nest.EnableUserDescriptor` - -[horizontal] -`EnableUserDescriptor()` method:: -Member is less visible. -`Username(Name)` method:: deleted - -[discrete] -==== `Nest.EnableUserRequest` - -[horizontal] -`EnableUserRequest()` method:: added - -[discrete] -==== `Nest.EnvelopeGeoShape` - -[horizontal] -`EnvelopeGeoShape()` method:: -Member is less visible. - - - - -[discrete] -==== `Nest.ExecuteWatchDescriptor` - -[horizontal] -`ExecuteWatchDescriptor(Id)` method:: added -`Watch(Func)` method:: deleted -`Watch(Func)` method:: added - -[discrete] -==== `Nest.ExecuteWatchRequest` - -[horizontal] - -[discrete] -==== `Nest.ExecuteWatchResponse` - -[horizontal] -`Id` property getter:: -changed to non-virtual. -`Id` property setter:: -changed to non-virtual. -`WatchRecord` property getter:: -changed to non-virtual. -`WatchRecord` property setter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.ExecutionResultAction` - -[horizontal] -`HipChat` property:: deleted - - - - - -[discrete] -==== `Nest.ExistsQueryDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.ExistsResponse` - -[horizontal] -`Exists` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ExplainDescriptor` - -[horizontal] -`ExplainDescriptor()` method:: added -`ExplainDescriptor(DocumentPath)` method:: deleted -`ExplainDescriptor(Id)` method:: added -`ExplainDescriptor(IndexName, Id)` method:: added -`ExplainDescriptor(IndexName, TypeName, Id)` method:: deleted -`ExplainDescriptor(TDocument, IndexName, Id)` method:: added -`AnalyzeWildcard(Nullable)` method:: -Parameter name changed from `analyzeWildcard` to `analyzewildcard`. -`DefaultOperator(Nullable)` method:: -Parameter name changed from `defaultOperator` to `defaultoperator`. -`Parent(String)` method:: deleted -`QueryOnQueryString(String)` method:: -Parameter name changed from `queryOnQueryString` to `queryonquerystring`. -`SourceEnabled(Nullable)` method:: -Parameter name changed from `sourceEnabled` to `sourceenabled`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.ExplainLifecycleDescriptor` - -[horizontal] -`ExplainLifecycleDescriptor()` method:: added -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.ExplainLifecycleRequest` - -[horizontal] -`ExplainLifecycleRequest()` method:: added -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.ExplainLifecycleResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ExplainRequest` - -[horizontal] -type:: added - -[discrete] -==== `Nest.ExplainRequest` - -[horizontal] -`ExplainRequest()` method:: added -`ExplainRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`ExplainRequest(Id)` method:: added -`ExplainRequest(IndexName, Id)` method:: added -`ExplainRequest(IndexName, TypeName, Id)` method:: deleted -`ExplainRequest(TDocument, IndexName, Id)` method:: added -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`Lenient` property:: deleted -`Parent` property:: deleted -`Preference` property:: deleted -`Query` property:: deleted -`QueryOnQueryString` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`StoredFields` property:: deleted -`TypedSelf` property:: added - -[discrete] -==== `Nest.ExplainResponse` - -[horizontal] -`Explanation` property getter:: -changed to non-virtual. -`Matched` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.ExpressionExtensions` - -[horizontal] -`AppendSuffix(Expression>, String)` method:: added - - -[discrete] -==== `Nest.ExtendedStatsAggregate` - -[horizontal] -`Average` property:: deleted -`Count` property:: deleted -`Max` property:: deleted -`Min` property:: deleted -`Sum` property:: deleted - -[discrete] -==== `Nest.Field` - -[horizontal] -`Field(Expression, Nullable)` method:: deleted -`Field(PropertyInfo, Nullable)` method:: deleted -`Field(String, Nullable)` method:: deleted -`And(Expression>, Nullable)` method:: deleted -`And(Expression>, Nullable, String)` method:: added -`And(PropertyInfo, Nullable)` method:: deleted -`And(String, Nullable)` method:: deleted - -[discrete] -==== `Nest.FieldAliasPropertyDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - - -[discrete] -==== `Nest.FieldCapabilitiesDescriptor` - -[horizontal] -`FieldCapabilitiesDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. - - -[discrete] -==== `Nest.FieldCapabilitiesResponse` - -[horizontal] -`Fields` property getter:: -changed to non-virtual. -`Shards` property:: deleted - -[discrete] -==== `Nest.FieldCollapseDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.FielddataStats` - -[horizontal] -`MemorySize` property:: deleted - -[discrete] -==== `Nest.FieldIndexOption` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.FieldLookup` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.FieldLookupDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added -`Type(TypeName)` method:: deleted - - -[discrete] -==== `Nest.FieldMappingProperties` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.FieldNameQueryDescriptorBase` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.Fields` - -[horizontal] -`And(Expression>, Nullable)` method:: deleted -`And(Expression>, Nullable, String)` method:: deleted -`And(Expression>, Nullable, String)` method:: added -`And(PropertyInfo, Nullable, String)` method:: deleted -`And(String, Nullable)` method:: deleted - -[discrete] -==== `Nest.FieldsDescriptor` - -[horizontal] -`Field(Expression>, Nullable)` method:: deleted -`Field(Expression>, Nullable, String)` method:: deleted -`Field(Expression>, Nullable, String)` method:: added -`Field(String, Nullable)` method:: deleted - - -[discrete] -==== `Nest.FieldSort` - -[horizontal] -type:: added - -[discrete] -==== `Nest.FieldSortDescriptor` - -[horizontal] -type:: added - - - -[discrete] -==== `Nest.FieldTypes` - -[horizontal] -`ParentJoin` property:: added - -[discrete] -==== `Nest.FieldValueFactorFunctionDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - - - - - -[discrete] -==== `Nest.FiltersAggregation` - -[horizontal] - - - -[discrete] -==== `Nest.FlushDescriptor` - -[horizontal] -`FlushDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`WaitIfOngoing(Nullable)` method:: -Parameter name changed from `waitIfOngoing` to `waitifongoing`. - -[discrete] -==== `Nest.FlushJobDescriptor` - -[horizontal] -`FlushJobDescriptor()` method:: added -`FlushJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`SkipTime(String)` method:: -Parameter name changed from `skipTime` to `skiptime`. - -[discrete] -==== `Nest.FlushJobRequest` - -[horizontal] -`FlushJobRequest()` method:: added -`FlushJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.FlushJobResponse` - -[horizontal] -`Flushed` property getter:: -changed to non-virtual. - - - - - -[discrete] -==== `Nest.FollowIndexStatsDescriptor` - -[horizontal] -`FollowIndexStatsDescriptor()` method:: -Member is less visible. -`FollowIndexStatsDescriptor(Indices)` method:: added - -[discrete] -==== `Nest.FollowIndexStatsRequest` - -[horizontal] -`FollowIndexStatsRequest()` method:: added - -[discrete] -==== `Nest.FollowIndexStatsResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ForceMergeDescriptor` - -[horizontal] -`ForceMergeDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MaxNumSegments(Nullable)` method:: -Parameter name changed from `maxNumSegments` to `maxnumsegments`. -`OnlyExpungeDeletes(Nullable)` method:: -Parameter name changed from `onlyExpungeDeletes` to `onlyexpungedeletes`. -`OperationThreading(String)` method:: deleted -`WaitForMerge(Nullable)` method:: deleted - -[discrete] -==== `Nest.ForceMergeRequest` - -[horizontal] -`OperationThreading` property:: deleted -`WaitForMerge` property:: deleted - -[discrete] -==== `Nest.ForeachProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.ForecastIds` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ForecastJobDescriptor` - -[horizontal] -`ForecastJobDescriptor()` method:: added -`ForecastJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.ForecastJobRequest` - -[horizontal] -`ForecastJobRequest()` method:: added -`ForecastJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.ForecastJobResponse` - -[horizontal] -`ForecastId` property getter:: -changed to non-virtual. - - - - - -[discrete] -==== `Nest.FuzzySuggestDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.FuzzySuggester` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.GenericProperty` - -[horizontal] -`Index` property getter:: -`Index` property setter:: -`Indexed` property:: deleted - -[discrete] -==== `Nest.GenericPropertyDescriptor` - -[horizontal] -`Index(Nullable)` method:: deleted -`NotAnalyzed()` method:: deleted - - - -[discrete] -==== `Nest.GeoDistanceAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.GeoDistanceSort` - -[horizontal] -`GeoUnit` property:: deleted -`Unit` property:: added - -[discrete] -==== `Nest.GeoDistanceSortDescriptor` - -[horizontal] -type:: added - - - -[discrete] -==== `Nest.GeoHashGridAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.GeoIndexedShapeQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoIndexedShapeQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoIpProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - -[discrete] -==== `Nest.GeometryCollection` - -[horizontal] -`GeometryCollection()` method:: -Member is less visible. -`GeometryCollection(IEnumerable)` method:: added -`IgnoreUnmapped` property:: deleted -`Type` property:: deleted - - - -[discrete] -==== `Nest.GeoShapeAttribute` - -[horizontal] -`DistanceErrorPercentage` property:: deleted -`PointsOnly` property:: deleted -`Tree` property:: deleted -`TreeLevels` property:: deleted - -[discrete] -==== `Nest.GeoShapeBase` - -[horizontal] -`IgnoreUnmapped` property:: deleted - -[discrete] -==== `Nest.GeoShapeCircleQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeCircleQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.GeoShapeEnvelopeQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeEnvelopeQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeGeometryCollectionQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeGeometryCollectionQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeLineStringQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeLineStringQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiLineStringQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiLineStringQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiPointQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiPointQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiPolygonQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeMultiPolygonQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapePointQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapePointQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapePolygonQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapePolygonQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeProperty` - -[horizontal] -`DistanceErrorPercentage` property:: deleted -`PointsOnly` property:: deleted -`Precision` property:: deleted -`Tree` property:: deleted -`TreeLevels` property:: deleted - -[discrete] -==== `Nest.GeoShapePropertyDescriptor` - -[horizontal] -`DistanceErrorPercentage(Nullable)` method:: deleted -`PointsOnly(Nullable)` method:: deleted -`Precision(Double, DistanceUnit)` method:: deleted -`Tree(Nullable)` method:: deleted -`TreeLevels(Nullable)` method:: deleted - -[discrete] -==== `Nest.GeoShapeQuery` - -[horizontal] -type:: added - -[discrete] -==== `Nest.GeoShapeQueryBase` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.GeoShapeQueryDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.GeoShapeQueryDescriptorBase` - -[horizontal] -type:: deleted - - - - - - - -[discrete] -==== `Nest.GeoWKTWriter` - -[horizontal] -`Write(IGeometryCollection)` method:: deleted - -[discrete] -==== `Nest.GetAliasDescriptor` - -[horizontal] -`GetAliasDescriptor(Indices)` method:: added -`GetAliasDescriptor(Indices, Names)` method:: added -`GetAliasDescriptor(Names)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. - -[discrete] -==== `Nest.GetAliasResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetAnomalyRecordsDescriptor` - -[horizontal] -`GetAnomalyRecordsDescriptor()` method:: -Member is less visible. -`GetAnomalyRecordsDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetAnomalyRecordsRequest` - -[horizontal] -`GetAnomalyRecordsRequest()` method:: added -`GetAnomalyRecordsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetAnomalyRecordsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Records` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetApiKeyDescriptor` - -[horizontal] -`RealmName(String)` method:: -Parameter name changed from `realmName` to `realmname`. - -[discrete] -==== `Nest.GetApiKeyResponse` - -[horizontal] -`ApiKeys` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetAutoFollowPatternDescriptor` - -[horizontal] -`GetAutoFollowPatternDescriptor(Name)` method:: added - -[discrete] -==== `Nest.GetAutoFollowPatternResponse` - -[horizontal] -`Patterns` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetBasicLicenseStatusResponse` - -[horizontal] -`EligableToStartBasic` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetBucketsDescriptor` - -[horizontal] -`GetBucketsDescriptor()` method:: added -`GetBucketsDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetBucketsDescriptor(Id, Timestamp)` method:: added -`Timestamp(Timestamp)` method:: added -`Timestamp(Nullable)` method:: deleted - -[discrete] -==== `Nest.GetBucketsRequest` - -[horizontal] -`GetBucketsRequest()` method:: added -`GetBucketsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetBucketsRequest(Id, Timestamp)` method:: added -`Timestamp` property:: deleted - -[discrete] -==== `Nest.GetBucketsResponse` - -[horizontal] -`Buckets` property getter:: -changed to non-virtual. -`Count` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetCalendarEventsDescriptor` - -[horizontal] -`GetCalendarEventsDescriptor()` method:: added -`GetCalendarEventsDescriptor(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. -`JobId(String)` method:: -Parameter name changed from `jobId` to `jobid`. - -[discrete] -==== `Nest.GetCalendarEventsRequest` - -[horizontal] -`GetCalendarEventsRequest()` method:: added -`GetCalendarEventsRequest(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.GetCalendarEventsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Events` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetCalendarsDescriptor` - -[horizontal] -`GetCalendarsDescriptor(Id)` method:: added - -[discrete] -==== `Nest.GetCalendarsRequest` - -[horizontal] -`GetCalendarsRequest(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.GetCalendarsResponse` - -[horizontal] -`Calendars` property getter:: -changed to non-virtual. -`Count` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetCategoriesDescriptor` - -[horizontal] -`GetCategoriesDescriptor()` method:: added -`GetCategoriesDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetCategoriesDescriptor(Id, LongId)` method:: added -`CategoryId(CategoryId)` method:: deleted -`CategoryId(LongId)` method:: added - -[discrete] -==== `Nest.GetCategoriesRequest` - -[horizontal] -`GetCategoriesRequest()` method:: added -`GetCategoriesRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetCategoriesRequest(Id, CategoryId)` method:: deleted -`GetCategoriesRequest(Id, LongId)` method:: added - -[discrete] -==== `Nest.GetCategoriesResponse` - -[horizontal] -`Categories` property getter:: -changed to non-virtual. -`Count` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetCertificatesDescriptor` - -[horizontal] -`RequestDefaults(GetCertificatesRequestParameters)` method:: added - -[discrete] -==== `Nest.GetCertificatesRequest` - -[horizontal] -`RequestDefaults(GetCertificatesRequestParameters)` method:: added - -[discrete] -==== `Nest.GetCertificatesResponse` - -[horizontal] -`Certificates` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetDatafeedsDescriptor` - -[horizontal] -`GetDatafeedsDescriptor(Id)` method:: added -`AllowNoDatafeeds(Nullable)` method:: -Parameter name changed from `allowNoDatafeeds` to `allownodatafeeds`. - -[discrete] -==== `Nest.GetDatafeedsRequest` - -[horizontal] -`GetDatafeedsRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.GetDatafeedsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Datafeeds` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetDatafeedStatsDescriptor` - -[horizontal] -`GetDatafeedStatsDescriptor(Id)` method:: added -`AllowNoDatafeeds(Nullable)` method:: -Parameter name changed from `allowNoDatafeeds` to `allownodatafeeds`. - -[discrete] -==== `Nest.GetDatafeedStatsRequest` - -[horizontal] -`GetDatafeedStatsRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.GetDatafeedStatsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Datafeeds` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetDescriptor` - -[horizontal] -`GetDescriptor()` method:: added -`GetDescriptor(DocumentPath)` method:: deleted -`GetDescriptor(Id)` method:: added -`GetDescriptor(IndexName, Id)` method:: added -`GetDescriptor(IndexName, TypeName, Id)` method:: deleted -`GetDescriptor(TDocument, IndexName, Id)` method:: added -`ExecuteOnLocalShard()` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`ExecuteOnPrimary()` method:: deleted -`Index()` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`Index(IndexName)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`Parent(String)` method:: deleted -`Preference(String)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`Realtime(Nullable)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`Routing(Routing)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`StoredFields(Fields)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`StoredFields(Expression>[])` method:: deleted -`StoredFields(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `GetDescriptor` to `GetDescriptor`. - -[discrete] -==== `Nest.GetFieldMappingDescriptor` - -[horizontal] -`GetFieldMappingDescriptor()` method:: added -`GetFieldMappingDescriptor(Indices, Fields)` method:: added -`AllIndices()` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`AllTypes()` method:: deleted -`ExpandWildcards(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`IncludeDefaults(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`IncludeTypeName(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`Index()` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`Index(Indices)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`Local(Nullable)` method:: -Member type changed from `GetFieldMappingDescriptor` to `GetFieldMappingDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted - -[discrete] -==== `Nest.GetFieldMappingRequest` - -[horizontal] -`GetFieldMappingRequest()` method:: added -`GetFieldMappingRequest(Indices, Types, Fields)` method:: deleted -`GetFieldMappingRequest(Types, Fields)` method:: deleted - -[discrete] -==== `Nest.GetFieldMappingResponse` - -[horizontal] -`GetMapping(IndexName, Field)` method:: added -`GetMapping(IndexName, TypeName, Field)` method:: deleted -`MappingFor(Field)` method:: added -`MappingFor(Field, IndexName)` method:: added -`MappingFor(Field, IndexName, TypeName)` method:: deleted -`MappingFor(Expression>, IndexName)` method:: added -`MappingFor(Expression>, IndexName, TypeName)` method:: deleted -`MappingFor(Expression>, IndexName)` method:: added -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetFiltersDescriptor` - -[horizontal] -`GetFiltersDescriptor(Id)` method:: added - -[discrete] -==== `Nest.GetFiltersRequest` - -[horizontal] -`GetFiltersRequest(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.GetFiltersResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Filters` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetIlmStatusDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.GetIlmStatusRequest` - -[horizontal] -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.GetIlmStatusResponse` - -[horizontal] -`OperationMode` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetIndexDescriptor` - -[horizontal] -`GetIndexDescriptor()` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`IncludeDefaults(Nullable)` method:: -Parameter name changed from `includeDefaults` to `includedefaults`. -`IncludeTypeName(Nullable)` method:: -Parameter name changed from `includeTypeName` to `includetypename`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetIndexRequest` - -[horizontal] -`GetIndexRequest()` method:: added - -[discrete] -==== `Nest.GetIndexResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetIndexSettingsDescriptor` - -[horizontal] -`GetIndexSettingsDescriptor(Indices)` method:: added -`GetIndexSettingsDescriptor(Indices, Names)` method:: added -`GetIndexSettingsDescriptor(Names)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`IncludeDefaults(Nullable)` method:: -Parameter name changed from `includeDefaults` to `includedefaults`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetIndexSettingsResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetIndexTemplateDescriptor` - -[horizontal] -`GetIndexTemplateDescriptor(Names)` method:: added -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IncludeTypeName(Nullable)` method:: -Parameter name changed from `includeTypeName` to `includetypename`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetIndexTemplateResponse` - -[horizontal] -`TemplateMappings` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetInfluencersDescriptor` - -[horizontal] -`GetInfluencersDescriptor()` method:: -Member is less visible. -`GetInfluencersDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetInfluencersRequest` - -[horizontal] -`GetInfluencersRequest()` method:: added -`GetInfluencersRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetInfluencersResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Influencers` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetJobsDescriptor` - -[horizontal] -`GetJobsDescriptor(Id)` method:: added -`AllowNoJobs(Nullable)` method:: -Parameter name changed from `allowNoJobs` to `allownojobs`. - -[discrete] -==== `Nest.GetJobsRequest` - -[horizontal] -`GetJobsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetJobsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Jobs` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetJobStatsDescriptor` - -[horizontal] -`GetJobStatsDescriptor(Id)` method:: added -`AllowNoJobs(Nullable)` method:: -Parameter name changed from `allowNoJobs` to `allownojobs`. - -[discrete] -==== `Nest.GetJobStatsRequest` - -[horizontal] -`GetJobStatsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetJobStatsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`Jobs` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.GetLicenseResponse` - -[horizontal] -`License` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetLifecycleDescriptor` - -[horizontal] -`GetLifecycleDescriptor(Id)` method:: added -`MasterTimeout(Time)` method:: deleted -`PolicyId(Id)` method:: added -`PolicyId(PolicyId)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.GetLifecycleRequest` - -[horizontal] -`GetLifecycleRequest(Id)` method:: added -`GetLifecycleRequest(PolicyId)` method:: deleted -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.GetLifecycleResponse` - -[horizontal] -`Policies` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetManyExtensions` - -[horizontal] -`GetMany(IElasticClient, IEnumerable, IndexName)` method:: added -`GetMany(IElasticClient, IEnumerable, IndexName, TypeName)` method:: deleted -`GetMany(IElasticClient, IEnumerable, IndexName)` method:: added -`GetMany(IElasticClient, IEnumerable, IndexName, TypeName)` method:: deleted -`GetManyAsync(IElasticClient, IEnumerable, IndexName, TypeName, CancellationToken)` method:: deleted -`GetManyAsync(IElasticClient, IEnumerable, IndexName, CancellationToken)` method:: added -`GetManyAsync(IElasticClient, IEnumerable, IndexName, TypeName, CancellationToken)` method:: deleted -`GetManyAsync(IElasticClient, IEnumerable, IndexName, CancellationToken)` method:: added - -[discrete] -==== `Nest.GetMappingDescriptor` - -[horizontal] -`GetMappingDescriptor(Indices)` method:: added -`AllIndices()` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`AllTypes()` method:: deleted -`ExpandWildcards(Nullable)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`IncludeTypeName(Nullable)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`Index()` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`Index(Indices)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`Local(Nullable)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`MasterTimeout(Time)` method:: -Member type changed from `GetMappingDescriptor` to `GetMappingDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted - -[discrete] -==== `Nest.GetMappingRequest` - -[horizontal] -`GetMappingRequest(Indices, Types)` method:: deleted -`GetMappingRequest(Types)` method:: deleted - -[discrete] -==== `Nest.GetMappingResponse` - -[horizontal] -`Accept(IMappingVisitor)` method:: -Method changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`Mapping` property:: deleted -`Mappings` property:: deleted - -[discrete] -==== `Nest.GetMappingResponseExtensions` - -[horizontal] -`GetMappingFor(GetMappingResponse)` method:: added -`GetMappingFor(GetMappingResponse, IndexName)` method:: added -`GetMappingFor(IGetMappingResponse)` method:: deleted -`GetMappingFor(IGetMappingResponse, IndexName)` method:: deleted -`GetMappingFor(IGetMappingResponse, IndexName, TypeName)` method:: deleted - -[discrete] -==== `Nest.GetModelSnapshotsDescriptor` - -[horizontal] -`GetModelSnapshotsDescriptor()` method:: added -`GetModelSnapshotsDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetModelSnapshotsDescriptor(Id, Id)` method:: added - -[discrete] -==== `Nest.GetModelSnapshotsRequest` - -[horizontal] -`GetModelSnapshotsRequest()` method:: added -`GetModelSnapshotsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`GetModelSnapshotsRequest(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetModelSnapshotsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`ModelSnapshots` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetOverallBucketsDescriptor` - -[horizontal] -`GetOverallBucketsDescriptor()` method:: added -`GetOverallBucketsDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetOverallBucketsRequest` - -[horizontal] -`GetOverallBucketsRequest()` method:: added -`GetOverallBucketsRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.GetOverallBucketsResponse` - -[horizontal] -`Count` property getter:: -changed to non-virtual. -`OverallBuckets` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetPipelineDescriptor` - -[horizontal] -`GetPipelineDescriptor(Id)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetPipelineResponse` - -[horizontal] -`Pipelines` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetPrivilegesDescriptor` - -[horizontal] -`GetPrivilegesDescriptor(Name)` method:: added -`GetPrivilegesDescriptor(Name, Name)` method:: added - -[discrete] -==== `Nest.GetPrivilegesResponse` - -[horizontal] -`Applications` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRepositoryDescriptor` - -[horizontal] -`GetRepositoryDescriptor(Names)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetRepositoryResponse` - -[horizontal] -`Azure(String)` method:: -Method changed to non-virtual. -`FileSystem(String)` method:: -Method changed to non-virtual. -`Hdfs(String)` method:: -Method changed to non-virtual. -`ReadOnlyUrl(String)` method:: -Method changed to non-virtual. -`S3(String)` method:: -Method changed to non-virtual. -`Repositories` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRequest` - -[horizontal] -`GetRequest()` method:: added -`GetRequest(IndexName, Id)` method:: added -`GetRequest(IndexName, TypeName, Id)` method:: deleted -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.GetRequest` - -[horizontal] -`GetRequest()` method:: added -`GetRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`GetRequest(Id)` method:: added -`GetRequest(IndexName, Id)` method:: added -`GetRequest(IndexName, TypeName, Id)` method:: deleted -`GetRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted -`Preference` property:: deleted -`Realtime` property:: deleted -`Refresh` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`StoredFields` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Nest.GetResponse` - -[horizontal] -`Fields` property getter:: -changed to non-virtual. -`Found` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Index` property getter:: -changed to non-virtual. -`Parent` property:: deleted -`PrimaryTerm` property getter:: -changed to non-virtual. -`Routing` property getter:: -changed to non-virtual. -`SequenceNumber` property getter:: -changed to non-virtual. -`Type` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRoleDescriptor` - -[horizontal] -`GetRoleDescriptor(Name)` method:: added - -[discrete] -==== `Nest.GetRoleMappingDescriptor` - -[horizontal] -`GetRoleMappingDescriptor(Name)` method:: added - -[discrete] -==== `Nest.GetRoleMappingResponse` - -[horizontal] -`RoleMappings` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRoleResponse` - -[horizontal] -`Roles` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRollupCapabilitiesDescriptor` - -[horizontal] -`GetRollupCapabilitiesDescriptor(Id)` method:: added -`AllIndices()` method:: deleted -`Id(Id)` method:: added -`Index()` method:: deleted -`Index(Indices)` method:: deleted - -[discrete] -==== `Nest.GetRollupCapabilitiesRequest` - -[horizontal] -`GetRollupCapabilitiesRequest(Id)` method:: added -`GetRollupCapabilitiesRequest(Indices)` method:: deleted - -[discrete] -==== `Nest.GetRollupCapabilitiesResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRollupIndexCapabilitiesDescriptor` - -[horizontal] -`GetRollupIndexCapabilitiesDescriptor()` method:: added - -[discrete] -==== `Nest.GetRollupIndexCapabilitiesRequest` - -[horizontal] -`GetRollupIndexCapabilitiesRequest()` method:: added - -[discrete] -==== `Nest.GetRollupIndexCapabilitiesResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetRollupJobDescriptor` - -[horizontal] -`GetRollupJobDescriptor(Id)` method:: added - -[discrete] -==== `Nest.GetRollupJobResponse` - -[horizontal] -`Jobs` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetScriptDescriptor` - -[horizontal] -`GetScriptDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetScriptRequest` - -[horizontal] -`GetScriptRequest()` method:: added - -[discrete] -==== `Nest.GetScriptResponse` - -[horizontal] -`Script` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetSnapshotDescriptor` - -[horizontal] -`GetSnapshotDescriptor()` method:: added -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.GetSnapshotRequest` - -[horizontal] -`GetSnapshotRequest()` method:: added - -[discrete] -==== `Nest.GetSnapshotResponse` - -[horizontal] -`Snapshots` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.GetTaskDescriptor` - -[horizontal] -`GetTaskDescriptor()` method:: -Member is less visible. -`GetTaskDescriptor(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. -`TaskId(TaskId)` method:: deleted -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.GetTaskRequest` - -[horizontal] -`GetTaskRequest()` method:: added -`GetTaskRequest(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. - -[discrete] -==== `Nest.GetTaskResponse` - -[horizontal] -`Completed` property getter:: -changed to non-virtual. -`Task` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.GetTrialLicenseStatusResponse` - -[horizontal] -`EligibleToStartTrial` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.GetUserAccessTokenResponse` - -[horizontal] -`AccessToken` property getter:: -changed to non-virtual. -`AccessToken` property setter:: -changed to non-virtual. -`ExpiresIn` property getter:: -changed to non-virtual. -`ExpiresIn` property setter:: -changed to non-virtual. -`Scope` property getter:: -changed to non-virtual. -`Scope` property setter:: -changed to non-virtual. -`Type` property getter:: -changed to non-virtual. -`Type` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetUserDescriptor` - -[horizontal] -`GetUserDescriptor(Names)` method:: added - -[discrete] -==== `Nest.GetUserPrivilegesResponse` - -[horizontal] -`Applications` property getter:: -changed to non-virtual. -`Cluster` property getter:: -changed to non-virtual. -`Global` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`RunAs` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetUserResponse` - -[horizontal] -`Users` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GetWatchDescriptor` - -[horizontal] -`GetWatchDescriptor()` method:: added - -[discrete] -==== `Nest.GetWatchRequest` - -[horizontal] -`GetWatchRequest()` method:: added - -[discrete] -==== `Nest.GetWatchResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Status` property getter:: -changed to non-virtual. -`Watch` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.GraphExploreControlsDescriptor` - -[horizontal] -`SamleDiversity(Field, Nullable)` method:: deleted -`SamleDiversity(Expression>, Nullable)` method:: deleted -`SampleDiversity(Field, Nullable)` method:: added -`SampleDiversity(Expression>, Nullable)` method:: added - -[discrete] -==== `Nest.GraphExploreDescriptor` - -[horizontal] -`AllIndices()` method:: -Member type changed from `GraphExploreDescriptor` to `GraphExploreDescriptor`. -`AllTypes()` method:: deleted -`Connections(Func, IHop>)` method:: deleted -`Connections(Func, IHop>)` method:: added -`Controls(Func, IGraphExploreControls>)` method:: deleted -`Controls(Func, IGraphExploreControls>)` method:: added -`Index()` method:: -Member type changed from `GraphExploreDescriptor` to `GraphExploreDescriptor`. -`Index(Indices)` method:: -Member type changed from `GraphExploreDescriptor` to `GraphExploreDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`Routing(Routing)` method:: -Member type changed from `GraphExploreDescriptor` to `GraphExploreDescriptor`. -`Timeout(Time)` method:: -Member type changed from `GraphExploreDescriptor` to `GraphExploreDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`Vertices(Func, IPromise>>)` method:: deleted -`Vertices(Func, IPromise>>)` method:: added - -[discrete] -==== `Nest.GraphExploreRequest` - -[horizontal] -`GraphExploreRequest()` method:: added -`GraphExploreRequest(Indices, Types)` method:: deleted - -[discrete] -==== `Nest.GraphExploreRequest` - -[horizontal] -`GraphExploreRequest(Indices, Types)` method:: deleted -`Connections` property:: deleted -`Controls` property:: deleted -`Query` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`Timeout` property:: deleted -`TypedSelf` property:: added -`Vertices` property:: deleted - -[discrete] -==== `Nest.GraphExploreResponse` - -[horizontal] -`Connections` property getter:: -changed to non-virtual. -`Failures` property getter:: -changed to non-virtual. -`TimedOut` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. -`Vertices` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.GraphVerticesDescriptor` - -[horizontal] -`Vertex(Expression>, Func)` method:: deleted -`Vertex(Expression>, Func)` method:: added - -[discrete] -==== `Nest.GrokProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.GrokProcessorPatternsResponse` - -[horizontal] -`Patterns` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.GsubProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.HasChildQuery` - -[horizontal] - -[discrete] -==== `Nest.HasParentQuery` - -[horizontal] - -[discrete] -==== `Nest.HasPrivilegesDescriptor` - -[horizontal] -`HasPrivilegesDescriptor(Name)` method:: added - -[discrete] -==== `Nest.HasPrivilegesResponse` - -[horizontal] -`Applications` property getter:: -changed to non-virtual. -`Clusters` property getter:: -changed to non-virtual. -`HasAllRequested` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`Username` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.HighlightDescriptor` - -[horizontal] -`BoundaryCharacters(String)` method:: deleted -`BoundaryChars(String)` method:: added -`PostTags(String)` method:: deleted -`PostTags(String[])` method:: added -`PreTags(String)` method:: deleted -`PreTags(String[])` method:: added - - - - - - -[discrete] -==== `Nest.HighlightFieldDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.HighlightFieldDictionary` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HighlightHit` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatAction` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatActionDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatActionMessageResult` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatActionResult` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatMessage` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatMessageColor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatMessageDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HipChatMessageFormat` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.HistogramAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.HistogramOrder` - -[horizontal] -`Key` property getter:: -changed to virtual. -`Key` property setter:: -changed to virtual. -`Order` property getter:: -changed to virtual. -`Order` property setter:: -changed to virtual. - -[discrete] -==== `Nest.Hit` - -[horizontal] -`Highlight` property:: added -`Highlights` property:: deleted -`Nested` property getter:: -changed to virtual. -`Parent` property:: deleted -`PrimaryTerm` property:: added -`SequenceNumber` property:: added - -[discrete] -==== `Nest.HitsMetadata` - -[horizontal] -`Hits` property getter:: -changed to virtual. -`MaxScore` property getter:: -changed to virtual. -`Total` property getter:: -changed to virtual. - - - - - - - -[discrete] -==== `Nest.IAcknowledgedResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IAcknowledgeWatchRequest` - -[horizontal] - -[discrete] -==== `Nest.IAcknowledgeWatchResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IActivateWatchResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.IAnalyzeResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - -[discrete] -==== `Nest.IAuthenticateResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - -[discrete] -==== `Nest.IBoolQuery` - -[horizontal] -`ShouldSerializeFilter()` method:: added -`ShouldSerializeMust()` method:: added -`ShouldSerializeMustNot()` method:: added -`ShouldSerializeShould()` method:: added - - - - - - - - -[discrete] -==== `Nest.IBulkAliasResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IBulkAllRequest` - -[horizontal] -`Refresh` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.IBulkAllResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IBulkDeleteOperation` - -[horizontal] -`IfPrimaryTerm` property:: added -`IfSequenceNumber` property:: added - -[discrete] -==== `Nest.IBulkIndexOperation` - -[horizontal] -`IfPrimaryTerm` property:: added -`IfSequenceNumber` property:: added - -[discrete] -==== `Nest.IBulkOperation` - -[horizontal] -`Parent` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.IBulkRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IBulkResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IBulkResponseItem` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.ICancelTasksResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.ICatResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `Nest.ICcrStatsResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IChangePasswordResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `Nest.IClassicSimilarity` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClearCachedRealmsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClearCachedRolesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClearCacheResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClearScrollResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClearSqlCursorResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICloseIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICloseJobResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IClrTypeMapping` - -[horizontal] -`TypeName` property:: deleted - - -[discrete] -==== `Nest.IClusterAllocationExplainResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterGetSettingsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterHealthResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterPendingTasksResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterPutSettingsResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IClusterRerouteResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterStateResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IClusterStatsResponse` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.ICompletionSuggester` - -[horizontal] - -[discrete] -==== `Nest.ICompositeAggregation` - -[horizontal] - -[discrete] -==== `Nest.ICompositeAggregationSource` - -[horizontal] -`Missing` property:: deleted - - - - - -[discrete] -==== `Nest.IConnectionSettingsValues` - -[horizontal] -`DefaultTypeName` property:: deleted -`DefaultTypeNameInferrer` property:: deleted -`DefaultTypeNames` property:: deleted - - - -[discrete] -==== `Nest.ICoreProperty` - -[horizontal] - -[discrete] -==== `Nest.ICountRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ICountResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ICovariantSearchRequest` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateApiKeyResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateAutoFollowPatternResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateFollowIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateRepositoryResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ICreateRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ICreateResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ICreateRollupJobResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.IDateHistogramCompositeAggregationSource` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - - - -[discrete] -==== `Nest.IDateProcessor` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - - - - - - - -[discrete] -==== `Nest.IDeactivateWatchResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IDeleteAliasResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteAutoFollowPatternResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IDeleteByQueryRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IDeleteByQueryResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IDeleteCalendarEventResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteCalendarJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteCalendarResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteDatafeedResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteExpiredDataResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteFilterResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IDeleteForecastRequest` - -[horizontal] - -[discrete] -==== `Nest.IDeleteForecastResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteIndexTemplateResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteLicenseResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IDeleteLifecycleRequest` - -[horizontal] - -[discrete] -==== `Nest.IDeleteLifecycleResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteModelSnapshotResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeletePipelineResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeletePrivilegesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteRepositoryResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IDeleteRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IDeleteResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteRoleMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteRoleResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteRollupJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteScriptResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteSnapshotResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteUserResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IDeleteWatchResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IDeprecationInfoResponse` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.IDirectGenerator` - -[horizontal] - - -[discrete] -==== `Nest.IDisableUserResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IDocumentExistsRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IDocumentPath` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IDocumentRequest` - -[horizontal] -type:: added - - - - - -[discrete] -==== `Nest.Ids` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IdsQuery` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IdsQueryDescriptor` - -[horizontal] -`Types(TypeName[])` method:: deleted -`Types(Types)` method:: deleted -`Types(IEnumerable)` method:: deleted - - -[discrete] -==== `Nest.IDynamicResponse` - -[horizontal] -type:: added - - - - - -[discrete] -==== `Nest.IElasticClient` - -[horizontal] -`AcknowledgeWatch(IAcknowledgeWatchRequest)` method:: deleted -`AcknowledgeWatch(Id, Func)` method:: deleted -`AcknowledgeWatchAsync(IAcknowledgeWatchRequest, CancellationToken)` method:: deleted -`AcknowledgeWatchAsync(Id, Func, CancellationToken)` method:: deleted -`ActivateWatch(IActivateWatchRequest)` method:: deleted -`ActivateWatch(Id, Func)` method:: deleted -`ActivateWatchAsync(IActivateWatchRequest, CancellationToken)` method:: deleted -`ActivateWatchAsync(Id, Func, CancellationToken)` method:: deleted -`Alias(IBulkAliasRequest)` method:: deleted -`Alias(Func)` method:: deleted -`AliasAsync(IBulkAliasRequest, CancellationToken)` method:: deleted -`AliasAsync(Func, CancellationToken)` method:: deleted -`AliasExists(IAliasExistsRequest)` method:: deleted -`AliasExists(Names, Func)` method:: deleted -`AliasExists(Func)` method:: deleted -`AliasExistsAsync(IAliasExistsRequest, CancellationToken)` method:: deleted -`AliasExistsAsync(Names, Func, CancellationToken)` method:: deleted -`AliasExistsAsync(Func, CancellationToken)` method:: deleted -`Analyze(IAnalyzeRequest)` method:: deleted -`Analyze(Func)` method:: deleted -`AnalyzeAsync(IAnalyzeRequest, CancellationToken)` method:: deleted -`AnalyzeAsync(Func, CancellationToken)` method:: deleted -`Authenticate(IAuthenticateRequest)` method:: deleted -`Authenticate(Func)` method:: deleted -`AuthenticateAsync(IAuthenticateRequest, CancellationToken)` method:: deleted -`AuthenticateAsync(Func, CancellationToken)` method:: deleted -`Bulk(IBulkRequest)` method:: -Member type changed from `IBulkResponse` to `BulkResponse`. -`Bulk(Func)` method:: -Member type changed from `IBulkResponse` to `BulkResponse`. -`BulkAsync(IBulkRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`BulkAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CancelTasks(ICancelTasksRequest)` method:: deleted -`CancelTasks(Func)` method:: deleted -`CancelTasksAsync(ICancelTasksRequest, CancellationToken)` method:: deleted -`CancelTasksAsync(Func, CancellationToken)` method:: deleted -`CatAliases(ICatAliasesRequest)` method:: deleted -`CatAliases(Func)` method:: deleted -`CatAliasesAsync(ICatAliasesRequest, CancellationToken)` method:: deleted -`CatAliasesAsync(Func, CancellationToken)` method:: deleted -`CatAllocation(ICatAllocationRequest)` method:: deleted -`CatAllocation(Func)` method:: deleted -`CatAllocationAsync(ICatAllocationRequest, CancellationToken)` method:: deleted -`CatAllocationAsync(Func, CancellationToken)` method:: deleted -`CatCount(ICatCountRequest)` method:: deleted -`CatCount(Func)` method:: deleted -`CatCountAsync(ICatCountRequest, CancellationToken)` method:: deleted -`CatCountAsync(Func, CancellationToken)` method:: deleted -`CatFielddata(ICatFielddataRequest)` method:: deleted -`CatFielddata(Func)` method:: deleted -`CatFielddataAsync(ICatFielddataRequest, CancellationToken)` method:: deleted -`CatFielddataAsync(Func, CancellationToken)` method:: deleted -`CatHealth(ICatHealthRequest)` method:: deleted -`CatHealth(Func)` method:: deleted -`CatHealthAsync(ICatHealthRequest, CancellationToken)` method:: deleted -`CatHealthAsync(Func, CancellationToken)` method:: deleted -`CatHelp(ICatHelpRequest)` method:: deleted -`CatHelp(Func)` method:: deleted -`CatHelpAsync(ICatHelpRequest, CancellationToken)` method:: deleted -`CatHelpAsync(Func, CancellationToken)` method:: deleted -`CatIndices(ICatIndicesRequest)` method:: deleted -`CatIndices(Func)` method:: deleted -`CatIndicesAsync(ICatIndicesRequest, CancellationToken)` method:: deleted -`CatIndicesAsync(Func, CancellationToken)` method:: deleted -`CatMaster(ICatMasterRequest)` method:: deleted -`CatMaster(Func)` method:: deleted -`CatMasterAsync(ICatMasterRequest, CancellationToken)` method:: deleted -`CatMasterAsync(Func, CancellationToken)` method:: deleted -`CatNodeAttributes(ICatNodeAttributesRequest)` method:: deleted -`CatNodeAttributes(Func)` method:: deleted -`CatNodeAttributesAsync(ICatNodeAttributesRequest, CancellationToken)` method:: deleted -`CatNodeAttributesAsync(Func, CancellationToken)` method:: deleted -`CatNodes(ICatNodesRequest)` method:: deleted -`CatNodes(Func)` method:: deleted -`CatNodesAsync(ICatNodesRequest, CancellationToken)` method:: deleted -`CatNodesAsync(Func, CancellationToken)` method:: deleted -`CatPendingTasks(ICatPendingTasksRequest)` method:: deleted -`CatPendingTasks(Func)` method:: deleted -`CatPendingTasksAsync(ICatPendingTasksRequest, CancellationToken)` method:: deleted -`CatPendingTasksAsync(Func, CancellationToken)` method:: deleted -`CatPlugins(ICatPluginsRequest)` method:: deleted -`CatPlugins(Func)` method:: deleted -`CatPluginsAsync(ICatPluginsRequest, CancellationToken)` method:: deleted -`CatPluginsAsync(Func, CancellationToken)` method:: deleted -`CatRecovery(ICatRecoveryRequest)` method:: deleted -`CatRecovery(Func)` method:: deleted -`CatRecoveryAsync(ICatRecoveryRequest, CancellationToken)` method:: deleted -`CatRecoveryAsync(Func, CancellationToken)` method:: deleted -`CatRepositories(ICatRepositoriesRequest)` method:: deleted -`CatRepositories(Func)` method:: deleted -`CatRepositoriesAsync(ICatRepositoriesRequest, CancellationToken)` method:: deleted -`CatRepositoriesAsync(Func, CancellationToken)` method:: deleted -`CatSegments(ICatSegmentsRequest)` method:: deleted -`CatSegments(Func)` method:: deleted -`CatSegmentsAsync(ICatSegmentsRequest, CancellationToken)` method:: deleted -`CatSegmentsAsync(Func, CancellationToken)` method:: deleted -`CatShards(ICatShardsRequest)` method:: deleted -`CatShards(Func)` method:: deleted -`CatShardsAsync(ICatShardsRequest, CancellationToken)` method:: deleted -`CatShardsAsync(Func, CancellationToken)` method:: deleted -`CatSnapshots(ICatSnapshotsRequest)` method:: deleted -`CatSnapshots(Names, Func)` method:: deleted -`CatSnapshotsAsync(ICatSnapshotsRequest, CancellationToken)` method:: deleted -`CatSnapshotsAsync(Names, Func, CancellationToken)` method:: deleted -`CatTasks(ICatTasksRequest)` method:: deleted -`CatTasks(Func)` method:: deleted -`CatTasksAsync(ICatTasksRequest, CancellationToken)` method:: deleted -`CatTasksAsync(Func, CancellationToken)` method:: deleted -`CatTemplates(ICatTemplatesRequest)` method:: deleted -`CatTemplates(Func)` method:: deleted -`CatTemplatesAsync(ICatTemplatesRequest, CancellationToken)` method:: deleted -`CatTemplatesAsync(Func, CancellationToken)` method:: deleted -`CatThreadPool(ICatThreadPoolRequest)` method:: deleted -`CatThreadPool(Func)` method:: deleted -`CatThreadPoolAsync(ICatThreadPoolRequest, CancellationToken)` method:: deleted -`CatThreadPoolAsync(Func, CancellationToken)` method:: deleted -`CcrStats(ICcrStatsRequest)` method:: deleted -`CcrStats(Func)` method:: deleted -`CcrStatsAsync(ICcrStatsRequest, CancellationToken)` method:: deleted -`CcrStatsAsync(Func, CancellationToken)` method:: deleted -`ChangePassword(IChangePasswordRequest)` method:: deleted -`ChangePassword(Func)` method:: deleted -`ChangePasswordAsync(IChangePasswordRequest, CancellationToken)` method:: deleted -`ChangePasswordAsync(Func, CancellationToken)` method:: deleted -`ClearCache(IClearCacheRequest)` method:: deleted -`ClearCache(Indices, Func)` method:: deleted -`ClearCacheAsync(IClearCacheRequest, CancellationToken)` method:: deleted -`ClearCacheAsync(Indices, Func, CancellationToken)` method:: deleted -`ClearCachedRealms(IClearCachedRealmsRequest)` method:: deleted -`ClearCachedRealms(Names, Func)` method:: deleted -`ClearCachedRealmsAsync(IClearCachedRealmsRequest, CancellationToken)` method:: deleted -`ClearCachedRealmsAsync(Names, Func, CancellationToken)` method:: deleted -`ClearCachedRoles(IClearCachedRolesRequest)` method:: deleted -`ClearCachedRoles(Names, Func)` method:: deleted -`ClearCachedRolesAsync(IClearCachedRolesRequest, CancellationToken)` method:: deleted -`ClearCachedRolesAsync(Names, Func, CancellationToken)` method:: deleted -`ClearScroll(IClearScrollRequest)` method:: -Member type changed from `IClearScrollResponse` to `ClearScrollResponse`. -`ClearScroll(Func)` method:: -Member type changed from `IClearScrollResponse` to `ClearScrollResponse`. -`ClearScrollAsync(IClearScrollRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ClearScrollAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ClearSqlCursor(IClearSqlCursorRequest)` method:: deleted -`ClearSqlCursor(Func)` method:: deleted -`ClearSqlCursorAsync(IClearSqlCursorRequest, CancellationToken)` method:: deleted -`ClearSqlCursorAsync(Func, CancellationToken)` method:: deleted -`CloseIndex(ICloseIndexRequest)` method:: deleted -`CloseIndex(Indices, Func)` method:: deleted -`CloseIndexAsync(ICloseIndexRequest, CancellationToken)` method:: deleted -`CloseIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`CloseJob(ICloseJobRequest)` method:: deleted -`CloseJob(Id, Func)` method:: deleted -`CloseJobAsync(ICloseJobRequest, CancellationToken)` method:: deleted -`CloseJobAsync(Id, Func, CancellationToken)` method:: deleted -`ClusterAllocationExplain(IClusterAllocationExplainRequest)` method:: deleted -`ClusterAllocationExplain(Func)` method:: deleted -`ClusterAllocationExplainAsync(IClusterAllocationExplainRequest, CancellationToken)` method:: deleted -`ClusterAllocationExplainAsync(Func, CancellationToken)` method:: deleted -`ClusterGetSettings(IClusterGetSettingsRequest)` method:: deleted -`ClusterGetSettings(Func)` method:: deleted -`ClusterGetSettingsAsync(IClusterGetSettingsRequest, CancellationToken)` method:: deleted -`ClusterGetSettingsAsync(Func, CancellationToken)` method:: deleted -`ClusterHealth(IClusterHealthRequest)` method:: deleted -`ClusterHealth(Func)` method:: deleted -`ClusterHealthAsync(IClusterHealthRequest, CancellationToken)` method:: deleted -`ClusterHealthAsync(Func, CancellationToken)` method:: deleted -`ClusterPendingTasks(IClusterPendingTasksRequest)` method:: deleted -`ClusterPendingTasks(Func)` method:: deleted -`ClusterPendingTasksAsync(IClusterPendingTasksRequest, CancellationToken)` method:: deleted -`ClusterPendingTasksAsync(Func, CancellationToken)` method:: deleted -`ClusterPutSettings(IClusterPutSettingsRequest)` method:: deleted -`ClusterPutSettings(Func)` method:: deleted -`ClusterPutSettingsAsync(IClusterPutSettingsRequest, CancellationToken)` method:: deleted -`ClusterPutSettingsAsync(Func, CancellationToken)` method:: deleted -`ClusterReroute(IClusterRerouteRequest)` method:: deleted -`ClusterReroute(Func)` method:: deleted -`ClusterRerouteAsync(IClusterRerouteRequest, CancellationToken)` method:: deleted -`ClusterRerouteAsync(Func, CancellationToken)` method:: deleted -`ClusterState(IClusterStateRequest)` method:: deleted -`ClusterState(Func)` method:: deleted -`ClusterStateAsync(IClusterStateRequest, CancellationToken)` method:: deleted -`ClusterStateAsync(Func, CancellationToken)` method:: deleted -`ClusterStats(IClusterStatsRequest)` method:: deleted -`ClusterStats(Func)` method:: deleted -`ClusterStatsAsync(IClusterStatsRequest, CancellationToken)` method:: deleted -`ClusterStatsAsync(Func, CancellationToken)` method:: deleted -`Count(ICountRequest)` method:: -Member type changed from `ICountResponse` to `CountResponse`. -`Count(Func, ICountRequest>)` method:: deleted -`Count(Func, ICountRequest>)` method:: added -`CountAsync(ICountRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CountAsync(Func, ICountRequest>, CancellationToken)` method:: deleted -`CountAsync(Func, ICountRequest>, CancellationToken)` method:: added -`Create(ICreateRequest)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`Create(TDocument, Func, ICreateRequest>)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`CreateApiKey(ICreateApiKeyRequest)` method:: deleted -`CreateApiKey(Func)` method:: deleted -`CreateApiKeyAsync(ICreateApiKeyRequest, CancellationToken)` method:: deleted -`CreateApiKeyAsync(Func, CancellationToken)` method:: deleted -`CreateAsync(ICreateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateAsync(TDocument, Func, ICreateRequest>, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateAutoFollowPattern(ICreateAutoFollowPatternRequest)` method:: deleted -`CreateAutoFollowPattern(Name, Func)` method:: deleted -`CreateAutoFollowPatternAsync(ICreateAutoFollowPatternRequest, CancellationToken)` method:: deleted -`CreateAutoFollowPatternAsync(Name, Func, CancellationToken)` method:: deleted -`CreateDocument(TDocument)` method:: -Member type changed from `ICreateResponse` to `CreateResponse`. -`CreateDocumentAsync(TDocument, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`CreateFollowIndex(ICreateFollowIndexRequest)` method:: deleted -`CreateFollowIndex(IndexName, Func)` method:: deleted -`CreateFollowIndexAsync(ICreateFollowIndexRequest, CancellationToken)` method:: deleted -`CreateFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`CreateIndex(ICreateIndexRequest)` method:: deleted -`CreateIndex(IndexName, Func)` method:: deleted -`CreateIndexAsync(ICreateIndexRequest, CancellationToken)` method:: deleted -`CreateIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`CreateRepository(ICreateRepositoryRequest)` method:: deleted -`CreateRepository(Name, Func)` method:: deleted -`CreateRepositoryAsync(ICreateRepositoryRequest, CancellationToken)` method:: deleted -`CreateRepositoryAsync(Name, Func, CancellationToken)` method:: deleted -`CreateRollupJob(ICreateRollupJobRequest)` method:: deleted -`CreateRollupJob(Id, Func, ICreateRollupJobRequest>)` method:: deleted -`CreateRollupJobAsync(ICreateRollupJobRequest, CancellationToken)` method:: deleted -`CreateRollupJobAsync(Id, Func, ICreateRollupJobRequest>, CancellationToken)` method:: deleted -`DeactivateWatch(Id, Func)` method:: deleted -`DeactivateWatch(IDeactivateWatchRequest)` method:: deleted -`DeactivateWatchAsync(Id, Func, CancellationToken)` method:: deleted -`DeactivateWatchAsync(IDeactivateWatchRequest, CancellationToken)` method:: deleted -`Delete(DocumentPath, Func, IDeleteRequest>)` method:: deleted -`Delete(DocumentPath, Func, IDeleteRequest>)` method:: added -`Delete(IDeleteRequest)` method:: -Member type changed from `IDeleteResponse` to `DeleteResponse`. -`DeleteAlias(IDeleteAliasRequest)` method:: deleted -`DeleteAlias(Indices, Names, Func)` method:: deleted -`DeleteAliasAsync(IDeleteAliasRequest, CancellationToken)` method:: deleted -`DeleteAliasAsync(Indices, Names, Func, CancellationToken)` method:: deleted -`DeleteAsync(DocumentPath, Func, IDeleteRequest>, CancellationToken)` method:: deleted -`DeleteAsync(DocumentPath, Func, IDeleteRequest>, CancellationToken)` method:: added -`DeleteAsync(IDeleteRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteAutoFollowPattern(IDeleteAutoFollowPatternRequest)` method:: deleted -`DeleteAutoFollowPattern(Name, Func)` method:: deleted -`DeleteAutoFollowPatternAsync(IDeleteAutoFollowPatternRequest, CancellationToken)` method:: deleted -`DeleteAutoFollowPatternAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteByQuery(IDeleteByQueryRequest)` method:: -Member type changed from `IDeleteByQueryResponse` to `DeleteByQueryResponse`. -`DeleteByQuery(Func, IDeleteByQueryRequest>)` method:: deleted -`DeleteByQuery(Func, IDeleteByQueryRequest>)` method:: added -`DeleteByQueryAsync(IDeleteByQueryRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteByQueryAsync(Func, IDeleteByQueryRequest>, CancellationToken)` method:: deleted -`DeleteByQueryAsync(Func, IDeleteByQueryRequest>, CancellationToken)` method:: added -`DeleteByQueryRethrottle(IDeleteByQueryRethrottleRequest)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`DeleteByQueryRethrottle(TaskId, Func)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`DeleteByQueryRethrottleAsync(IDeleteByQueryRethrottleRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteByQueryRethrottleAsync(TaskId, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteCalendar(Id, Func)` method:: deleted -`DeleteCalendar(IDeleteCalendarRequest)` method:: deleted -`DeleteCalendarAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarAsync(IDeleteCalendarRequest, CancellationToken)` method:: deleted -`DeleteCalendarEvent(Id, Id, Func)` method:: deleted -`DeleteCalendarEvent(IDeleteCalendarEventRequest)` method:: deleted -`DeleteCalendarEventAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarEventAsync(IDeleteCalendarEventRequest, CancellationToken)` method:: deleted -`DeleteCalendarJob(Id, Id, Func)` method:: deleted -`DeleteCalendarJob(IDeleteCalendarJobRequest)` method:: deleted -`DeleteCalendarJobAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteCalendarJobAsync(IDeleteCalendarJobRequest, CancellationToken)` method:: deleted -`DeleteDatafeed(Id, Func)` method:: deleted -`DeleteDatafeed(IDeleteDatafeedRequest)` method:: deleted -`DeleteDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteDatafeedAsync(IDeleteDatafeedRequest, CancellationToken)` method:: deleted -`DeleteExpiredData(IDeleteExpiredDataRequest)` method:: deleted -`DeleteExpiredData(Func)` method:: deleted -`DeleteExpiredDataAsync(IDeleteExpiredDataRequest, CancellationToken)` method:: deleted -`DeleteExpiredDataAsync(Func, CancellationToken)` method:: deleted -`DeleteFilter(Id, Func)` method:: deleted -`DeleteFilter(IDeleteFilterRequest)` method:: deleted -`DeleteFilterAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteFilterAsync(IDeleteFilterRequest, CancellationToken)` method:: deleted -`DeleteForecast(Id, ForecastIds, Func)` method:: deleted -`DeleteForecast(IDeleteForecastRequest)` method:: deleted -`DeleteForecastAsync(Id, ForecastIds, Func, CancellationToken)` method:: deleted -`DeleteForecastAsync(IDeleteForecastRequest, CancellationToken)` method:: deleted -`DeleteIndex(IDeleteIndexRequest)` method:: deleted -`DeleteIndex(Indices, Func)` method:: deleted -`DeleteIndexAsync(IDeleteIndexRequest, CancellationToken)` method:: deleted -`DeleteIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`DeleteIndexTemplate(IDeleteIndexTemplateRequest)` method:: deleted -`DeleteIndexTemplate(Name, Func)` method:: deleted -`DeleteIndexTemplateAsync(IDeleteIndexTemplateRequest, CancellationToken)` method:: deleted -`DeleteIndexTemplateAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteJob(Id, Func)` method:: deleted -`DeleteJob(IDeleteJobRequest)` method:: deleted -`DeleteJobAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteJobAsync(IDeleteJobRequest, CancellationToken)` method:: deleted -`DeleteLicense(IDeleteLicenseRequest)` method:: deleted -`DeleteLicense(Func)` method:: deleted -`DeleteLicenseAsync(IDeleteLicenseRequest, CancellationToken)` method:: deleted -`DeleteLicenseAsync(Func, CancellationToken)` method:: deleted -`DeleteLifecycle(IDeleteLifecycleRequest)` method:: deleted -`DeleteLifecycle(PolicyId, Func)` method:: deleted -`DeleteLifecycleAsync(IDeleteLifecycleRequest, CancellationToken)` method:: deleted -`DeleteLifecycleAsync(PolicyId, Func, CancellationToken)` method:: deleted -`DeleteModelSnapshot(Id, Id, Func)` method:: deleted -`DeleteModelSnapshot(IDeleteModelSnapshotRequest)` method:: deleted -`DeleteModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`DeleteModelSnapshotAsync(IDeleteModelSnapshotRequest, CancellationToken)` method:: deleted -`DeletePipeline(Id, Func)` method:: deleted -`DeletePipeline(IDeletePipelineRequest)` method:: deleted -`DeletePipelineAsync(Id, Func, CancellationToken)` method:: deleted -`DeletePipelineAsync(IDeletePipelineRequest, CancellationToken)` method:: deleted -`DeletePrivileges(IDeletePrivilegesRequest)` method:: deleted -`DeletePrivileges(Name, Name, Func)` method:: deleted -`DeletePrivilegesAsync(IDeletePrivilegesRequest, CancellationToken)` method:: deleted -`DeletePrivilegesAsync(Name, Name, Func, CancellationToken)` method:: deleted -`DeleteRepository(IDeleteRepositoryRequest)` method:: deleted -`DeleteRepository(Names, Func)` method:: deleted -`DeleteRepositoryAsync(IDeleteRepositoryRequest, CancellationToken)` method:: deleted -`DeleteRepositoryAsync(Names, Func, CancellationToken)` method:: deleted -`DeleteRole(IDeleteRoleRequest)` method:: deleted -`DeleteRole(Name, Func)` method:: deleted -`DeleteRoleAsync(IDeleteRoleRequest, CancellationToken)` method:: deleted -`DeleteRoleAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteRoleMapping(IDeleteRoleMappingRequest)` method:: deleted -`DeleteRoleMapping(Name, Func)` method:: deleted -`DeleteRoleMappingAsync(IDeleteRoleMappingRequest, CancellationToken)` method:: deleted -`DeleteRoleMappingAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteRollupJob(Id, Func)` method:: deleted -`DeleteRollupJob(IDeleteRollupJobRequest)` method:: deleted -`DeleteRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteRollupJobAsync(IDeleteRollupJobRequest, CancellationToken)` method:: deleted -`DeleteScript(Id, Func)` method:: -Member type changed from `IDeleteScriptResponse` to `DeleteScriptResponse`. -`DeleteScript(IDeleteScriptRequest)` method:: -Member type changed from `IDeleteScriptResponse` to `DeleteScriptResponse`. -`DeleteScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteScriptAsync(IDeleteScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`DeleteSnapshot(IDeleteSnapshotRequest)` method:: deleted -`DeleteSnapshot(Name, Name, Func)` method:: deleted -`DeleteSnapshotAsync(IDeleteSnapshotRequest, CancellationToken)` method:: deleted -`DeleteSnapshotAsync(Name, Name, Func, CancellationToken)` method:: deleted -`DeleteUser(IDeleteUserRequest)` method:: deleted -`DeleteUser(Name, Func)` method:: deleted -`DeleteUserAsync(IDeleteUserRequest, CancellationToken)` method:: deleted -`DeleteUserAsync(Name, Func, CancellationToken)` method:: deleted -`DeleteWatch(Id, Func)` method:: deleted -`DeleteWatch(IDeleteWatchRequest)` method:: deleted -`DeleteWatchAsync(Id, Func, CancellationToken)` method:: deleted -`DeleteWatchAsync(IDeleteWatchRequest, CancellationToken)` method:: deleted -`DeprecationInfo(IDeprecationInfoRequest)` method:: deleted -`DeprecationInfo(Func)` method:: deleted -`DeprecationInfoAsync(IDeprecationInfoRequest, CancellationToken)` method:: deleted -`DeprecationInfoAsync(Func, CancellationToken)` method:: deleted -`DisableUser(IDisableUserRequest)` method:: deleted -`DisableUser(Name, Func)` method:: deleted -`DisableUserAsync(IDisableUserRequest, CancellationToken)` method:: deleted -`DisableUserAsync(Name, Func, CancellationToken)` method:: deleted -`DocumentExists(DocumentPath, Func, IDocumentExistsRequest>)` method:: deleted -`DocumentExists(DocumentPath, Func, IDocumentExistsRequest>)` method:: added -`DocumentExists(IDocumentExistsRequest)` method:: -Member type changed from `IExistsResponse` to `ExistsResponse`. -`DocumentExistsAsync(DocumentPath, Func, IDocumentExistsRequest>, CancellationToken)` method:: deleted -`DocumentExistsAsync(DocumentPath, Func, IDocumentExistsRequest>, CancellationToken)` method:: added -`DocumentExistsAsync(IDocumentExistsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`EnableUser(IEnableUserRequest)` method:: deleted -`EnableUser(Name, Func)` method:: deleted -`EnableUserAsync(IEnableUserRequest, CancellationToken)` method:: deleted -`EnableUserAsync(Name, Func, CancellationToken)` method:: deleted -`ExecutePainlessScript(IExecutePainlessScriptRequest)` method:: -Member type changed from `IExecutePainlessScriptResponse` to `ExecutePainlessScriptResponse`. -`ExecutePainlessScript(Func)` method:: -Member type changed from `IExecutePainlessScriptResponse` to `ExecutePainlessScriptResponse`. -`ExecutePainlessScriptAsync(IExecutePainlessScriptRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ExecutePainlessScriptAsync(Func, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ExecuteWatch(IExecuteWatchRequest)` method:: deleted -`ExecuteWatch(Func)` method:: deleted -`ExecuteWatchAsync(IExecuteWatchRequest, CancellationToken)` method:: deleted -`ExecuteWatchAsync(Func, CancellationToken)` method:: deleted -`Explain(DocumentPath, Func, IExplainRequest>)` method:: deleted -`Explain(DocumentPath, Func, IExplainRequest>)` method:: added -`Explain(IExplainRequest)` method:: added -`Explain(IExplainRequest)` method:: deleted -`ExplainAsync(DocumentPath, Func, IExplainRequest>, CancellationToken)` method:: deleted -`ExplainAsync(DocumentPath, Func, IExplainRequest>, CancellationToken)` method:: added -`ExplainAsync(IExplainRequest, CancellationToken)` method:: added -`ExplainAsync(IExplainRequest, CancellationToken)` method:: deleted -`ExplainLifecycle(IExplainLifecycleRequest)` method:: deleted -`ExplainLifecycle(IndexName, Func)` method:: deleted -`ExplainLifecycleAsync(IExplainLifecycleRequest, CancellationToken)` method:: deleted -`ExplainLifecycleAsync(IndexName, Func, CancellationToken)` method:: deleted -`FieldCapabilities(IFieldCapabilitiesRequest)` method:: -Member type changed from `IFieldCapabilitiesResponse` to `FieldCapabilitiesResponse`. -`FieldCapabilities(Indices, Func)` method:: -Member type changed from `IFieldCapabilitiesResponse` to `FieldCapabilitiesResponse`. -`FieldCapabilitiesAsync(IFieldCapabilitiesRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`FieldCapabilitiesAsync(Indices, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`Flush(IFlushRequest)` method:: deleted -`Flush(Indices, Func)` method:: deleted -`FlushAsync(IFlushRequest, CancellationToken)` method:: deleted -`FlushAsync(Indices, Func, CancellationToken)` method:: deleted -`FlushJob(Id, Func)` method:: deleted -`FlushJob(IFlushJobRequest)` method:: deleted -`FlushJobAsync(Id, Func, CancellationToken)` method:: deleted -`FlushJobAsync(IFlushJobRequest, CancellationToken)` method:: deleted -`FollowIndexStats(IFollowIndexStatsRequest)` method:: deleted -`FollowIndexStats(Indices, Func)` method:: deleted -`FollowIndexStatsAsync(IFollowIndexStatsRequest, CancellationToken)` method:: deleted -`FollowIndexStatsAsync(Indices, Func, CancellationToken)` method:: deleted -`ForceMerge(IForceMergeRequest)` method:: deleted -`ForceMerge(Indices, Func)` method:: deleted -`ForceMergeAsync(IForceMergeRequest, CancellationToken)` method:: deleted -`ForceMergeAsync(Indices, Func, CancellationToken)` method:: deleted -`ForecastJob(Id, Func)` method:: deleted -`ForecastJob(IForecastJobRequest)` method:: deleted -`ForecastJobAsync(Id, Func, CancellationToken)` method:: deleted -`ForecastJobAsync(IForecastJobRequest, CancellationToken)` method:: deleted -`Get(DocumentPath, Func, IGetRequest>)` method:: deleted -`Get(DocumentPath, Func, IGetRequest>)` method:: added -`Get(IGetRequest)` method:: -Member type changed from `IGetResponse` to `GetResponse`. -`GetAlias(IGetAliasRequest)` method:: deleted -`GetAlias(Func)` method:: deleted -`GetAliasAsync(IGetAliasRequest, CancellationToken)` method:: deleted -`GetAliasAsync(Func, CancellationToken)` method:: deleted -`GetAnomalyRecords(Id, Func)` method:: deleted -`GetAnomalyRecords(IGetAnomalyRecordsRequest)` method:: deleted -`GetAnomalyRecordsAsync(Id, Func, CancellationToken)` method:: deleted -`GetAnomalyRecordsAsync(IGetAnomalyRecordsRequest, CancellationToken)` method:: deleted -`GetApiKey(IGetApiKeyRequest)` method:: deleted -`GetApiKey(Func)` method:: deleted -`GetApiKeyAsync(IGetApiKeyRequest, CancellationToken)` method:: deleted -`GetApiKeyAsync(Func, CancellationToken)` method:: deleted -`GetAsync(DocumentPath, Func, IGetRequest>, CancellationToken)` method:: deleted -`GetAsync(DocumentPath, Func, IGetRequest>, CancellationToken)` method:: added -`GetAsync(IGetRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`GetAutoFollowPattern(IGetAutoFollowPatternRequest)` method:: deleted -`GetAutoFollowPattern(Func)` method:: deleted -`GetAutoFollowPatternAsync(IGetAutoFollowPatternRequest, CancellationToken)` method:: deleted -`GetAutoFollowPatternAsync(Func, CancellationToken)` method:: deleted -`GetBasicLicenseStatus(IGetBasicLicenseStatusRequest)` method:: deleted -`GetBasicLicenseStatus(Func)` method:: deleted -`GetBasicLicenseStatusAsync(IGetBasicLicenseStatusRequest, CancellationToken)` method:: deleted -`GetBasicLicenseStatusAsync(Func, CancellationToken)` method:: deleted -`GetBuckets(Id, Func)` method:: deleted -`GetBuckets(IGetBucketsRequest)` method:: deleted -`GetBucketsAsync(Id, Func, CancellationToken)` method:: deleted -`GetBucketsAsync(IGetBucketsRequest, CancellationToken)` method:: deleted -`GetCalendarEvents(Id, Func)` method:: deleted -`GetCalendarEvents(IGetCalendarEventsRequest)` method:: deleted -`GetCalendarEventsAsync(Id, Func, CancellationToken)` method:: deleted -`GetCalendarEventsAsync(IGetCalendarEventsRequest, CancellationToken)` method:: deleted -`GetCalendars(IGetCalendarsRequest)` method:: deleted -`GetCalendars(Func)` method:: deleted -`GetCalendarsAsync(IGetCalendarsRequest, CancellationToken)` method:: deleted -`GetCalendarsAsync(Func, CancellationToken)` method:: deleted -`GetCategories(Id, Func)` method:: deleted -`GetCategories(IGetCategoriesRequest)` method:: deleted -`GetCategoriesAsync(Id, Func, CancellationToken)` method:: deleted -`GetCategoriesAsync(IGetCategoriesRequest, CancellationToken)` method:: deleted -`GetCertificates(IGetCertificatesRequest)` method:: deleted -`GetCertificates(Func)` method:: deleted -`GetCertificatesAsync(IGetCertificatesRequest, CancellationToken)` method:: deleted -`GetCertificatesAsync(Func, CancellationToken)` method:: deleted -`GetDatafeeds(IGetDatafeedsRequest)` method:: deleted -`GetDatafeeds(Func)` method:: deleted -`GetDatafeedsAsync(IGetDatafeedsRequest, CancellationToken)` method:: deleted -`GetDatafeedsAsync(Func, CancellationToken)` method:: deleted -`GetDatafeedStats(IGetDatafeedStatsRequest)` method:: deleted -`GetDatafeedStats(Func)` method:: deleted -`GetDatafeedStatsAsync(IGetDatafeedStatsRequest, CancellationToken)` method:: deleted -`GetDatafeedStatsAsync(Func, CancellationToken)` method:: deleted -`GetFieldMapping(Fields, Func, IGetFieldMappingRequest>)` method:: deleted -`GetFieldMapping(IGetFieldMappingRequest)` method:: deleted -`GetFieldMappingAsync(Fields, Func, IGetFieldMappingRequest>, CancellationToken)` method:: deleted -`GetFieldMappingAsync(IGetFieldMappingRequest, CancellationToken)` method:: deleted -`GetFilters(IGetFiltersRequest)` method:: deleted -`GetFilters(Func)` method:: deleted -`GetFiltersAsync(IGetFiltersRequest, CancellationToken)` method:: deleted -`GetFiltersAsync(Func, CancellationToken)` method:: deleted -`GetIlmStatus(IGetIlmStatusRequest)` method:: deleted -`GetIlmStatus(Func)` method:: deleted -`GetIlmStatusAsync(IGetIlmStatusRequest, CancellationToken)` method:: deleted -`GetIlmStatusAsync(Func, CancellationToken)` method:: deleted -`GetIndex(IGetIndexRequest)` method:: deleted -`GetIndex(Indices, Func)` method:: deleted -`GetIndexAsync(IGetIndexRequest, CancellationToken)` method:: deleted -`GetIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`GetIndexSettings(IGetIndexSettingsRequest)` method:: deleted -`GetIndexSettings(Func)` method:: deleted -`GetIndexSettingsAsync(IGetIndexSettingsRequest, CancellationToken)` method:: deleted -`GetIndexSettingsAsync(Func, CancellationToken)` method:: deleted -`GetIndexTemplate(IGetIndexTemplateRequest)` method:: deleted -`GetIndexTemplate(Func)` method:: deleted -`GetIndexTemplateAsync(IGetIndexTemplateRequest, CancellationToken)` method:: deleted -`GetIndexTemplateAsync(Func, CancellationToken)` method:: deleted -`GetInfluencers(Id, Func)` method:: deleted -`GetInfluencers(IGetInfluencersRequest)` method:: deleted -`GetInfluencersAsync(Id, Func, CancellationToken)` method:: deleted -`GetInfluencersAsync(IGetInfluencersRequest, CancellationToken)` method:: deleted -`GetJobs(IGetJobsRequest)` method:: deleted -`GetJobs(Func)` method:: deleted -`GetJobsAsync(IGetJobsRequest, CancellationToken)` method:: deleted -`GetJobsAsync(Func, CancellationToken)` method:: deleted -`GetJobStats(IGetJobStatsRequest)` method:: deleted -`GetJobStats(Func)` method:: deleted -`GetJobStatsAsync(IGetJobStatsRequest, CancellationToken)` method:: deleted -`GetJobStatsAsync(Func, CancellationToken)` method:: deleted -`GetLicense(IGetLicenseRequest)` method:: deleted -`GetLicense(Func)` method:: deleted -`GetLicenseAsync(IGetLicenseRequest, CancellationToken)` method:: deleted -`GetLicenseAsync(Func, CancellationToken)` method:: deleted -`GetLifecycle(IGetLifecycleRequest)` method:: deleted -`GetLifecycle(Func)` method:: deleted -`GetLifecycleAsync(IGetLifecycleRequest, CancellationToken)` method:: deleted -`GetLifecycleAsync(Func, CancellationToken)` method:: deleted -`GetMapping(IGetMappingRequest)` method:: deleted -`GetMapping(Func, IGetMappingRequest>)` method:: deleted -`GetMappingAsync(IGetMappingRequest, CancellationToken)` method:: deleted -`GetMappingAsync(Func, IGetMappingRequest>, CancellationToken)` method:: deleted -`GetModelSnapshots(Id, Func)` method:: deleted -`GetModelSnapshots(IGetModelSnapshotsRequest)` method:: deleted -`GetModelSnapshotsAsync(Id, Func, CancellationToken)` method:: deleted -`GetModelSnapshotsAsync(IGetModelSnapshotsRequest, CancellationToken)` method:: deleted -`GetOverallBuckets(Id, Func)` method:: deleted -`GetOverallBuckets(IGetOverallBucketsRequest)` method:: deleted -`GetOverallBucketsAsync(Id, Func, CancellationToken)` method:: deleted -`GetOverallBucketsAsync(IGetOverallBucketsRequest, CancellationToken)` method:: deleted -`GetPipeline(IGetPipelineRequest)` method:: deleted -`GetPipeline(Func)` method:: deleted -`GetPipelineAsync(IGetPipelineRequest, CancellationToken)` method:: deleted -`GetPipelineAsync(Func, CancellationToken)` method:: deleted -`GetPrivileges(IGetPrivilegesRequest)` method:: deleted -`GetPrivileges(Func)` method:: deleted -`GetPrivilegesAsync(IGetPrivilegesRequest, CancellationToken)` method:: deleted -`GetPrivilegesAsync(Func, CancellationToken)` method:: deleted -`GetRepository(IGetRepositoryRequest)` method:: deleted -`GetRepository(Func)` method:: deleted -`GetRepositoryAsync(IGetRepositoryRequest, CancellationToken)` method:: deleted -`GetRepositoryAsync(Func, CancellationToken)` method:: deleted -`GetRole(IGetRoleRequest)` method:: deleted -`GetRole(Func)` method:: deleted -`GetRoleAsync(IGetRoleRequest, CancellationToken)` method:: deleted -`GetRoleAsync(Func, CancellationToken)` method:: deleted -`GetRoleMapping(IGetRoleMappingRequest)` method:: deleted -`GetRoleMapping(Func)` method:: deleted -`GetRoleMappingAsync(IGetRoleMappingRequest, CancellationToken)` method:: deleted -`GetRoleMappingAsync(Func, CancellationToken)` method:: deleted -`GetRollupCapabilities(IGetRollupCapabilitiesRequest)` method:: deleted -`GetRollupCapabilities(Func)` method:: deleted -`GetRollupCapabilitiesAsync(IGetRollupCapabilitiesRequest, CancellationToken)` method:: deleted -`GetRollupCapabilitiesAsync(Func, CancellationToken)` method:: deleted -`GetRollupIndexCapabilities(IGetRollupIndexCapabilitiesRequest)` method:: deleted -`GetRollupIndexCapabilities(IndexName, Func)` method:: deleted -`GetRollupIndexCapabilitiesAsync(IGetRollupIndexCapabilitiesRequest, CancellationToken)` method:: deleted -`GetRollupIndexCapabilitiesAsync(IndexName, Func, CancellationToken)` method:: deleted -`GetRollupJob(IGetRollupJobRequest)` method:: deleted -`GetRollupJob(Func)` method:: deleted -`GetRollupJobAsync(IGetRollupJobRequest, CancellationToken)` method:: deleted -`GetRollupJobAsync(Func, CancellationToken)` method:: deleted -`GetScript(Id, Func)` method:: -Member type changed from `IGetScriptResponse` to `GetScriptResponse`. -`GetScript(IGetScriptRequest)` method:: -Member type changed from `IGetScriptResponse` to `GetScriptResponse`. -`GetScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`GetScriptAsync(IGetScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`GetSnapshot(IGetSnapshotRequest)` method:: deleted -`GetSnapshot(Name, Names, Func)` method:: deleted -`GetSnapshotAsync(IGetSnapshotRequest, CancellationToken)` method:: deleted -`GetSnapshotAsync(Name, Names, Func, CancellationToken)` method:: deleted -`GetTask(IGetTaskRequest)` method:: deleted -`GetTask(TaskId, Func)` method:: deleted -`GetTaskAsync(IGetTaskRequest, CancellationToken)` method:: deleted -`GetTaskAsync(TaskId, Func, CancellationToken)` method:: deleted -`GetTrialLicenseStatus(IGetTrialLicenseStatusRequest)` method:: deleted -`GetTrialLicenseStatus(Func)` method:: deleted -`GetTrialLicenseStatusAsync(IGetTrialLicenseStatusRequest, CancellationToken)` method:: deleted -`GetTrialLicenseStatusAsync(Func, CancellationToken)` method:: deleted -`GetUser(IGetUserRequest)` method:: deleted -`GetUser(Func)` method:: deleted -`GetUserAccessToken(IGetUserAccessTokenRequest)` method:: deleted -`GetUserAccessToken(String, String, Func)` method:: deleted -`GetUserAccessTokenAsync(IGetUserAccessTokenRequest, CancellationToken)` method:: deleted -`GetUserAccessTokenAsync(String, String, Func, CancellationToken)` method:: deleted -`GetUserAsync(IGetUserRequest, CancellationToken)` method:: deleted -`GetUserAsync(Func, CancellationToken)` method:: deleted -`GetUserPrivileges(IGetUserPrivilegesRequest)` method:: deleted -`GetUserPrivileges(Func)` method:: deleted -`GetUserPrivilegesAsync(IGetUserPrivilegesRequest, CancellationToken)` method:: deleted -`GetUserPrivilegesAsync(Func, CancellationToken)` method:: deleted -`GetWatch(Id, Func)` method:: deleted -`GetWatch(IGetWatchRequest)` method:: deleted -`GetWatchAsync(Id, Func, CancellationToken)` method:: deleted -`GetWatchAsync(IGetWatchRequest, CancellationToken)` method:: deleted -`GraphExplore(IGraphExploreRequest)` method:: deleted -`GraphExplore(Func, IGraphExploreRequest>)` method:: deleted -`GraphExploreAsync(IGraphExploreRequest, CancellationToken)` method:: deleted -`GraphExploreAsync(Func, IGraphExploreRequest>, CancellationToken)` method:: deleted -`GrokProcessorPatterns(IGrokProcessorPatternsRequest)` method:: deleted -`GrokProcessorPatterns(Func)` method:: deleted -`GrokProcessorPatternsAsync(IGrokProcessorPatternsRequest, CancellationToken)` method:: deleted -`GrokProcessorPatternsAsync(Func, CancellationToken)` method:: deleted -`HasPrivileges(IHasPrivilegesRequest)` method:: deleted -`HasPrivileges(Func)` method:: deleted -`HasPrivilegesAsync(IHasPrivilegesRequest, CancellationToken)` method:: deleted -`HasPrivilegesAsync(Func, CancellationToken)` method:: deleted -`Index(IIndexRequest)` method:: deleted -`Index(IIndexRequest)` method:: added -`Index(T, Func, IIndexRequest>)` method:: deleted -`Index(TDocument, Func, IIndexRequest>)` method:: added -`IndexAsync(IIndexRequest, CancellationToken)` method:: deleted -`IndexAsync(IIndexRequest, CancellationToken)` method:: added -`IndexAsync(T, Func, IIndexRequest>, CancellationToken)` method:: deleted -`IndexAsync(TDocument, Func, IIndexRequest>, CancellationToken)` method:: added -`IndexDocument(T)` method:: deleted -`IndexDocument(TDocument)` method:: added -`IndexDocumentAsync(T, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`IndexExists(IIndexExistsRequest)` method:: deleted -`IndexExists(Indices, Func)` method:: deleted -`IndexExistsAsync(IIndexExistsRequest, CancellationToken)` method:: deleted -`IndexExistsAsync(Indices, Func, CancellationToken)` method:: deleted -`IndexTemplateExists(IIndexTemplateExistsRequest)` method:: deleted -`IndexTemplateExists(Name, Func)` method:: deleted -`IndexTemplateExistsAsync(IIndexTemplateExistsRequest, CancellationToken)` method:: deleted -`IndexTemplateExistsAsync(Name, Func, CancellationToken)` method:: deleted -`IndicesShardStores(IIndicesShardStoresRequest)` method:: deleted -`IndicesShardStores(Func)` method:: deleted -`IndicesShardStoresAsync(IIndicesShardStoresRequest, CancellationToken)` method:: deleted -`IndicesShardStoresAsync(Func, CancellationToken)` method:: deleted -`IndicesStats(IIndicesStatsRequest)` method:: deleted -`IndicesStats(Indices, Func)` method:: deleted -`IndicesStatsAsync(IIndicesStatsRequest, CancellationToken)` method:: deleted -`IndicesStatsAsync(Indices, Func, CancellationToken)` method:: deleted -`InvalidateApiKey(IInvalidateApiKeyRequest)` method:: deleted -`InvalidateApiKey(Func)` method:: deleted -`InvalidateApiKeyAsync(IInvalidateApiKeyRequest, CancellationToken)` method:: deleted -`InvalidateApiKeyAsync(Func, CancellationToken)` method:: deleted -`InvalidateUserAccessToken(IInvalidateUserAccessTokenRequest)` method:: deleted -`InvalidateUserAccessToken(String, Func)` method:: deleted -`InvalidateUserAccessTokenAsync(IInvalidateUserAccessTokenRequest, CancellationToken)` method:: deleted -`InvalidateUserAccessTokenAsync(String, Func, CancellationToken)` method:: deleted -`ListTasks(IListTasksRequest)` method:: deleted -`ListTasks(Func)` method:: deleted -`ListTasksAsync(IListTasksRequest, CancellationToken)` method:: deleted -`ListTasksAsync(Func, CancellationToken)` method:: deleted -`MachineLearningInfo(IMachineLearningInfoRequest)` method:: deleted -`MachineLearningInfo(Func)` method:: deleted -`MachineLearningInfoAsync(IMachineLearningInfoRequest, CancellationToken)` method:: deleted -`MachineLearningInfoAsync(Func, CancellationToken)` method:: deleted -`Map(IPutMappingRequest)` method:: -Member type changed from `IPutMappingResponse` to `PutMappingResponse`. -`Map(Func, IPutMappingRequest>)` method:: -Member type changed from `IPutMappingResponse` to `PutMappingResponse`. -`MapAsync(IPutMappingRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MapAsync(Func, IPutMappingRequest>, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MigrationAssistance(IMigrationAssistanceRequest)` method:: deleted -`MigrationAssistance(Func)` method:: deleted -`MigrationAssistanceAsync(IMigrationAssistanceRequest, CancellationToken)` method:: deleted -`MigrationAssistanceAsync(Func, CancellationToken)` method:: deleted -`MigrationUpgrade(IMigrationUpgradeRequest)` method:: deleted -`MigrationUpgrade(IndexName, Func)` method:: deleted -`MigrationUpgradeAsync(IMigrationUpgradeRequest, CancellationToken)` method:: deleted -`MigrationUpgradeAsync(IndexName, Func, CancellationToken)` method:: deleted -`MoveToStep(IMoveToStepRequest)` method:: deleted -`MoveToStep(IndexName, Func)` method:: deleted -`MoveToStepAsync(IMoveToStepRequest, CancellationToken)` method:: deleted -`MoveToStepAsync(IndexName, Func, CancellationToken)` method:: deleted -`MultiGet(IMultiGetRequest)` method:: -Member type changed from `IMultiGetResponse` to `MultiGetResponse`. -`MultiGet(Func)` method:: -Member type changed from `IMultiGetResponse` to `MultiGetResponse`. -`MultiGetAsync(IMultiGetRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiGetAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearch(IMultiSearchRequest)` method:: -Member type changed from `IMultiSearchResponse` to `MultiSearchResponse`. -`MultiSearch(Indices, Func)` method:: added -`MultiSearch(Func)` method:: deleted -`MultiSearchAsync(IMultiSearchRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearchAsync(Indices, Func, CancellationToken)` method:: added -`MultiSearchAsync(Func, CancellationToken)` method:: deleted -`MultiSearchTemplate(IMultiSearchTemplateRequest)` method:: -Member type changed from `IMultiSearchResponse` to `MultiSearchResponse`. -`MultiSearchTemplate(Indices, Func)` method:: added -`MultiSearchTemplate(Func)` method:: deleted -`MultiSearchTemplateAsync(IMultiSearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiSearchTemplateAsync(Indices, Func, CancellationToken)` method:: added -`MultiSearchTemplateAsync(Func, CancellationToken)` method:: deleted -`MultiTermVectors(IMultiTermVectorsRequest)` method:: -Member type changed from `IMultiTermVectorsResponse` to `MultiTermVectorsResponse`. -`MultiTermVectors(Func)` method:: -Member type changed from `IMultiTermVectorsResponse` to `MultiTermVectorsResponse`. -`MultiTermVectorsAsync(IMultiTermVectorsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`MultiTermVectorsAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`NodesHotThreads(INodesHotThreadsRequest)` method:: deleted -`NodesHotThreads(Func)` method:: deleted -`NodesHotThreadsAsync(INodesHotThreadsRequest, CancellationToken)` method:: deleted -`NodesHotThreadsAsync(Func, CancellationToken)` method:: deleted -`NodesInfo(INodesInfoRequest)` method:: deleted -`NodesInfo(Func)` method:: deleted -`NodesInfoAsync(INodesInfoRequest, CancellationToken)` method:: deleted -`NodesInfoAsync(Func, CancellationToken)` method:: deleted -`NodesStats(INodesStatsRequest)` method:: deleted -`NodesStats(Func)` method:: deleted -`NodesStatsAsync(INodesStatsRequest, CancellationToken)` method:: deleted -`NodesStatsAsync(Func, CancellationToken)` method:: deleted -`NodesUsage(INodesUsageRequest)` method:: deleted -`NodesUsage(Func)` method:: deleted -`NodesUsageAsync(INodesUsageRequest, CancellationToken)` method:: deleted -`NodesUsageAsync(Func, CancellationToken)` method:: deleted -`OpenIndex(Indices, Func)` method:: deleted -`OpenIndex(IOpenIndexRequest)` method:: deleted -`OpenIndexAsync(Indices, Func, CancellationToken)` method:: deleted -`OpenIndexAsync(IOpenIndexRequest, CancellationToken)` method:: deleted -`OpenJob(Id, Func)` method:: deleted -`OpenJob(IOpenJobRequest)` method:: deleted -`OpenJobAsync(Id, Func, CancellationToken)` method:: deleted -`OpenJobAsync(IOpenJobRequest, CancellationToken)` method:: deleted -`PauseFollowIndex(IndexName, Func)` method:: deleted -`PauseFollowIndex(IPauseFollowIndexRequest)` method:: deleted -`PauseFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`PauseFollowIndexAsync(IPauseFollowIndexRequest, CancellationToken)` method:: deleted -`Ping(IPingRequest)` method:: -Member type changed from `IPingResponse` to `PingResponse`. -`Ping(Func)` method:: -Member type changed from `IPingResponse` to `PingResponse`. -`PingAsync(IPingRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PingAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PostCalendarEvents(Id, Func)` method:: deleted -`PostCalendarEvents(IPostCalendarEventsRequest)` method:: deleted -`PostCalendarEventsAsync(Id, Func, CancellationToken)` method:: deleted -`PostCalendarEventsAsync(IPostCalendarEventsRequest, CancellationToken)` method:: deleted -`PostJobData(Id, Func)` method:: deleted -`PostJobData(IPostJobDataRequest)` method:: deleted -`PostJobDataAsync(Id, Func, CancellationToken)` method:: deleted -`PostJobDataAsync(IPostJobDataRequest, CancellationToken)` method:: deleted -`PostLicense(IPostLicenseRequest)` method:: deleted -`PostLicense(Func)` method:: deleted -`PostLicenseAsync(IPostLicenseRequest, CancellationToken)` method:: deleted -`PostLicenseAsync(Func, CancellationToken)` method:: deleted -`PreviewDatafeed(Id, Func)` method:: deleted -`PreviewDatafeed(IPreviewDatafeedRequest)` method:: deleted -`PreviewDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`PreviewDatafeedAsync(IPreviewDatafeedRequest, CancellationToken)` method:: deleted -`PutAlias(Indices, Name, Func)` method:: deleted -`PutAlias(IPutAliasRequest)` method:: deleted -`PutAliasAsync(Indices, Name, Func, CancellationToken)` method:: deleted -`PutAliasAsync(IPutAliasRequest, CancellationToken)` method:: deleted -`PutCalendar(Id, Func)` method:: deleted -`PutCalendar(IPutCalendarRequest)` method:: deleted -`PutCalendarAsync(Id, Func, CancellationToken)` method:: deleted -`PutCalendarAsync(IPutCalendarRequest, CancellationToken)` method:: deleted -`PutCalendarJob(Id, Id, Func)` method:: deleted -`PutCalendarJob(IPutCalendarJobRequest)` method:: deleted -`PutCalendarJobAsync(Id, Id, Func, CancellationToken)` method:: deleted -`PutCalendarJobAsync(IPutCalendarJobRequest, CancellationToken)` method:: deleted -`PutDatafeed(Id, Func, IPutDatafeedRequest>)` method:: deleted -`PutDatafeed(IPutDatafeedRequest)` method:: deleted -`PutDatafeedAsync(Id, Func, IPutDatafeedRequest>, CancellationToken)` method:: deleted -`PutDatafeedAsync(IPutDatafeedRequest, CancellationToken)` method:: deleted -`PutFilter(Id, Func)` method:: deleted -`PutFilter(IPutFilterRequest)` method:: deleted -`PutFilterAsync(Id, Func, CancellationToken)` method:: deleted -`PutFilterAsync(IPutFilterRequest, CancellationToken)` method:: deleted -`PutIndexTemplate(IPutIndexTemplateRequest)` method:: deleted -`PutIndexTemplate(Name, Func)` method:: deleted -`PutIndexTemplateAsync(IPutIndexTemplateRequest, CancellationToken)` method:: deleted -`PutIndexTemplateAsync(Name, Func, CancellationToken)` method:: deleted -`PutJob(Id, Func, IPutJobRequest>)` method:: deleted -`PutJob(IPutJobRequest)` method:: deleted -`PutJobAsync(Id, Func, IPutJobRequest>, CancellationToken)` method:: deleted -`PutJobAsync(IPutJobRequest, CancellationToken)` method:: deleted -`PutLifecycle(IPutLifecycleRequest)` method:: deleted -`PutLifecycle(PolicyId, Func)` method:: deleted -`PutLifecycleAsync(IPutLifecycleRequest, CancellationToken)` method:: deleted -`PutLifecycleAsync(PolicyId, Func, CancellationToken)` method:: deleted -`PutPipeline(Id, Func)` method:: deleted -`PutPipeline(IPutPipelineRequest)` method:: deleted -`PutPipelineAsync(Id, Func, CancellationToken)` method:: deleted -`PutPipelineAsync(IPutPipelineRequest, CancellationToken)` method:: deleted -`PutPrivileges(IPutPrivilegesRequest)` method:: deleted -`PutPrivileges(Func)` method:: deleted -`PutPrivilegesAsync(IPutPrivilegesRequest, CancellationToken)` method:: deleted -`PutPrivilegesAsync(Func, CancellationToken)` method:: deleted -`PutRole(IPutRoleRequest)` method:: deleted -`PutRole(Name, Func)` method:: deleted -`PutRoleAsync(IPutRoleRequest, CancellationToken)` method:: deleted -`PutRoleAsync(Name, Func, CancellationToken)` method:: deleted -`PutRoleMapping(IPutRoleMappingRequest)` method:: deleted -`PutRoleMapping(Name, Func)` method:: deleted -`PutRoleMappingAsync(IPutRoleMappingRequest, CancellationToken)` method:: deleted -`PutRoleMappingAsync(Name, Func, CancellationToken)` method:: deleted -`PutScript(Id, Func)` method:: -Member type changed from `IPutScriptResponse` to `PutScriptResponse`. -`PutScript(IPutScriptRequest)` method:: -Member type changed from `IPutScriptResponse` to `PutScriptResponse`. -`PutScriptAsync(Id, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PutScriptAsync(IPutScriptRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`PutUser(IPutUserRequest)` method:: deleted -`PutUser(Name, Func)` method:: deleted -`PutUserAsync(IPutUserRequest, CancellationToken)` method:: deleted -`PutUserAsync(Name, Func, CancellationToken)` method:: deleted -`PutWatch(Id, Func)` method:: deleted -`PutWatch(IPutWatchRequest)` method:: deleted -`PutWatchAsync(Id, Func, CancellationToken)` method:: deleted -`PutWatchAsync(IPutWatchRequest, CancellationToken)` method:: deleted -`QuerySql(IQuerySqlRequest)` method:: deleted -`QuerySql(Func)` method:: deleted -`QuerySqlAsync(IQuerySqlRequest, CancellationToken)` method:: deleted -`QuerySqlAsync(Func, CancellationToken)` method:: deleted -`RecoveryStatus(Indices, Func)` method:: deleted -`RecoveryStatus(IRecoveryStatusRequest)` method:: deleted -`RecoveryStatusAsync(Indices, Func, CancellationToken)` method:: deleted -`RecoveryStatusAsync(IRecoveryStatusRequest, CancellationToken)` method:: deleted -`Refresh(Indices, Func)` method:: deleted -`Refresh(IRefreshRequest)` method:: deleted -`RefreshAsync(Indices, Func, CancellationToken)` method:: deleted -`RefreshAsync(IRefreshRequest, CancellationToken)` method:: deleted -`Reindex(IndexName, IndexName, Func, QueryContainer>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IndexName, IndexName, Func, Func, QueryContainer>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IReindexRequest, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(IReindexRequest, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(Func, IReindexRequest>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`Reindex(Func, Func, IReindexRequest>, CancellationToken)` method:: -Member type changed from `IObservable` to `IObservable`. -`ReindexOnServer(IReindexOnServerRequest)` method:: -Member type changed from `IReindexOnServerResponse` to `ReindexOnServerResponse`. -`ReindexOnServer(Func)` method:: -Member type changed from `IReindexOnServerResponse` to `ReindexOnServerResponse`. -`ReindexOnServerAsync(IReindexOnServerRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ReindexOnServerAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`ReindexRethrottle(IReindexRethrottleRequest)` method:: added -`ReindexRethrottle(TaskId, Func)` method:: added -`ReindexRethrottleAsync(IReindexRethrottleRequest, CancellationToken)` method:: added -`ReindexRethrottleAsync(TaskId, Func, CancellationToken)` method:: added -`ReloadSecureSettings(IReloadSecureSettingsRequest)` method:: deleted -`ReloadSecureSettings(Func)` method:: deleted -`ReloadSecureSettingsAsync(IReloadSecureSettingsRequest, CancellationToken)` method:: deleted -`ReloadSecureSettingsAsync(Func, CancellationToken)` method:: deleted -`RemoteInfo(IRemoteInfoRequest)` method:: deleted -`RemoteInfo(Func)` method:: deleted -`RemoteInfoAsync(IRemoteInfoRequest, CancellationToken)` method:: deleted -`RemoteInfoAsync(Func, CancellationToken)` method:: deleted -`RemovePolicy(IndexName, Func)` method:: deleted -`RemovePolicy(IRemovePolicyRequest)` method:: deleted -`RemovePolicyAsync(IndexName, Func, CancellationToken)` method:: deleted -`RemovePolicyAsync(IRemovePolicyRequest, CancellationToken)` method:: deleted -`RenderSearchTemplate(IRenderSearchTemplateRequest)` method:: -Member type changed from `IRenderSearchTemplateResponse` to `RenderSearchTemplateResponse`. -`RenderSearchTemplate(Func)` method:: -Member type changed from `IRenderSearchTemplateResponse` to `RenderSearchTemplateResponse`. -`RenderSearchTemplateAsync(IRenderSearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RenderSearchTemplateAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RestartWatcher(IRestartWatcherRequest)` method:: deleted -`RestartWatcher(Func)` method:: deleted -`RestartWatcherAsync(IRestartWatcherRequest, CancellationToken)` method:: deleted -`RestartWatcherAsync(Func, CancellationToken)` method:: deleted -`Restore(IRestoreRequest)` method:: deleted -`Restore(Name, Name, Func)` method:: deleted -`RestoreAsync(IRestoreRequest, CancellationToken)` method:: deleted -`RestoreAsync(Name, Name, Func, CancellationToken)` method:: deleted -`RestoreObservable(Name, Name, TimeSpan, Func)` method:: deleted -`RestoreObservable(TimeSpan, IRestoreRequest)` method:: deleted -`ResumeFollowIndex(IndexName, Func)` method:: deleted -`ResumeFollowIndex(IResumeFollowIndexRequest)` method:: deleted -`ResumeFollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`ResumeFollowIndexAsync(IResumeFollowIndexRequest, CancellationToken)` method:: deleted -`Rethrottle(IReindexRethrottleRequest)` method:: deleted -`Rethrottle(TaskId, Func)` method:: deleted -`Rethrottle(Func)` method:: deleted -`RethrottleAsync(IReindexRethrottleRequest, CancellationToken)` method:: deleted -`RethrottleAsync(TaskId, Func, CancellationToken)` method:: deleted -`RethrottleAsync(Func, CancellationToken)` method:: deleted -`RetryIlm(IndexName, Func)` method:: deleted -`RetryIlm(IRetryIlmRequest)` method:: deleted -`RetryIlmAsync(IndexName, Func, CancellationToken)` method:: deleted -`RetryIlmAsync(IRetryIlmRequest, CancellationToken)` method:: deleted -`RevertModelSnapshot(Id, Id, Func)` method:: deleted -`RevertModelSnapshot(IRevertModelSnapshotRequest)` method:: deleted -`RevertModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`RevertModelSnapshotAsync(IRevertModelSnapshotRequest, CancellationToken)` method:: deleted -`RolloverIndex(IRolloverIndexRequest)` method:: deleted -`RolloverIndex(Name, Func)` method:: deleted -`RolloverIndexAsync(IRolloverIndexRequest, CancellationToken)` method:: deleted -`RolloverIndexAsync(Name, Func, CancellationToken)` method:: deleted -`RollupSearch(Indices, Func, IRollupSearchRequest>)` method:: deleted -`RollupSearch(Indices, Func, IRollupSearchRequest>)` method:: deleted -`RollupSearch(IRollupSearchRequest)` method:: deleted -`RollupSearchAsync(Indices, Func, IRollupSearchRequest>, CancellationToken)` method:: deleted -`RollupSearchAsync(Indices, Func, IRollupSearchRequest>, CancellationToken)` method:: deleted -`RollupSearchAsync(IRollupSearchRequest, CancellationToken)` method:: deleted -`RootNodeInfo(IRootNodeInfoRequest)` method:: -Member type changed from `IRootNodeInfoResponse` to `RootNodeInfoResponse`. -`RootNodeInfo(Func)` method:: -Member type changed from `IRootNodeInfoResponse` to `RootNodeInfoResponse`. -`RootNodeInfoAsync(IRootNodeInfoRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`RootNodeInfoAsync(Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`Scroll(IScrollRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`Scroll(Time, String, Func, IScrollRequest>)` method:: deleted -`Scroll(Time, String, Func, IScrollRequest>)` method:: added -`Scroll(Time, String, Func, IScrollRequest>)` method:: added -`ScrollAll(IScrollAllRequest, CancellationToken)` method:: -Member type changed from `IObservable>` to `IObservable>`. -`ScrollAll(Time, Int32, Func, IScrollAllRequest>, CancellationToken)` method:: -Member type changed from `IObservable>` to `IObservable>`. -`ScrollAsync(IScrollRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: deleted -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: added -`ScrollAsync(Time, String, Func, IScrollRequest>, CancellationToken)` method:: added -`Search(ISearchRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`Search(ISearchRequest)` method:: deleted -`Search(Func, ISearchRequest>)` method:: deleted -`Search(Func, ISearchRequest>)` method:: deleted -`Search(Func, ISearchRequest>)` method:: added -`Search(Func, ISearchRequest>)` method:: added -`SearchAsync(ISearchRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`SearchAsync(ISearchRequest, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: deleted -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: added -`SearchAsync(Func, ISearchRequest>, CancellationToken)` method:: added -`SearchShards(ISearchShardsRequest)` method:: -Member type changed from `ISearchShardsResponse` to `SearchShardsResponse`. -`SearchShards(Func, ISearchShardsRequest>)` method:: deleted -`SearchShards(Func, ISearchShardsRequest>)` method:: added -`SearchShardsAsync(ISearchShardsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`SearchShardsAsync(Func, ISearchShardsRequest>, CancellationToken)` method:: deleted -`SearchShardsAsync(Func, ISearchShardsRequest>, CancellationToken)` method:: added -`SearchTemplate(ISearchTemplateRequest)` method:: -Member type changed from `ISearchResponse` to `ISearchResponse`. -`SearchTemplate(ISearchTemplateRequest)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: deleted -`SearchTemplate(Func, ISearchTemplateRequest>)` method:: added -`SearchTemplateAsync(ISearchTemplateRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`SearchTemplateAsync(ISearchTemplateRequest, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: deleted -`SearchTemplateAsync(Func, ISearchTemplateRequest>, CancellationToken)` method:: added -`Segments(Indices, Func)` method:: deleted -`Segments(ISegmentsRequest)` method:: deleted -`SegmentsAsync(Indices, Func, CancellationToken)` method:: deleted -`SegmentsAsync(ISegmentsRequest, CancellationToken)` method:: deleted -`ShrinkIndex(IndexName, IndexName, Func)` method:: deleted -`ShrinkIndex(IShrinkIndexRequest)` method:: deleted -`ShrinkIndexAsync(IndexName, IndexName, Func, CancellationToken)` method:: deleted -`ShrinkIndexAsync(IShrinkIndexRequest, CancellationToken)` method:: deleted -`SimulatePipeline(ISimulatePipelineRequest)` method:: deleted -`SimulatePipeline(Func)` method:: deleted -`SimulatePipelineAsync(ISimulatePipelineRequest, CancellationToken)` method:: deleted -`SimulatePipelineAsync(Func, CancellationToken)` method:: deleted -`Snapshot(ISnapshotRequest)` method:: deleted -`Snapshot(Name, Name, Func)` method:: deleted -`SnapshotAsync(ISnapshotRequest, CancellationToken)` method:: deleted -`SnapshotAsync(Name, Name, Func, CancellationToken)` method:: deleted -`SnapshotObservable(Name, Name, TimeSpan, Func)` method:: deleted -`SnapshotObservable(TimeSpan, ISnapshotRequest)` method:: deleted -`SnapshotStatus(ISnapshotStatusRequest)` method:: deleted -`SnapshotStatus(Func)` method:: deleted -`SnapshotStatusAsync(ISnapshotStatusRequest, CancellationToken)` method:: deleted -`SnapshotStatusAsync(Func, CancellationToken)` method:: deleted -`Source(DocumentPath, Func, ISourceRequest>)` method:: deleted -`Source(DocumentPath, Func, ISourceRequest>)` method:: added -`Source(ISourceRequest)` method:: -Member type changed from `T` to `SourceResponse`. -`SourceAsync(DocumentPath, Func, ISourceRequest>, CancellationToken)` method:: deleted -`SourceAsync(DocumentPath, Func, ISourceRequest>, CancellationToken)` method:: added -`SourceAsync(ISourceRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task>`. -`SourceExists(DocumentPath, Func, ISourceExistsRequest>)` method:: deleted -`SourceExists(DocumentPath, Func, ISourceExistsRequest>)` method:: added -`SourceExists(ISourceExistsRequest)` method:: -Member type changed from `IExistsResponse` to `ExistsResponse`. -`SourceExistsAsync(DocumentPath, Func, ISourceExistsRequest>, CancellationToken)` method:: deleted -`SourceExistsAsync(DocumentPath, Func, ISourceExistsRequest>, CancellationToken)` method:: added -`SourceExistsAsync(ISourceExistsRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`SplitIndex(IndexName, IndexName, Func)` method:: deleted -`SplitIndex(ISplitIndexRequest)` method:: deleted -`SplitIndexAsync(IndexName, IndexName, Func, CancellationToken)` method:: deleted -`SplitIndexAsync(ISplitIndexRequest, CancellationToken)` method:: deleted -`StartBasicLicense(IStartBasicLicenseRequest)` method:: deleted -`StartBasicLicense(Func)` method:: deleted -`StartBasicLicenseAsync(IStartBasicLicenseRequest, CancellationToken)` method:: deleted -`StartBasicLicenseAsync(Func, CancellationToken)` method:: deleted -`StartDatafeed(Id, Func)` method:: deleted -`StartDatafeed(IStartDatafeedRequest)` method:: deleted -`StartDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`StartDatafeedAsync(IStartDatafeedRequest, CancellationToken)` method:: deleted -`StartIlm(IStartIlmRequest)` method:: deleted -`StartIlm(Func)` method:: deleted -`StartIlmAsync(IStartIlmRequest, CancellationToken)` method:: deleted -`StartIlmAsync(Func, CancellationToken)` method:: deleted -`StartRollupJob(Id, Func)` method:: deleted -`StartRollupJob(IStartRollupJobRequest)` method:: deleted -`StartRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`StartRollupJobAsync(IStartRollupJobRequest, CancellationToken)` method:: deleted -`StartTrialLicense(IStartTrialLicenseRequest)` method:: deleted -`StartTrialLicense(Func)` method:: deleted -`StartTrialLicenseAsync(IStartTrialLicenseRequest, CancellationToken)` method:: deleted -`StartTrialLicenseAsync(Func, CancellationToken)` method:: deleted -`StartWatcher(IStartWatcherRequest)` method:: deleted -`StartWatcher(Func)` method:: deleted -`StartWatcherAsync(IStartWatcherRequest, CancellationToken)` method:: deleted -`StartWatcherAsync(Func, CancellationToken)` method:: deleted -`StopDatafeed(Id, Func)` method:: deleted -`StopDatafeed(IStopDatafeedRequest)` method:: deleted -`StopDatafeedAsync(Id, Func, CancellationToken)` method:: deleted -`StopDatafeedAsync(IStopDatafeedRequest, CancellationToken)` method:: deleted -`StopIlm(IStopIlmRequest)` method:: deleted -`StopIlm(Func)` method:: deleted -`StopIlmAsync(IStopIlmRequest, CancellationToken)` method:: deleted -`StopIlmAsync(Func, CancellationToken)` method:: deleted -`StopRollupJob(Id, Func)` method:: deleted -`StopRollupJob(IStopRollupJobRequest)` method:: deleted -`StopRollupJobAsync(Id, Func, CancellationToken)` method:: deleted -`StopRollupJobAsync(IStopRollupJobRequest, CancellationToken)` method:: deleted -`StopWatcher(IStopWatcherRequest)` method:: deleted -`StopWatcher(Func)` method:: deleted -`StopWatcherAsync(IStopWatcherRequest, CancellationToken)` method:: deleted -`StopWatcherAsync(Func, CancellationToken)` method:: deleted -`SyncedFlush(Indices, Func)` method:: deleted -`SyncedFlush(ISyncedFlushRequest)` method:: deleted -`SyncedFlushAsync(Indices, Func, CancellationToken)` method:: deleted -`SyncedFlushAsync(ISyncedFlushRequest, CancellationToken)` method:: deleted -`TermVectors(ITermVectorsRequest)` method:: deleted -`TermVectors(ITermVectorsRequest)` method:: added -`TermVectors(Func, ITermVectorsRequest>)` method:: deleted -`TermVectors(Func, ITermVectorsRequest>)` method:: added -`TermVectorsAsync(ITermVectorsRequest, CancellationToken)` method:: deleted -`TermVectorsAsync(ITermVectorsRequest, CancellationToken)` method:: added -`TermVectorsAsync(Func, ITermVectorsRequest>, CancellationToken)` method:: deleted -`TermVectorsAsync(Func, ITermVectorsRequest>, CancellationToken)` method:: added -`TranslateSql(ITranslateSqlRequest)` method:: deleted -`TranslateSql(Func)` method:: deleted -`TranslateSqlAsync(ITranslateSqlRequest, CancellationToken)` method:: deleted -`TranslateSqlAsync(Func, CancellationToken)` method:: deleted -`TypeExists(Indices, Types, Func)` method:: deleted -`TypeExists(ITypeExistsRequest)` method:: deleted -`TypeExistsAsync(Indices, Types, Func, CancellationToken)` method:: deleted -`TypeExistsAsync(ITypeExistsRequest, CancellationToken)` method:: deleted -`UnfollowIndex(IndexName, Func)` method:: deleted -`UnfollowIndex(IUnfollowIndexRequest)` method:: deleted -`UnfollowIndexAsync(IndexName, Func, CancellationToken)` method:: deleted -`UnfollowIndexAsync(IUnfollowIndexRequest, CancellationToken)` method:: deleted -`Update(DocumentPath, Func, IUpdateRequest>)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`Update(DocumentPath, Func, IUpdateRequest>)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`Update(IUpdateRequest)` method:: deleted -`Update(IUpdateRequest)` method:: -Member type changed from `IUpdateResponse` to `UpdateResponse`. -`UpdateAsync(DocumentPath, Func, IUpdateRequest>, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateAsync(DocumentPath, Func, IUpdateRequest>, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateAsync(IUpdateRequest, CancellationToken)` method:: deleted -`UpdateAsync(IUpdateRequest, CancellationToken)` method:: -Member type changed from `Task>` to `Task>`. -`UpdateByQuery(IUpdateByQueryRequest)` method:: -Member type changed from `IUpdateByQueryResponse` to `UpdateByQueryResponse`. -`UpdateByQuery(Func, IUpdateByQueryRequest>)` method:: deleted -`UpdateByQuery(Func, IUpdateByQueryRequest>)` method:: added -`UpdateByQueryAsync(IUpdateByQueryRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateByQueryAsync(Func, IUpdateByQueryRequest>, CancellationToken)` method:: deleted -`UpdateByQueryAsync(Func, IUpdateByQueryRequest>, CancellationToken)` method:: added -`UpdateByQueryRethrottle(IUpdateByQueryRethrottleRequest)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`UpdateByQueryRethrottle(TaskId, Func)` method:: -Member type changed from `IListTasksResponse` to `ListTasksResponse`. -`UpdateByQueryRethrottleAsync(IUpdateByQueryRethrottleRequest, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateByQueryRethrottleAsync(TaskId, Func, CancellationToken)` method:: -Member type changed from `Task` to `Task`. -`UpdateDatafeed(Id, Func, IUpdateDatafeedRequest>)` method:: deleted -`UpdateDatafeed(IUpdateDatafeedRequest)` method:: deleted -`UpdateDatafeedAsync(Id, Func, IUpdateDatafeedRequest>, CancellationToken)` method:: deleted -`UpdateDatafeedAsync(IUpdateDatafeedRequest, CancellationToken)` method:: deleted -`UpdateFilter(Id, Func)` method:: deleted -`UpdateFilter(IUpdateFilterRequest)` method:: deleted -`UpdateFilterAsync(Id, Func, CancellationToken)` method:: deleted -`UpdateFilterAsync(IUpdateFilterRequest, CancellationToken)` method:: deleted -`UpdateIndexSettings(Indices, Func)` method:: deleted -`UpdateIndexSettings(IUpdateIndexSettingsRequest)` method:: deleted -`UpdateIndexSettingsAsync(Indices, Func, CancellationToken)` method:: deleted -`UpdateIndexSettingsAsync(IUpdateIndexSettingsRequest, CancellationToken)` method:: deleted -`UpdateJob(Id, Func, IUpdateJobRequest>)` method:: deleted -`UpdateJob(IUpdateJobRequest)` method:: deleted -`UpdateJobAsync(Id, Func, IUpdateJobRequest>, CancellationToken)` method:: deleted -`UpdateJobAsync(IUpdateJobRequest, CancellationToken)` method:: deleted -`UpdateModelSnapshot(Id, Id, Func)` method:: deleted -`UpdateModelSnapshot(IUpdateModelSnapshotRequest)` method:: deleted -`UpdateModelSnapshotAsync(Id, Id, Func, CancellationToken)` method:: deleted -`UpdateModelSnapshotAsync(IUpdateModelSnapshotRequest, CancellationToken)` method:: deleted -`Upgrade(Indices, Func)` method:: deleted -`Upgrade(IUpgradeRequest)` method:: deleted -`UpgradeAsync(Indices, Func, CancellationToken)` method:: deleted -`UpgradeAsync(IUpgradeRequest, CancellationToken)` method:: deleted -`UpgradeStatus(IUpgradeStatusRequest)` method:: deleted -`UpgradeStatus(Func)` method:: deleted -`UpgradeStatusAsync(IUpgradeStatusRequest, CancellationToken)` method:: deleted -`UpgradeStatusAsync(Func, CancellationToken)` method:: deleted -`ValidateDetector(IValidateDetectorRequest)` method:: deleted -`ValidateDetector(Func, IValidateDetectorRequest>)` method:: deleted -`ValidateDetectorAsync(IValidateDetectorRequest, CancellationToken)` method:: deleted -`ValidateDetectorAsync(Func, IValidateDetectorRequest>, CancellationToken)` method:: deleted -`ValidateJob(IValidateJobRequest)` method:: deleted -`ValidateJob(Func, IValidateJobRequest>)` method:: deleted -`ValidateJobAsync(IValidateJobRequest, CancellationToken)` method:: deleted -`ValidateJobAsync(Func, IValidateJobRequest>, CancellationToken)` method:: deleted -`ValidateQuery(IValidateQueryRequest)` method:: deleted -`ValidateQuery(Func, IValidateQueryRequest>)` method:: deleted -`ValidateQueryAsync(IValidateQueryRequest, CancellationToken)` method:: deleted -`ValidateQueryAsync(Func, IValidateQueryRequest>, CancellationToken)` method:: deleted -`VerifyRepository(IVerifyRepositoryRequest)` method:: deleted -`VerifyRepository(Name, Func)` method:: deleted -`VerifyRepositoryAsync(IVerifyRepositoryRequest, CancellationToken)` method:: deleted -`VerifyRepositoryAsync(Name, Func, CancellationToken)` method:: deleted -`WatcherStats(IWatcherStatsRequest)` method:: deleted -`WatcherStats(Func)` method:: deleted -`WatcherStatsAsync(IWatcherStatsRequest, CancellationToken)` method:: deleted -`WatcherStatsAsync(Func, CancellationToken)` method:: deleted -`XPackInfo(IXPackInfoRequest)` method:: deleted -`XPackInfo(Func)` method:: deleted -`XPackInfoAsync(IXPackInfoRequest, CancellationToken)` method:: deleted -`XPackInfoAsync(Func, CancellationToken)` method:: deleted -`XPackUsage(IXPackUsageRequest)` method:: deleted -`XPackUsage(Func)` method:: deleted -`XPackUsageAsync(IXPackUsageRequest, CancellationToken)` method:: deleted -`XPackUsageAsync(Func, CancellationToken)` method:: deleted -`Cat` property:: added -`Cluster` property:: added -`CrossClusterReplication` property:: added -`Graph` property:: added -`IndexLifecycleManagement` property:: added -`Indices` property:: added -`Ingest` property:: added -`License` property:: added -`MachineLearning` property:: added -`Migration` property:: added -`Nodes` property:: added -`Rollup` property:: added -`Security` property:: added -`Snapshot` property:: added -`Sql` property:: added -`Tasks` property:: added -`Watcher` property:: added -`XPack` property:: added - - - - - - -[discrete] -==== `Nest.IEnableUserResponse` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.IExecuteWatchRequest` - -[horizontal] - -[discrete] -==== `Nest.IExecuteWatchResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IExistsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IExplainLifecycleResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IExplainRequest` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IExplainRequest` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`Query` property:: deleted -`StoredFields` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.IExplainResponse` - -[horizontal] -`Explanation` property:: deleted -`Matched` property:: deleted - - - - - - -[discrete] -==== `Nest.IFieldCapabilitiesResponse` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.IFieldLookup` - -[horizontal] -`Type` property:: deleted - - - - - - - - - -[discrete] -==== `Nest.IFiltersAggregation` - -[horizontal] - - - - - -[discrete] -==== `Nest.IFlushJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IFlushResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IFollowIndexStatsResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IForceMergeResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IForecastJobResponse` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.IFuzzySuggester` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGenericProperty` - -[horizontal] -`Indexed` property:: deleted - - - - - - -[discrete] -==== `Nest.IGeoDistanceSort` - -[horizontal] -`GeoUnit` property:: deleted -`Unit` property:: added - - -[discrete] -==== `Nest.IGeoIndexedShapeQuery` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGeometryCollection` - -[horizontal] -`Type` property:: deleted - - - - -[discrete] -==== `Nest.IGeoShape` - -[horizontal] -`IgnoreUnmapped` property:: deleted - -[discrete] -==== `Nest.IGeoShapeCircleQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeEnvelopeQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeGeometryCollectionQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeLineStringQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeMultiLineStringQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeMultiPointQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeMultiPolygonQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapePointQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapePolygonQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGeoShapeProperty` - -[horizontal] -`DistanceErrorPercentage` property:: deleted -`PointsOnly` property:: deleted -`Precision` property:: deleted -`Tree` property:: deleted -`TreeLevels` property:: deleted - -[discrete] -==== `Nest.IGeoShapeQuery` - -[horizontal] -`IndexedShape` property:: added -`Shape` property:: added - - - -[discrete] -==== `Nest.IGetAliasResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetAnomalyRecordsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetApiKeyResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetAutoFollowPatternResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetBasicLicenseStatusResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetBucketsRequest` - -[horizontal] -`Timestamp` property setter:: - -[discrete] -==== `Nest.IGetBucketsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetCalendarEventsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetCalendarsResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetCategoriesRequest` - -[horizontal] - -[discrete] -==== `Nest.IGetCategoriesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetCertificatesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetDatafeedsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetDatafeedStatsResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetFieldMappingRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IGetFieldMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetFiltersResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetIlmStatusResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetIndexSettingsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetIndexTemplateResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetInfluencersResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetJobsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetJobStatsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetLicenseResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetLifecycleRequest` - -[horizontal] - -[discrete] -==== `Nest.IGetLifecycleResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetMappingRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IGetMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetModelSnapshotsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetOverallBucketsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetPipelineResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetPrivilegesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetRepositoryResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IGetResponse` - -[horizontal] -`Fields` property:: deleted -`Found` property:: deleted -`Id` property:: deleted -`Index` property:: deleted -`Parent` property:: deleted -`PrimaryTerm` property:: deleted -`Routing` property:: deleted -`SequenceNumber` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - - -[discrete] -==== `Nest.IGetRoleMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetRoleResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IGetRollupCapabilitiesRequest` - -[horizontal] -`Id` property:: added -`Index` property:: deleted - -[discrete] -==== `Nest.IGetRollupCapabilitiesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetRollupIndexCapabilitiesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetRollupJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetScriptResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetSnapshotResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetTaskResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetTrialLicenseStatusResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetUserAccessTokenResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetUserPrivilegesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetUserResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IGetWatchResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IGraphExploreRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IGraphExploreResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IGrokProcessorPatternsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IHasChildQuery` - -[horizontal] - -[discrete] -==== `Nest.IHasParentQuery` - -[horizontal] - - -[discrete] -==== `Nest.IHasPrivilegesResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IHighLevelToLowLevelDispatcher` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IHipChatAction` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IHipChatMessage` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IHit` - -[horizontal] -`Highlight` property:: added -`Highlights` property:: deleted -`Nested` property:: added - -[discrete] -==== `Nest.IHitMetadata` - -[horizontal] -`Parent` property:: deleted -`PrimaryTerm` property:: added -`SequenceNumber` property:: added - -[discrete] -==== `Nest.IHitsMetadata` - -[horizontal] -type:: added - - - - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.IIdsQuery` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IIndexAction` - -[horizontal] -`DocType` property:: deleted - - - - - - - -[discrete] -==== `Nest.IIndexRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IIndexState` - -[horizontal] - - - - -[discrete] -==== `Nest.IIndicesResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IIndicesShardStoresRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IIndicesShardStoresResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IIndicesStatsRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IIndicesStatsResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IInlineGet` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IInlineScript` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.IInlineScriptCondition` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.IInlineScriptTransform` - -[horizontal] -`Inline` property:: deleted - - - - - -[discrete] -==== `Nest.IIntervals` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsAllOf` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsAnyOf` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsContainer` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsFilter` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsMatch` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IIntervalsQuery` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.IInvalidateApiKeyResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IInvalidateUserAccessTokenResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IIpRange` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IIpRangeAggregation` - -[horizontal] - -[discrete] -==== `Nest.IIpRangeAggregationRange` - -[horizontal] -type:: added - - - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.ILazyDocument` - -[horizontal] -`AsAsync(CancellationToken)` method:: added -`AsAsync(Type, CancellationToken)` method:: added - - - -[discrete] -==== `Nest.ILikeDocument` - -[horizontal] -`Type` property:: deleted - - - - - - -[discrete] -==== `Nest.IListTasksResponse` - -[horizontal] -type:: deleted - - - - - - - - - -[discrete] -==== `Nest.IMachineLearningInfoResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IMappings` - -[horizontal] -type:: deleted - - - - - - - - - - - - -[discrete] -==== `Nest.IMigrationAssistanceRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IMigrationAssistanceResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IMigrationUpgradeRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IMigrationUpgradeResponse` - -[horizontal] -type:: deleted - - - - - - - - - - -[discrete] -==== `Nest.IMoveToStepResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IMultiGetHit` - -[horizontal] -`Parent` property:: deleted - -[discrete] -==== `Nest.IMultiGetOperation` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiGetRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiGetResponse` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.IMultiSearchRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiSearchResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IMultiSearchTemplateRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiTermVectorOperation` - -[horizontal] -`Fields` property:: added -`StoredFields` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiTermVectorsRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IMultiTermVectorsResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IncludeExclude` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IndexAction` - -[horizontal] -`DocType` property:: deleted - -[discrete] -==== `Nest.IndexActionDescriptor` - -[horizontal] -`DocType()` method:: deleted -`DocType(TypeName)` method:: deleted -`ExecutionTimeField(Expression>)` method:: deleted -`ExecutionTimeField(Expression>)` method:: added - - -[discrete] -==== `Nest.IndexActionResultIndexResponse` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.IndexDescriptor` - -[horizontal] -`IndexDescriptor()` method:: added -`IndexDescriptor(DocumentPath)` method:: deleted -`IndexDescriptor(Id)` method:: added -`IndexDescriptor(IndexName)` method:: added -`IndexDescriptor(IndexName, Id)` method:: added -`IndexDescriptor(IndexName, TypeName)` method:: deleted -`IndexDescriptor(TDocument, IndexName, Id)` method:: added -`IfPrimaryTerm(Nullable)` method:: -Parameter name changed from `ifPrimaryTerm` to `ifprimaryterm`. -`IfSeqNo(Nullable)` method:: deleted -`IfSequenceNumber(Nullable)` method:: added -`OpType(Nullable)` method:: -Parameter name changed from `opType` to `optype`. -`Parent(String)` method:: deleted -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`VersionType(Nullable)` method:: -Parameter name changed from `versionType` to `versiontype`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.IndexExistsDescriptor` - -[horizontal] -`IndexExistsDescriptor()` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`IncludeDefaults(Nullable)` method:: -Parameter name changed from `includeDefaults` to `includedefaults`. - -[discrete] -==== `Nest.IndexExistsRequest` - -[horizontal] -`IndexExistsRequest()` method:: added - - - - -[discrete] -==== `Nest.IndexManyExtensions` - -[horizontal] -`IndexMany(IElasticClient, IEnumerable, IndexName)` method:: added -`IndexMany(IElasticClient, IEnumerable, IndexName, TypeName)` method:: deleted -`IndexManyAsync(IElasticClient, IEnumerable, IndexName, TypeName, CancellationToken)` method:: deleted -`IndexManyAsync(IElasticClient, IEnumerable, IndexName, CancellationToken)` method:: added - -[discrete] -==== `Nest.IndexMappings` - -[horizontal] - -[discrete] -==== `Nest.IndexName` - -[horizontal] -`Rebuild(String, Type, String)` method:: -Member is less visible. - - -[discrete] -==== `Nest.IndexRequest` - -[horizontal] -`IndexRequest()` method:: added -`IndexRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`IndexRequest(Id)` method:: added -`IndexRequest(IndexName)` method:: added -`IndexRequest(IndexName, Id)` method:: added -`IndexRequest(IndexName, TypeName)` method:: deleted -`IndexRequest(IndexName, TypeName, Id)` method:: deleted -`IndexRequest(TDocument, IndexName, Id)` method:: added -`DefaultRouting()` method:: deleted -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted - -[discrete] -==== `Nest.IndexResponse` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`IsValid` property:: added -`PrimaryTerm` property:: deleted -`Result` property:: deleted -`SequenceNumber` property:: deleted -`Shards` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.IndexRoutingTable` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.IndexState` - -[horizontal] - - -[discrete] -==== `Nest.IndexTemplateExistsDescriptor` - -[horizontal] -`IndexTemplateExistsDescriptor()` method:: added -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.IndexTemplateExistsRequest` - -[horizontal] -`IndexTemplateExistsRequest()` method:: added - -[discrete] -==== `Nest.IndexUpgradeCheck` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.Indices` - -[horizontal] -`Index(String)` method:: added - - - -[discrete] -==== `Nest.IndicesResponseBase` - -[horizontal] -`Acknowledged` property:: deleted -`ShardsHit` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.IndicesShardStoresDescriptor` - -[horizontal] -`IndicesShardStoresDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`OperationThreading(String)` method:: deleted -`Types(TypeName[])` method:: deleted - -[discrete] -==== `Nest.IndicesShardStoresRequest` - -[horizontal] -`OperationThreading` property:: deleted -`Types` property:: deleted - -[discrete] -==== `Nest.IndicesShardStoresResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.IndicesStatsDescriptor` - -[horizontal] -`IndicesStatsDescriptor(Indices)` method:: added -`IndicesStatsDescriptor(Indices, Metrics)` method:: added -`IndicesStatsDescriptor(Metrics)` method:: added -`CompletionFields(Fields)` method:: -Parameter name changed from `completionFields` to `completionfields`. -`FielddataFields(Fields)` method:: -Parameter name changed from `fielddataFields` to `fielddatafields`. -`IncludeSegmentFileSizes(Nullable)` method:: -Parameter name changed from `includeSegmentFileSizes` to `includesegmentfilesizes`. -`Metric(IndicesStatsMetric)` method:: deleted -`Metric(Metrics)` method:: added -`Types(TypeName[])` method:: deleted - -[discrete] -==== `Nest.IndicesStatsRequest` - -[horizontal] -`IndicesStatsRequest(IndicesStatsMetric)` method:: deleted -`IndicesStatsRequest(Indices, IndicesStatsMetric)` method:: deleted -`IndicesStatsRequest(Indices, Metrics)` method:: added -`IndicesStatsRequest(Metrics)` method:: added -`Types` property:: deleted - -[discrete] -==== `Nest.IndicesStatsResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. -`Stats` property getter:: -changed to non-virtual. - - - - - - -[discrete] -==== `Nest.Infer` - -[horizontal] -`Field(Expression>, Nullable)` method:: deleted -`Field(Expression>, Nullable, String)` method:: added -`Field(PropertyInfo, Nullable)` method:: deleted -`Field(String, Nullable)` method:: deleted -`Property(Expression>)` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Type(TypeName[])` method:: deleted -`Type(IEnumerable)` method:: deleted - -[discrete] -==== `Nest.Inferrer` - -[horizontal] -`TypeName()` method:: deleted -`TypeName(TypeName)` method:: deleted - - -[discrete] -==== `Nest.InfoContentDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.InlineGet` - -[horizontal] -type:: added - -[discrete] -==== `Nest.InlineScript` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.InlineScriptCondition` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.InlineScriptConditionDescriptor` - -[horizontal] -`InlineScriptConditionDescriptor(String)` method:: -Parameter name changed from `script` to `source`. - -[discrete] -==== `Nest.InlineScriptDescriptor` - -[horizontal] -`Inline(String)` method:: deleted - -[discrete] -==== `Nest.InlineScriptTransform` - -[horizontal] -`InlineScriptTransform(String)` method:: -Parameter name changed from `script` to `source`. -`Inline` property:: deleted - - -[discrete] -==== `Nest.InnerHitsMetadata` - -[horizontal] - - - -[discrete] -==== `Nest.INodesHotThreadsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.INodesInfoResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.INodesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.INodesStatsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.INodesUsageResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `Nest.InstantGet` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IntervalsAllOf` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsAllOfDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsAnyOf` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsAnyOfDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsBase` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsContainer` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsDescriptorBase` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsFilter` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsFilterDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsListDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsMatch` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsMatchDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsQuery` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IntervalsQueryDescriptor` - -[horizontal] -type:: added - - - - - - -[discrete] -==== `Nest.InvalidateApiKeyResponse` - -[horizontal] -`ErrorCount` property getter:: -changed to non-virtual. -`ErrorDetails` property getter:: -changed to non-virtual. -`InvalidatedApiKeys` property getter:: -changed to non-virtual. -`PreviouslyInvalidatedApiKeys` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.InvalidateUserAccessTokenResponse` - -[horizontal] -`Created` property:: deleted -`ErrorCount` property:: added -`InvalidatedTokens` property:: added -`PreviouslyInvalidatedTokens` property:: added - - - -[discrete] -==== `Nest.IOpenIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IOpenJobResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.IPauseFollowIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPercentileRanksAggregation` - -[horizontal] -`Keyed` property:: added - -[discrete] -==== `Nest.IPercentilesAggregation` - -[horizontal] -`Keyed` property:: added - - -[discrete] -==== `Nest.IPercolateQuery` - -[horizontal] -`DocumentType` property:: deleted -`Type` property:: deleted - - - - - - - - - - - -[discrete] -==== `Nest.IPingResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `Nest.IPostCalendarEventsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPostJobDataResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPostLicenseResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IpRange` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IpRangeAggregation` - -[horizontal] - -[discrete] -==== `Nest.IpRangeAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`Ranges(Func[])` method:: added -`Ranges(Func[])` method:: deleted - -[discrete] -==== `Nest.IpRangeAggregationRange` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IpRangeAggregationRangeDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IpRangeBucket` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IpRangeDescriptor` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IPreviewDatafeedResponse` - -[horizontal] - - - - - - -[discrete] -==== `Nest.IPutAliasResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutCalendarJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutCalendarResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IPutDatafeedRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IPutDatafeedResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutFilterResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutIndexTemplateResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutJobResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IPutLifecycleRequest` - -[horizontal] - -[discrete] -==== `Nest.IPutLifecycleResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IPutMappingRequest` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.IPutMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutPipelineResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutPrivilegesResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutRoleMappingResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutRoleResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutScriptResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutUserResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IPutWatchResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IQueryContainer` - -[horizontal] -`Intervals` property:: added -`Type` property:: deleted - - -[discrete] -==== `Nest.IQuerySqlResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IQueryStringQuery` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - -[discrete] -==== `Nest.IQueryVisitor` - -[horizontal] -`Visit(IGeoIndexedShapeQuery)` method:: deleted -`Visit(IGeoShapeCircleQuery)` method:: deleted -`Visit(IGeoShapeEnvelopeQuery)` method:: deleted -`Visit(IGeoShapeGeometryCollectionQuery)` method:: deleted -`Visit(IGeoShapeLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiPointQuery)` method:: deleted -`Visit(IGeoShapeMultiPolygonQuery)` method:: deleted -`Visit(IGeoShapePointQuery)` method:: deleted -`Visit(IGeoShapePolygonQuery)` method:: deleted -`Visit(IIntervalsQuery)` method:: added -`Visit(ITypeQuery)` method:: deleted - - - - - - - -[discrete] -==== `Nest.IRecoveryStatusResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IRefreshResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IReindexDestination` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.IReindexOnServerResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IReindexRethrottleResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IReindexSource` - -[horizontal] -`Type` property:: deleted - - - -[discrete] -==== `Nest.IReloadSecureSettingsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IRemoteInfoResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IRemovePolicyResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IRemoveProcessor` - -[horizontal] - - -[discrete] -==== `Nest.IRenderSearchTemplateRequest` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.IRenderSearchTemplateResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IRequest` - -[horizontal] -`GetUrl(IConnectionSettingsValues)` method:: added -`ContentType` property:: added -`RequestParameters` property:: added - - - - - -[discrete] -==== `Nest.IRestartWatcherRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IRestartWatcherResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IRestoreResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IResumeFollowIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IRetryIlmResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IRevertModelSnapshotResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IRolloverIndexResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IRolloverLifecycleAction` - -[horizontal] -`MaximumSizeAsString` property:: deleted - - - -[discrete] -==== `Nest.IRollupSearchRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IRollupSearchResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IRootNodeInfoResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IS3RepositorySettings` - -[horizontal] -`AccessKey` property:: deleted -`ConcurrentStreams` property:: deleted -`SecretKey` property:: deleted - - - - - - - - - - - - - -[discrete] -==== `Nest.IScriptProcessor` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.IScriptQuery` - -[horizontal] -`Id` property:: deleted -`Inline` property:: deleted -`Lang` property:: deleted -`Params` property:: deleted -`Script` property:: added -`Source` property:: deleted - -[discrete] -==== `Nest.IScriptScoreFunction` - -[horizontal] - - - - - -[discrete] -==== `Nest.ISearchInputRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.ISearchRequest` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.ISearchResponse` - -[horizontal] -`Aggs` property:: deleted - - -[discrete] -==== `Nest.ISearchShardsResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ISearchTemplateRequest` - -[horizontal] -`Inline` property:: deleted -`Type` property:: deleted - - - -[discrete] -==== `Nest.ISegmentsResponse` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.IShardsOperationResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IShrinkIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ISignificantTermsAggregation` - -[horizontal] - -[discrete] -==== `Nest.ISignificantTextAggregation` - -[horizontal] - - - - - - -[discrete] -==== `Nest.ISimulatePipelineDocument` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.ISimulatePipelineResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - -[discrete] -==== `Nest.ISnapshotResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.ISnapshotStatusResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.ISort` - -[horizontal] -`NestedFilter` property:: deleted -`NestedPath` property:: deleted - -[discrete] -==== `Nest.ISortOrder` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.ISourceExistsRequest` - -[horizontal] -`Type` property:: deleted - - - - -[discrete] -==== `Nest.ISourceRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ISourceResponse` - -[horizontal] - - - - - - - - - - - - - -[discrete] -==== `Nest.ISplitIndexResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.IStandardTokenFilter` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IStartBasicLicenseResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStartDatafeedResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStartIlmResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStartRollupJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStartTrialLicenseResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStartWatcherResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `Nest.IStopDatafeedResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStopIlmResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IStopRollupJobResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IStopWatcherResponse` - -[horizontal] -type:: deleted - - - - -[discrete] -==== `Nest.ISuggest` - -[horizontal] -type:: added - - - - - -[discrete] -==== `Nest.ISuggestDictionary` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.ISuggestFuzziness` - -[horizontal] -type:: added - -[discrete] -==== `Nest.ISuggestOption` - -[horizontal] -type:: added - - - - -[discrete] -==== `Nest.ISyncedFlushResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.ISynonymGraphTokenFilter` - -[horizontal] -`IgnoreCase` property:: deleted - -[discrete] -==== `Nest.ISynonymTokenFilter` - -[horizontal] -`IgnoreCase` property:: deleted - - -[discrete] -==== `Nest.ITemplateMapping` - -[horizontal] - - - - - - - - -[discrete] -==== `Nest.ITermSuggester` - -[horizontal] - - -[discrete] -==== `Nest.ITermVectors` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ITermVectorsRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ITermVectorsResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.ITranslateSqlResponse` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.ITypedSearchRequest` - -[horizontal] -type:: added - -[discrete] -==== `Nest.ITypeExistsRequest` - -[horizontal] - - -[discrete] -==== `Nest.ITypeQuery` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IUnfollowIndexResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateByQueryRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IUpdateByQueryResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateDatafeedRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.IUpdateDatafeedResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateFilterResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateIndexSettingsResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateJobResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IUpdateModelSnapshotResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IUpdateRequest` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.IUpdateResponse` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`Result` property:: deleted -`ShardsHit` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.IUpgradeRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IUpgradeResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IUpgradeStatusRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IUpgradeStatusResponse` - -[horizontal] -type:: deleted - - - - - -[discrete] -==== `Nest.IValidateDetectorResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IValidateJobResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IValidateQueryRequest` - -[horizontal] -`Type` property:: deleted - - -[discrete] -==== `Nest.IValidateQueryResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.IVerifyRepositoryResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.IWatch` - -[horizontal] -type:: added - -[discrete] -==== `Nest.IWatcherStatsRequest` - -[horizontal] -`Metric` property:: added -`WatcherStatsMetric` property:: deleted - -[discrete] -==== `Nest.IWatcherStatsResponse` - -[horizontal] -type:: deleted - - - - - - - - - - - -[discrete] -==== `Nest.IXPackInfoResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.IXPackUsageResponse` - -[horizontal] -type:: deleted - - - - - - - - -[discrete] -==== `.Child` - -[horizontal] -`Parent` property:: deleted -`ParentId` property:: added - -[discrete] -==== `Nest.JoinProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.JsonProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - -[discrete] -==== `Nest.KeepTypesTokenFilter` - -[horizontal] -`Mode` property getter:: -changed to virtual. -`Mode` property setter:: -changed to virtual. -`Types` property getter:: -changed to virtual. -`Types` property setter:: -changed to virtual. - - -[discrete] -==== `Nest.KeyValueProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.LatLongDetectorDescriptor` - -[horizontal] -`LatLongDetectorDescriptor(String)` method:: deleted -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.LazyDocument` - -[horizontal] -`AsAsync(CancellationToken)` method:: added -`AsAsync(Type, CancellationToken)` method:: added - - - - - -[discrete] -==== `Nest.LifecycleActions` - -[horizontal] -`LifecycleActions(Dictionary)` method:: deleted - -[discrete] -==== `Nest.LifecycleExplain` - -[horizontal] - - - - -[discrete] -==== `Nest.LikeDocumentBase` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.LikeDocumentDescriptor` - -[horizontal] -`Type(TypeName)` method:: deleted - - -[discrete] -==== `Nest.LineStringGeoShape` - -[horizontal] -`LineStringGeoShape()` method:: -Member is less visible. - -[discrete] -==== `Nest.ListTasksDescriptor` - -[horizontal] -`GroupBy(Nullable)` method:: -Parameter name changed from `groupBy` to `groupby`. -`ParentNode(String)` method:: deleted -`ParentTaskId(String)` method:: -Parameter name changed from `parentTaskId` to `parenttaskid`. -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.ListTasksRequest` - -[horizontal] -`ParentNode` property:: deleted - -[discrete] -==== `Nest.ListTasksResponse` - -[horizontal] -`NodeFailures` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.LongId` - -[horizontal] -type:: added - - - -[discrete] -==== `Nest.LowercaseProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.MachineLearningInfoResponse` - -[horizontal] -`Defaults` property getter:: -changed to non-virtual. -`Limits` property getter:: -changed to non-virtual. -`UpgradeMode` property getter:: -changed to non-virtual. - - - - - - - -[discrete] -==== `Nest.Mappings` - -[horizontal] -`Mappings(Dictionary)` method:: deleted -`Mappings(IDictionary)` method:: deleted -`Add(TypeName, ITypeMapping)` method:: deleted -`Add(Object, ITypeMapping)` method:: added -`GetEnumerator()` method:: added -`Item` property:: added - -[discrete] -==== `Nest.MappingsDescriptor` - -[horizontal] -`AssignMap(IPromise)` method:: deleted -`Map(TypeName, Func, ITypeMapping>)` method:: deleted -`Map(TypeName, Func, ITypeMapping>)` method:: deleted -`Map(Func, ITypeMapping>)` method:: added -`Map(Func, ITypeMapping>)` method:: -Method changed to non-virtual. -`Map(Object, Func, ITypeMapping>)` method:: added -`Map(Object, Func, ITypeMapping>)` method:: added - -[discrete] -==== `Nest.MappingWalker` - -[horizontal] -`Accept(GetMappingResponse)` method:: added -`Accept(IGetMappingResponse)` method:: deleted - - - -[discrete] -==== `Nest.MatrixAggregateBase` - -[horizontal] -`Meta` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.MatrixStatsAggregate` - -[horizontal] - - - - -[discrete] -==== `Nest.MergesStats` - -[horizontal] - -[discrete] -==== `Nest.MetadataIndexState` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MetadataState` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MetricAggregateBase` - -[horizontal] -`Meta` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.MetricAggregationDescriptorBase` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.MetricDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.MigrationAssistanceDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MigrationAssistanceRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MigrationAssistanceResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MigrationUpgradeDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MigrationUpgradeRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MigrationUpgradeResponse` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.MissingAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.MoveToStepDescriptor` - -[horizontal] -`MoveToStepDescriptor()` method:: added -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.MoveToStepRequest` - -[horizontal] -`MoveToStepRequest()` method:: added -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.MultiBucketAggregate` - -[horizontal] -`Meta` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.MultiGetDescriptor` - -[horizontal] -`MultiGetDescriptor(IndexName)` method:: added -`RequestDefaults(MultiGetRequestParameters)` method:: added -`SourceEnabled(Nullable)` method:: -Parameter name changed from `sourceEnabled` to `sourceenabled`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.MultiGetHit` - -[horizontal] -`Parent` property:: deleted - -[discrete] -==== `Nest.MultiGetOperation` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.MultiGetOperationDescriptor` - -[horizontal] -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.MultiGetRequest` - -[horizontal] -`MultiGetRequest(IndexName, TypeName)` method:: deleted -`RequestDefaults(MultiGetRequestParameters)` method:: added -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.MultiGetResponse` - -[horizontal] -`Get(Int64)` method:: -Method changed to non-virtual. -`Get(String)` method:: -Method changed to non-virtual. -`GetFieldSelection(Int64)` method:: -Method changed to non-virtual. -`GetFieldValues(String)` method:: -Method changed to non-virtual. -`GetMany(IEnumerable)` method:: -Method changed to non-virtual. -`GetMany(IEnumerable)` method:: -Method changed to non-virtual. -`Source(Int64)` method:: -Method changed to non-virtual. -`Source(String)` method:: -Method changed to non-virtual. -`SourceMany(IEnumerable)` method:: -Method changed to non-virtual. -`SourceMany(IEnumerable)` method:: -Method changed to non-virtual. -`Hits` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.MultiLineStringGeoShape` - -[horizontal] -`MultiLineStringGeoShape()` method:: -Member is less visible. - - -[discrete] -==== `Nest.MultipleMappingsDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.MultiPointGeoShape` - -[horizontal] -`MultiPointGeoShape()` method:: -Member is less visible. - -[discrete] -==== `Nest.MultiPolygonGeoShape` - -[horizontal] -`MultiPolygonGeoShape()` method:: -Member is less visible. - -[discrete] -==== `Nest.MultiSearchDescriptor` - -[horizontal] -`MultiSearchDescriptor(Indices)` method:: added -`AllTypes()` method:: deleted -`CcsMinimizeRoundtrips(Nullable)` method:: added -`Initialize()` method:: deleted -`MaxConcurrentSearches(Nullable)` method:: -Parameter name changed from `maxConcurrentSearches` to `maxconcurrentsearches`. -`MaxConcurrentShardRequests(Nullable)` method:: -Parameter name changed from `maxConcurrentShardRequests` to `maxconcurrentshardrequests`. -`PreFilterShardSize(Nullable)` method:: -Parameter name changed from `preFilterShardSize` to `prefiltershardsize`. -`RequestDefaults(MultiSearchRequestParameters)` method:: added -`SearchType(Nullable)` method:: -Parameter name changed from `searchType` to `searchtype`. -`TotalHitsAsInteger(Nullable)` method:: -Parameter name changed from `totalHitsAsInteger` to `totalhitsasinteger`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`TypedKeys(Nullable)` method:: -Parameter name changed from `typedKeys` to `typedkeys`. - -[discrete] -==== `Nest.MultiSearchRequest` - -[horizontal] -`MultiSearchRequest(Indices, Types)` method:: deleted -`Initialize()` method:: deleted -`RequestDefaults(MultiSearchRequestParameters)` method:: added -`CcsMinimizeRoundtrips` property:: added - -[discrete] -==== `Nest.MultiSearchResponse` - -[horizontal] -`GetInvalidResponses()` method:: -Method changed to non-virtual. -`GetResponse(String)` method:: -Method changed to non-virtual. -`GetResponses()` method:: -Method changed to non-virtual. -`AllResponses` property getter:: -changed to non-virtual. -`Took` property:: added -`TotalResponses` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.MultiSearchTemplateDescriptor` - -[horizontal] -`MultiSearchTemplateDescriptor(Indices)` method:: added -`AllTypes()` method:: deleted -`CcsMinimizeRoundtrips(Nullable)` method:: added -`Initialize()` method:: deleted -`MaxConcurrentSearches(Nullable)` method:: -Parameter name changed from `maxConcurrentSearches` to `maxconcurrentsearches`. -`RequestDefaults(MultiSearchTemplateRequestParameters)` method:: added -`SearchType(Nullable)` method:: -Parameter name changed from `searchType` to `searchtype`. -`TotalHitsAsInteger(Nullable)` method:: -Parameter name changed from `totalHitsAsInteger` to `totalhitsasinteger`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`TypedKeys(Nullable)` method:: -Parameter name changed from `typedKeys` to `typedkeys`. - -[discrete] -==== `Nest.MultiSearchTemplateRequest` - -[horizontal] -`MultiSearchTemplateRequest(Indices, Types)` method:: deleted -`Initialize()` method:: deleted -`RequestDefaults(MultiSearchTemplateRequestParameters)` method:: added -`CcsMinimizeRoundtrips` property:: added - - -[discrete] -==== `Nest.MultiTermVectorOperation` - -[horizontal] -`Fields` property:: added -`StoredFields` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.MultiTermVectorOperationDescriptor` - -[horizontal] -`Fields(Fields)` method:: added -`Fields(Func, IPromise>)` method:: added -`StoredFields(Fields)` method:: deleted -`StoredFields(Func, IPromise>)` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.MultiTermVectorsDescriptor` - -[horizontal] -`MultiTermVectorsDescriptor(IndexName)` method:: added -`Documents(IEnumerable, Func, Id, IMultiTermVectorOperation>)` method:: added -`Documents(IEnumerable, Func, Int64, IMultiTermVectorOperation>)` method:: added -`Documents(IEnumerable, Func, String, IMultiTermVectorOperation>)` method:: added -`Documents(Func, IMultiTermVectorOperation>)` method:: added -`FieldStatistics(Nullable)` method:: -Parameter name changed from `fieldStatistics` to `fieldstatistics`. -`Get(Func, IMultiTermVectorOperation>)` method:: deleted -`GetMany(IEnumerable, Func, Id, IMultiTermVectorOperation>)` method:: deleted -`GetMany(IEnumerable, Func, Int64, IMultiTermVectorOperation>)` method:: deleted -`GetMany(IEnumerable, Func, String, IMultiTermVectorOperation>)` method:: deleted -`Parent(String)` method:: deleted -`TermStatistics(Nullable)` method:: -Parameter name changed from `termStatistics` to `termstatistics`. -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`VersionType(Nullable)` method:: -Parameter name changed from `versionType` to `versiontype`. - -[discrete] -==== `Nest.MultiTermVectorsRequest` - -[horizontal] -`MultiTermVectorsRequest(IndexName, TypeName)` method:: deleted -`Parent` property:: deleted - -[discrete] -==== `Nest.MultiTermVectorsResponse` - -[horizontal] -`Documents` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.NamespacedClientProxy` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.NestedAggregationDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - - -[discrete] -==== `Nest.NestedQueryDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - - -[discrete] -==== `Nest.NestedSortDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - - -[discrete] -==== `Nest.NodeInfo` - -[horizontal] - - -[discrete] -==== `Nest.NodeInfoJvmMemory` - -[horizontal] -type:: added - -[discrete] -==== `Nest.NodeInfoJVMMemory` - -[horizontal] -type:: deleted - - - - - - - -[discrete] -==== `Nest.NodeJvmInfo` - -[horizontal] -`GcCollectors` property:: added -`GCCollectors` property:: deleted -`Pid` property:: added -`PID` property:: deleted - -[discrete] -==== `Nest.NodeJvmStats` - -[horizontal] - - -[discrete] -==== `.GarbageCollectionStats` - -[horizontal] - - -[discrete] -==== `.MemoryStats` - -[horizontal] - -[discrete] -==== `.JvmPool` - -[horizontal] -type:: added - -[discrete] -==== `.JVMPool` - -[horizontal] -type:: deleted - - - - - - -[discrete] -==== `Nest.NodesHotThreadsDescriptor` - -[horizontal] -`NodesHotThreadsDescriptor(NodeIds)` method:: added -`IgnoreIdleThreads(Nullable)` method:: -Parameter name changed from `ignoreIdleThreads` to `ignoreidlethreads`. -`RequestDefaults(NodesHotThreadsRequestParameters)` method:: added -`ThreadType(Nullable)` method:: -Parameter name changed from `threadType` to `threadtype`. -`ContentType` property:: added - -[discrete] -==== `Nest.NodesHotThreadsRequest` - -[horizontal] -`NodesHotThreadsRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. -`RequestDefaults(NodesHotThreadsRequestParameters)` method:: added -`ContentType` property:: added - -[discrete] -==== `Nest.NodesHotThreadsResponse` - -[horizontal] -`HotThreads` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.NodesInfoDescriptor` - -[horizontal] -`NodesInfoDescriptor(Metrics)` method:: added -`NodesInfoDescriptor(NodeIds)` method:: added -`NodesInfoDescriptor(NodeIds, Metrics)` method:: added -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`Metric(NodesInfoMetric)` method:: deleted -`Metric(Metrics)` method:: added - -[discrete] -==== `Nest.NodesInfoRequest` - -[horizontal] -`NodesInfoRequest(NodesInfoMetric)` method:: deleted -`NodesInfoRequest(Metrics)` method:: added -`NodesInfoRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. -`NodesInfoRequest(NodeIds, NodesInfoMetric)` method:: deleted -`NodesInfoRequest(NodeIds, Metrics)` method:: added - -[discrete] -==== `Nest.NodesInfoResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.NodesResponseBase` - -[horizontal] -`NodeStatistics` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.NodesStatsDescriptor` - -[horizontal] -`NodesStatsDescriptor(Metrics)` method:: added -`NodesStatsDescriptor(Metrics, IndexMetrics)` method:: added -`NodesStatsDescriptor(NodeIds)` method:: added -`NodesStatsDescriptor(NodeIds, Metrics)` method:: added -`NodesStatsDescriptor(NodeIds, Metrics, IndexMetrics)` method:: added -`CompletionFields(Fields)` method:: -Parameter name changed from `completionFields` to `completionfields`. -`FielddataFields(Fields)` method:: -Parameter name changed from `fielddataFields` to `fielddatafields`. -`IncludeSegmentFileSizes(Nullable)` method:: -Parameter name changed from `includeSegmentFileSizes` to `includesegmentfilesizes`. -`IndexMetric(NodesStatsIndexMetric)` method:: deleted -`IndexMetric(IndexMetrics)` method:: added -`Metric(NodesStatsMetric)` method:: deleted -`Metric(Metrics)` method:: added - -[discrete] -==== `Nest.NodesStatsRequest` - -[horizontal] -`NodesStatsRequest(NodesStatsMetric)` method:: deleted -`NodesStatsRequest(NodesStatsMetric, NodesStatsIndexMetric)` method:: deleted -`NodesStatsRequest(Metrics)` method:: added -`NodesStatsRequest(Metrics, IndexMetrics)` method:: added -`NodesStatsRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. -`NodesStatsRequest(NodeIds, NodesStatsMetric)` method:: deleted -`NodesStatsRequest(NodeIds, NodesStatsMetric, NodesStatsIndexMetric)` method:: deleted -`NodesStatsRequest(NodeIds, Metrics)` method:: added -`NodesStatsRequest(NodeIds, Metrics, IndexMetrics)` method:: added - -[discrete] -==== `Nest.NodesStatsResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.NodeState` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.NodeStats` - -[horizontal] - -[discrete] -==== `Nest.NodesUsageDescriptor` - -[horizontal] -`NodesUsageDescriptor(Metrics)` method:: added -`NodesUsageDescriptor(NodeIds)` method:: added -`NodesUsageDescriptor(NodeIds, Metrics)` method:: added -`Metric(NodesUsageMetric)` method:: deleted -`Metric(Metrics)` method:: added - -[discrete] -==== `Nest.NodesUsageRequest` - -[horizontal] -`NodesUsageRequest(NodesUsageMetric)` method:: deleted -`NodesUsageRequest(Metrics)` method:: added -`NodesUsageRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. -`NodesUsageRequest(NodeIds, NodesUsageMetric)` method:: deleted -`NodesUsageRequest(NodeIds, Metrics)` method:: added - -[discrete] -==== `Nest.NodesUsageResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.NodeThreadPoolInfo` - -[horizontal] -`Core` property:: added -`Min` property:: deleted -`Size` property:: added - - -[discrete] -==== `Nest.NonNullSumDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.NonZeroCountDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - - - - - - -[discrete] -==== `Nest.ObjectPropertyDescriptorBase` - -[horizontal] -`ObjectPropertyDescriptorBase(FieldType)` method:: -Parameter name changed from `type` to `fieldType`. - -[discrete] -==== `Nest.ObsoleteMappingsBase` - -[horizontal] -type:: added - -[discrete] -==== `Nest.OpenIndexDescriptor` - -[horizontal] -`OpenIndexDescriptor()` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.OpenIndexRequest` - -[horizontal] -`OpenIndexRequest()` method:: added - -[discrete] -==== `Nest.OpenJobDescriptor` - -[horizontal] -`OpenJobDescriptor()` method:: added -`OpenJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.OpenJobRequest` - -[horizontal] -`OpenJobRequest()` method:: added -`OpenJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.OpenJobResponse` - -[horizontal] -`Opened` property getter:: -changed to non-virtual. - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.PauseFollowIndexDescriptor` - -[horizontal] -`PauseFollowIndexDescriptor()` method:: added - -[discrete] -==== `Nest.PauseFollowIndexRequest` - -[horizontal] -`PauseFollowIndexRequest()` method:: added - - -[discrete] -==== `Nest.PercentileItem` - -[horizontal] - -[discrete] -==== `Nest.PercentileRanksAggregation` - -[horizontal] -`Keyed` property:: added - -[discrete] -==== `Nest.PercentileRanksAggregationDescriptor` - -[horizontal] -`Keyed(Nullable)` method:: added - -[discrete] -==== `Nest.PercentilesAggregation` - -[horizontal] -`Keyed` property:: added - -[discrete] -==== `Nest.PercentilesAggregationDescriptor` - -[horizontal] -`Keyed(Nullable)` method:: added - -[discrete] -==== `Nest.PercolateQuery` - -[horizontal] -`DocumentType` property:: deleted -`Type` property:: deleted - -[discrete] -==== `Nest.PercolateQueryDescriptor` - -[horizontal] -`DocumentType()` method:: deleted -`DocumentType(TypeName)` method:: deleted -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.PerFieldAnalyzer` - -[horizontal] -`Add(Expression>, String)` method:: deleted -`Add(Expression>, String)` method:: added - -[discrete] -==== `Nest.PerFieldAnalyzerDescriptor` - -[horizontal] -`Field(Expression>, String)` method:: deleted -`Field(Expression>, String)` method:: added - -[discrete] -==== `Nest.PhaseExecution` - -[horizontal] - - - - - - - - -[discrete] -==== `Nest.PlainRequestBase` - -[horizontal] -`SourceQueryString` property:: added - -[discrete] -==== `Nest.PluginStats` - -[horizontal] -`ExtendedPlugins` property:: added -`Isolated` property:: deleted -`Jvm` property:: deleted -`Site` property:: deleted - -[discrete] -==== `Nest.PointGeoShape` - -[horizontal] -`PointGeoShape()` method:: -Member is less visible. - -[discrete] -==== `Nest.PolicyId` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.PolygonGeoShape` - -[horizontal] -`PolygonGeoShape()` method:: -Member is less visible. - -[discrete] -==== `Nest.PostCalendarEventsDescriptor` - -[horizontal] -`PostCalendarEventsDescriptor()` method:: added -`PostCalendarEventsDescriptor(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PostCalendarEventsRequest` - -[horizontal] -`PostCalendarEventsRequest()` method:: added -`PostCalendarEventsRequest(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PostCalendarEventsResponse` - -[horizontal] -`Events` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.PostJobDataDescriptor` - -[horizontal] -`PostJobDataDescriptor()` method:: added -`PostJobDataDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`ResetEnd(Nullable)` method:: -Parameter name changed from `resetEnd` to `resetend`. -`ResetStart(Nullable)` method:: -Parameter name changed from `resetStart` to `resetstart`. - -[discrete] -==== `Nest.PostJobDataRequest` - -[horizontal] -`PostJobDataRequest()` method:: added -`PostJobDataRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.PostJobDataResponse` - -[horizontal] -`BucketCount` property getter:: -changed to non-virtual. -`EarliestRecordTimestamp` property getter:: -changed to non-virtual. -`EmptyBucketCount` property getter:: -changed to non-virtual. -`InputBytes` property getter:: -changed to non-virtual. -`InputFieldCount` property getter:: -changed to non-virtual. -`InputRecordCount` property getter:: -changed to non-virtual. -`InvalidDateCount` property getter:: -changed to non-virtual. -`JobId` property getter:: -changed to non-virtual. -`LastDataTime` property getter:: -changed to non-virtual. -`LatestRecordTimestamp` property getter:: -changed to non-virtual. -`MissingFieldCount` property getter:: -changed to non-virtual. -`OutOfOrderTimestampCount` property getter:: -changed to non-virtual. -`ProcessedFieldCount` property getter:: -changed to non-virtual. -`ProcessedRecordCount` property getter:: -changed to non-virtual. -`SparseBucketCount` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.PostLicenseResponse` - -[horizontal] -`Acknowledge` property getter:: -changed to non-virtual. -`Acknowledged` property getter:: -changed to non-virtual. -`LicenseStatus` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.PreventMappingMultipleTypesDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.PreviewDatafeedDescriptor` - -[horizontal] -`PreviewDatafeedDescriptor()` method:: added -`PreviewDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.PreviewDatafeedRequest` - -[horizontal] -`PreviewDatafeedRequest()` method:: added -`PreviewDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.PreviewDatafeedResponse` - -[horizontal] - -[discrete] -==== `Nest.ProcessorsDescriptor` - -[horizontal] -`KeyValue(Func, IUserAgentProcessor>)` method:: deleted - - - - - - -[discrete] -==== `Nest.Properties` - -[horizontal] -`Add(Expression>, IProperty)` method:: deleted -`Add(Expression>, IProperty)` method:: added - -[discrete] -==== `Nest.PropertyDescriptorBase` - -[horizontal] -`Name(Expression>)` method:: deleted -`Name(Expression>)` method:: added - - -[discrete] -==== `Nest.PropertyNameAttribute` - -[horizontal] -`AllowPrivate` property:: added -`Ignore` property:: added -`Name` property getter:: -changed to virtual. -`Name` property setter:: -changed to virtual. -`Order` property:: added - -[discrete] -==== `Nest.PutAliasDescriptor` - -[horizontal] -`PutAliasDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.PutAliasRequest` - -[horizontal] -`PutAliasRequest()` method:: added - -[discrete] -==== `Nest.PutCalendarDescriptor` - -[horizontal] -`PutCalendarDescriptor()` method:: added -`PutCalendarDescriptor(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PutCalendarJobDescriptor` - -[horizontal] -`PutCalendarJobDescriptor()` method:: added -`PutCalendarJobDescriptor(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PutCalendarJobRequest` - -[horizontal] -`PutCalendarJobRequest()` method:: added -`PutCalendarJobRequest(Id, Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PutCalendarJobResponse` - -[horizontal] -`CalendarId` property getter:: -changed to non-virtual. -`Description` property getter:: -changed to non-virtual. -`JobIds` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.PutCalendarRequest` - -[horizontal] -`PutCalendarRequest()` method:: added -`PutCalendarRequest(Id)` method:: -Parameter name changed from `calendar_id` to `calendarId`. - -[discrete] -==== `Nest.PutCalendarResponse` - -[horizontal] -`CalendarId` property getter:: -changed to non-virtual. -`Description` property getter:: -changed to non-virtual. -`JobIds` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.PutDatafeedDescriptor` - -[horizontal] -`PutDatafeedDescriptor()` method:: added -`PutDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. -`Aggregations(Func, IAggregationContainer>)` method:: deleted -`Aggregations(Func, IAggregationContainer>)` method:: added -`AllIndices()` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`AllTypes()` method:: deleted -`ChunkingConfig(Func)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`Frequency(Time)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`Indices()` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`Indices(Indices)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`JobId(Id)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryDelay(Time)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`ScriptFields(Func>)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`ScrollSize(Nullable)` method:: -Member type changed from `PutDatafeedDescriptor` to `PutDatafeedDescriptor`. -`Types()` method:: deleted -`Types(Types)` method:: deleted - -[discrete] -==== `Nest.PutDatafeedRequest` - -[horizontal] -`PutDatafeedRequest()` method:: added -`PutDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. -`Types` property:: deleted - -[discrete] -==== `Nest.PutDatafeedResponse` - -[horizontal] -`Aggregations` property getter:: -changed to non-virtual. -`ChunkingConfig` property getter:: -changed to non-virtual. -`DatafeedId` property getter:: -changed to non-virtual. -`Frequency` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`JobId` property getter:: -changed to non-virtual. -`Query` property getter:: -changed to non-virtual. -`QueryDelay` property getter:: -changed to non-virtual. -`ScriptFields` property getter:: -changed to non-virtual. -`ScrollSize` property getter:: -changed to non-virtual. -`Types` property:: deleted - -[discrete] -==== `Nest.PutFilterDescriptor` - -[horizontal] -`PutFilterDescriptor()` method:: added -`PutFilterDescriptor(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.PutFilterRequest` - -[horizontal] -`PutFilterRequest()` method:: added -`PutFilterRequest(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.PutFilterResponse` - -[horizontal] -`Description` property getter:: -changed to non-virtual. -`FilterId` property getter:: -changed to non-virtual. -`Items` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.PutIndexTemplateDescriptor` - -[horizontal] -`PutIndexTemplateDescriptor()` method:: added -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IncludeTypeName(Nullable)` method:: -Parameter name changed from `includeTypeName` to `includetypename`. -`Map(Func, ITypeMapping>)` method:: added -`Map(Func, ITypeMapping>)` method:: added -`Mappings(Func>)` method:: deleted -`Mappings(Func)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.PutIndexTemplateRequest` - -[horizontal] -`PutIndexTemplateRequest()` method:: added - -[discrete] -==== `Nest.PutJobDescriptor` - -[horizontal] -`PutJobDescriptor()` method:: added -`PutJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`AnalysisConfig(Func, IAnalysisConfig>)` method:: deleted -`AnalysisConfig(Func, IAnalysisConfig>)` method:: added -`AnalysisLimits(Func)` method:: -Member type changed from `PutJobDescriptor` to `PutJobDescriptor`. -`DataDescription(Func, IDataDescription>)` method:: deleted -`DataDescription(Func, IDataDescription>)` method:: added -`Description(String)` method:: -Member type changed from `PutJobDescriptor` to `PutJobDescriptor`. -`ModelPlot(Func, IModelPlotConfig>)` method:: deleted -`ModelPlot(Func, IModelPlotConfig>)` method:: added -`ModelSnapshotRetentionDays(Nullable)` method:: -Member type changed from `PutJobDescriptor` to `PutJobDescriptor`. -`ResultsIndexName()` method:: -Member type changed from `PutJobDescriptor` to `PutJobDescriptor`. -`ResultsIndexName(IndexName)` method:: -Member type changed from `PutJobDescriptor` to `PutJobDescriptor`. - -[discrete] -==== `Nest.PutJobRequest` - -[horizontal] -`PutJobRequest()` method:: added -`PutJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.PutJobResponse` - -[horizontal] -`AnalysisConfig` property getter:: -changed to non-virtual. -`AnalysisLimits` property getter:: -changed to non-virtual. -`BackgroundPersistInterval` property getter:: -changed to non-virtual. -`CreateTime` property getter:: -changed to non-virtual. -`DataDescription` property getter:: -changed to non-virtual. -`Description` property getter:: -changed to non-virtual. -`JobId` property getter:: -changed to non-virtual. -`JobType` property getter:: -changed to non-virtual. -`ModelPlotConfig` property getter:: -changed to non-virtual. -`ModelSnapshotId` property getter:: -changed to non-virtual. -`ModelSnapshotRetentionDays` property getter:: -changed to non-virtual. -`RenormalizationWindowDays` property getter:: -changed to non-virtual. -`ResultsIndexName` property getter:: -changed to non-virtual. -`ResultsRetentionDays` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.PutLifecycleDescriptor` - -[horizontal] -`PutLifecycleDescriptor()` method:: added -`PutLifecycleDescriptor(Id)` method:: added -`PutLifecycleDescriptor(PolicyId)` method:: deleted -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.PutLifecycleRequest` - -[horizontal] -`PutLifecycleRequest()` method:: added -`PutLifecycleRequest(Id)` method:: added -`PutLifecycleRequest(PolicyId)` method:: deleted -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.PutMappingDescriptor` - -[horizontal] -`PutMappingDescriptor(IndexName, TypeName)` method:: deleted -`PutMappingDescriptor(Indices)` method:: added -`PutMappingDescriptor(TypeName)` method:: deleted -`AllField(Func)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`AllIndices()` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Assign(Action)` method:: deleted -`Assign(TValue, Action)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`AutoMap(IPropertyVisitor, Int32)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`AutoMap(Int32)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`DateDetection(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`DisableIndexField(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`DisableSizeField(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Dynamic(Union)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Dynamic(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`DynamicDateFormats(IEnumerable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`DynamicTemplates(Func, IPromise>)` method:: deleted -`DynamicTemplates(Func, IPromise>)` method:: added -`ExpandWildcards(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`FieldNamesField(Func, IFieldNamesField>)` method:: deleted -`FieldNamesField(Func, IFieldNamesField>)` method:: added -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`IncludeTypeName(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Index()` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Index(Indices)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`IndexField(Func)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`MasterTimeout(Time)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Meta(Dictionary)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Meta(Func, FluentDictionary>)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`NumericDetection(Nullable)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Properties(Func, IPromise>)` method:: deleted -`Properties(Func, IPromise>)` method:: added -`RoutingField(Func, IRoutingField>)` method:: deleted -`RoutingField(Func, IRoutingField>)` method:: added -`SizeField(Func)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`SourceField(Func)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Timeout(Time)` method:: -Member type changed from `PutMappingDescriptor` to `PutMappingDescriptor`. -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`UpdateAllTypes(Nullable)` method:: deleted - -[discrete] -==== `Nest.PutMappingRequest` - -[horizontal] -`PutMappingRequest()` method:: -Member is more visible. -`PutMappingRequest(Indices, TypeName)` method:: deleted -`PutMappingRequest(TypeName)` method:: deleted -`UpdateAllTypes` property:: deleted - -[discrete] -==== `Nest.PutMappingRequest` - -[horizontal] -`PutMappingRequest(Indices, TypeName)` method:: deleted -`PutMappingRequest(TypeName)` method:: deleted -`AllField` property:: deleted -`AllowNoIndices` property:: deleted -`DateDetection` property:: deleted -`Dynamic` property:: deleted -`DynamicDateFormats` property:: deleted -`DynamicTemplates` property:: deleted -`ExpandWildcards` property:: deleted -`FieldNamesField` property:: deleted -`IgnoreUnavailable` property:: deleted -`IncludeTypeName` property:: deleted -`IndexField` property:: deleted -`MasterTimeout` property:: deleted -`Meta` property:: deleted -`NumericDetection` property:: deleted -`Properties` property:: deleted -`RoutingField` property:: deleted -`Self` property:: deleted -`SizeField` property:: deleted -`SourceField` property:: deleted -`Timeout` property:: deleted -`TypedSelf` property:: added -`UpdateAllTypes` property:: deleted - -[discrete] -==== `Nest.PutPipelineDescriptor` - -[horizontal] -`PutPipelineDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.PutPipelineRequest` - -[horizontal] -`PutPipelineRequest()` method:: added - -[discrete] -==== `Nest.PutPrivilegesResponse` - -[horizontal] -`Applications` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.PutRoleDescriptor` - -[horizontal] -`PutRoleDescriptor()` method:: added -`Applications(Func>>)` method:: deleted -`Applications(Func>>)` method:: added - -[discrete] -==== `Nest.PutRoleMappingDescriptor` - -[horizontal] -`PutRoleMappingDescriptor()` method:: added - -[discrete] -==== `Nest.PutRoleMappingRequest` - -[horizontal] -`PutRoleMappingRequest()` method:: added - -[discrete] -==== `Nest.PutRoleMappingResponse` - -[horizontal] -`RoleMapping` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.PutRoleRequest` - -[horizontal] -`PutRoleRequest()` method:: added - -[discrete] -==== `Nest.PutRoleResponse` - -[horizontal] -`Role` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.PutScriptDescriptor` - -[horizontal] -`PutScriptDescriptor()` method:: added -`PutScriptDescriptor(Id, Name)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.PutScriptRequest` - -[horizontal] -`PutScriptRequest()` method:: added - -[discrete] -==== `Nest.PutUserDescriptor` - -[horizontal] -`PutUserDescriptor()` method:: added - -[discrete] -==== `Nest.PutUserRequest` - -[horizontal] -`PutUserRequest()` method:: added - -[discrete] -==== `Nest.PutUserResponse` - -[horizontal] -`Created` property:: added -`User` property:: deleted - -[discrete] -==== `Nest.PutUserStatus` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.PutWatchDescriptor` - -[horizontal] -`PutWatchDescriptor()` method:: -Member is less visible. -`IfPrimaryTerm(Nullable)` method:: -Parameter name changed from `ifPrimaryTerm` to `ifprimaryterm`. -`IfSeqNo(Nullable)` method:: deleted -`IfSequenceNumber(Nullable)` method:: added -`MasterTimeout(Time)` method:: deleted - -[discrete] -==== `Nest.PutWatchRequest` - -[horizontal] -`PutWatchRequest()` method:: -Member is less visible. -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`MasterTimeout` property:: deleted - -[discrete] -==== `Nest.PutWatchResponse` - -[horizontal] -`Created` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`PrimaryTerm` property:: added -`SequenceNumber` property:: added -`Version` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.Query` - -[horizontal] -`GeoShape(Func, IGeoShapeQuery>)` method:: added -`GeoShapeCircle(Func, IGeoShapeCircleQuery>)` method:: deleted -`GeoShapeEnvelope(Func, IGeoShapeEnvelopeQuery>)` method:: deleted -`GeoShapeGeometryCollection(Func, IGeoShapeGeometryCollectionQuery>)` method:: deleted -`GeoShapeLineString(Func, IGeoShapeLineStringQuery>)` method:: deleted -`GeoShapeMultiLineString(Func, IGeoShapeMultiLineStringQuery>)` method:: deleted -`GeoShapeMultiPoint(Func, IGeoShapeMultiPointQuery>)` method:: deleted -`GeoShapeMultiPolygon(Func, IGeoShapeMultiPolygonQuery>)` method:: deleted -`GeoShapePoint(Func, IGeoShapePointQuery>)` method:: deleted -`GeoShapePolygon(Func, IGeoShapePolygonQuery>)` method:: deleted -`Intervals(Func, IIntervalsQuery>)` method:: added -`Prefix(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: deleted -`Prefix(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: added -`Term(Expression>, Object, Nullable, String)` method:: deleted -`Term(Expression>, Object, Nullable, String)` method:: added -`Type()` method:: deleted -`Type(Func)` method:: deleted -`Wildcard(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: deleted -`Wildcard(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: added - - -[discrete] -==== `Nest.QueryCacheStats` - -[horizontal] -`MemorySize` property:: deleted - - -[discrete] -==== `Nest.QueryContainerDescriptor` - -[horizontal] -`GeoIndexedShape(Func, IGeoIndexedShapeQuery>)` method:: deleted -`GeoShape(Func, IGeoShapeQuery>)` method:: added -`GeoShapeCircle(Func, IGeoShapeCircleQuery>)` method:: deleted -`GeoShapeEnvelope(Func, IGeoShapeEnvelopeQuery>)` method:: deleted -`GeoShapeGeometryCollection(Func, IGeoShapeGeometryCollectionQuery>)` method:: deleted -`GeoShapeLineString(Func, IGeoShapeLineStringQuery>)` method:: deleted -`GeoShapeMultiLineString(Func, IGeoShapeMultiLineStringQuery>)` method:: deleted -`GeoShapeMultiPoint(Func, IGeoShapeMultiPointQuery>)` method:: deleted -`GeoShapeMultiPolygon(Func, IGeoShapeMultiPolygonQuery>)` method:: deleted -`GeoShapePoint(Func, IGeoShapePointQuery>)` method:: deleted -`GeoShapePolygon(Func, IGeoShapePolygonQuery>)` method:: deleted -`Intervals(Func, IIntervalsQuery>)` method:: added -`Prefix(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: deleted -`Prefix(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: added -`Term(Expression>, Object, Nullable, String)` method:: deleted -`Term(Expression>, Object, Nullable, String)` method:: added -`Type()` method:: deleted -`Type(Func)` method:: deleted -`Wildcard(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: deleted -`Wildcard(Expression>, String, Nullable, MultiTermQueryRewrite, String)` method:: added - - -[discrete] -==== `Nest.QuerySqlResponse` - -[horizontal] -`Columns` property getter:: -changed to non-virtual. -`Cursor` property getter:: -changed to non-virtual. -`Rows` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.QueryStringQuery` - -[horizontal] -`Timezone` property:: deleted -`TimeZone` property:: added - -[discrete] -==== `Nest.QueryStringQueryDescriptor` - -[horizontal] -`DefaultField(Expression>)` method:: deleted -`DefaultField(Expression>)` method:: added -`Timezone(String)` method:: deleted -`TimeZone(String)` method:: added - - - -[discrete] -==== `Nest.QueryVisitor` - -[horizontal] -`Visit(IGeoIndexedShapeQuery)` method:: deleted -`Visit(IGeoShapeCircleQuery)` method:: deleted -`Visit(IGeoShapeEnvelopeQuery)` method:: deleted -`Visit(IGeoShapeGeometryCollectionQuery)` method:: deleted -`Visit(IGeoShapeLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiLineStringQuery)` method:: deleted -`Visit(IGeoShapeMultiPointQuery)` method:: deleted -`Visit(IGeoShapeMultiPolygonQuery)` method:: deleted -`Visit(IGeoShapePointQuery)` method:: deleted -`Visit(IGeoShapePolygonQuery)` method:: deleted -`Visit(IIntervalsQuery)` method:: added -`Visit(ITypeQuery)` method:: deleted - -[discrete] -==== `Nest.RandomScoreFunctionDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.RangeAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - -[discrete] -==== `Nest.RareDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - - - - - - - - - - - - -[discrete] -==== `Nest.RecoveryStatusDescriptor` - -[horizontal] -`RecoveryStatusDescriptor(Indices)` method:: added -`ActiveOnly(Nullable)` method:: -Parameter name changed from `activeOnly` to `activeonly`. - -[discrete] -==== `Nest.RecoveryStatusResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.RefreshDescriptor` - -[horizontal] -`RefreshDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. - - -[discrete] -==== `Nest.ReindexDestination` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ReindexDestinationDescriptor` - -[horizontal] -`Type(TypeName)` method:: deleted - - -[discrete] -==== `Nest.ReindexObservable` - -[horizontal] -`Subscribe(IObserver)` method:: added -`Subscribe(IObserver)` method:: deleted - -[discrete] -==== `Nest.ReindexObserver` - -[horizontal] -`ReindexObserver(Action, Action, Action)` method:: added -`ReindexObserver(Action, Action, Action)` method:: deleted - -[discrete] -==== `Nest.ReindexOnServerDescriptor` - -[horizontal] -`RequestsPerSecond(Nullable)` method:: -Parameter name changed from `requestsPerSecond` to `requestspersecond`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.ReindexOnServerResponse` - -[horizontal] -`Batches` property getter:: -changed to non-virtual. -`Created` property getter:: -changed to non-virtual. -`Failures` property getter:: -changed to non-virtual. -`Noops` property getter:: -changed to non-virtual. -`Retries` property getter:: -changed to non-virtual. -`SliceId` property getter:: -changed to non-virtual. -`Task` property getter:: -changed to non-virtual. -`TimedOut` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. -`Total` property getter:: -changed to non-virtual. -`Updated` property getter:: -changed to non-virtual. -`VersionConflicts` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.ReindexRethrottleDescriptor` - -[horizontal] -`ReindexRethrottleDescriptor()` method:: -Member is less visible. -`ReindexRethrottleDescriptor(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. -`RequestsPerSecond(Nullable)` method:: -Parameter name changed from `requestsPerSecond` to `requestspersecond`. -`TaskId(TaskId)` method:: deleted - -[discrete] -==== `Nest.ReindexRethrottleRequest` - -[horizontal] -`ReindexRethrottleRequest()` method:: added -`ReindexRethrottleRequest(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. - -[discrete] -==== `Nest.ReindexRethrottleResponse` - -[horizontal] -`Nodes` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ReindexSource` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.ReindexSourceDescriptor` - -[horizontal] -`Type(Types)` method:: deleted - - - -[discrete] -==== `Nest.RelationName` - -[horizontal] -`EqualsString(String)` method:: -Member is less visible. - -[discrete] -==== `Nest.ReloadSecureSettingsDescriptor` - -[horizontal] -`ReloadSecureSettingsDescriptor(NodeIds)` method:: added - -[discrete] -==== `Nest.ReloadSecureSettingsRequest` - -[horizontal] -`ReloadSecureSettingsRequest(NodeIds)` method:: -Parameter name changed from `node_id` to `nodeId`. - -[discrete] -==== `Nest.ReloadSecureSettingsResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`Nodes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.RemoteClusterConfiguration` - -[horizontal] -`Add(String, Dictionary)` method:: added - -[discrete] -==== `Nest.RemoteInfo` - -[horizontal] -`HttpAddresses` property:: deleted -`SkipUnavailable` property:: added - - -[discrete] -==== `Nest.RemoteInfoResponse` - -[horizontal] -`Remotes` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.RemovePolicyDescriptor` - -[horizontal] -`RemovePolicyDescriptor()` method:: added -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.RemovePolicyRequest` - -[horizontal] -`RemovePolicyRequest()` method:: added -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.RemovePolicyResponse` - -[horizontal] -`FailedIndexes` property getter:: -changed to non-virtual. -`HasFailures` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.RemoveProcessor` - -[horizontal] - -[discrete] -==== `Nest.RemoveProcessorDescriptor` - -[horizontal] -`Field(Field)` method:: deleted -`Field(Fields)` method:: added -`Field(Func, IPromise>)` method:: added -`Field(Expression>)` method:: deleted - -[discrete] -==== `Nest.RenameProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - -[discrete] -==== `Nest.RenderSearchTemplateDescriptor` - -[horizontal] -`RenderSearchTemplateDescriptor(Id)` method:: added -`Inline(String)` method:: deleted - -[discrete] -==== `Nest.RenderSearchTemplateRequest` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.RenderSearchTemplateResponse` - -[horizontal] -`TemplateOutput` property getter:: -changed to non-virtual. -`TemplateOutput` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.RequestBase` - -[horizontal] -`Initialize()` method:: deleted -`RequestDefaults(TParameters)` method:: added -`ContentType` property:: added - - -[discrete] -==== `Nest.RequestDescriptorBase` - -[horizontal] -`Assign(Action)` method:: deleted -`AssignParam(Action)` method:: deleted -`ErrorTrace(Nullable)` method:: -Parameter name changed from `errorTrace` to `errortrace`. -`FilterPath(String[])` method:: -Parameter name changed from `filterPath` to `filterpath`. -`Qs(Action)` method:: deleted -`SourceQueryString(String)` method:: added -`RequestConfig` property:: deleted - - -[discrete] -==== `Nest.RestartWatcherDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.RestartWatcherRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.RestoreCompletedEventArgs` - -[horizontal] -`RestoreCompletedEventArgs(IRecoveryStatusResponse)` method:: deleted -`RestoreCompletedEventArgs(RecoveryStatusResponse)` method:: added - -[discrete] -==== `Nest.RestoreDescriptor` - -[horizontal] -`RestoreDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.RestoreNextEventArgs` - -[horizontal] -`RestoreNextEventArgs(IRecoveryStatusResponse)` method:: deleted -`RestoreNextEventArgs(RecoveryStatusResponse)` method:: added - -[discrete] -==== `Nest.RestoreObservable` - -[horizontal] -`Subscribe(IObserver)` method:: deleted -`Subscribe(IObserver)` method:: added - -[discrete] -==== `Nest.RestoreObserver` - -[horizontal] -`RestoreObserver(Action, Action, Action)` method:: deleted -`RestoreObserver(Action, Action, Action)` method:: added - -[discrete] -==== `Nest.RestoreRequest` - -[horizontal] -`RestoreRequest()` method:: added - -[discrete] -==== `Nest.RestoreResponse` - -[horizontal] -`Snapshot` property getter:: -changed to non-virtual. -`Snapshot` property setter:: -changed to non-virtual. - - -[discrete] -==== `Nest.ResumeFollowIndexDescriptor` - -[horizontal] -`ResumeFollowIndexDescriptor()` method:: added - -[discrete] -==== `Nest.ResumeFollowIndexRequest` - -[horizontal] -`ResumeFollowIndexRequest()` method:: added - - -[discrete] -==== `Nest.RetryIlmDescriptor` - -[horizontal] -`RetryIlmDescriptor()` method:: added -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.RetryIlmRequest` - -[horizontal] -`RetryIlmRequest()` method:: added -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - - -[discrete] -==== `Nest.ReverseNestedAggregationDescriptor` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - -[discrete] -==== `Nest.RevertModelSnapshotDescriptor` - -[horizontal] -`RevertModelSnapshotDescriptor()` method:: added -`RevertModelSnapshotDescriptor(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.RevertModelSnapshotRequest` - -[horizontal] -`RevertModelSnapshotRequest()` method:: added -`RevertModelSnapshotRequest(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.RevertModelSnapshotResponse` - -[horizontal] -`Model` property getter:: -changed to non-virtual. - - - - - -[discrete] -==== `Nest.RolloverIndexDescriptor` - -[horizontal] -`RolloverIndexDescriptor()` method:: added -`RolloverIndexDescriptor(Name, IndexName)` method:: added -`DryRun(Nullable)` method:: -Parameter name changed from `dryRun` to `dryrun`. -`IncludeTypeName(Nullable)` method:: -Parameter name changed from `includeTypeName` to `includetypename`. -`Map(Func, ITypeMapping>)` method:: added -`Map(Func, ITypeMapping>)` method:: added -`Mappings(Func>)` method:: deleted -`Mappings(Func)` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.RolloverIndexRequest` - -[horizontal] -`RolloverIndexRequest()` method:: added -`RolloverIndexRequest(Name, IndexName)` method:: -Parameter name changed from `new_index` to `newIndex`. - -[discrete] -==== `Nest.RolloverIndexResponse` - -[horizontal] -`Conditions` property getter:: -changed to non-virtual. -`DryRun` property getter:: -changed to non-virtual. -`NewIndex` property getter:: -changed to non-virtual. -`OldIndex` property getter:: -changed to non-virtual. -`RolledOver` property getter:: -changed to non-virtual. -`ShardsAcknowledged` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.RolloverLifecycleAction` - -[horizontal] -`MaximumSize` property getter:: -`MaximumSize` property setter:: -`MaximumSizeAsString` property:: deleted - -[discrete] -==== `Nest.RolloverLifecycleActionDescriptor` - -[horizontal] -`MaximumSize(Nullable)` method:: deleted -`MaximumSize(String)` method:: added -`MaximumSizeAsString(String)` method:: deleted - - - -[discrete] -==== `Nest.RollupFieldMetricsDescriptor` - -[horizontal] -`Field(Expression>, RollupMetric[])` method:: deleted -`Field(Expression>, IEnumerable)` method:: deleted -`Field(Expression>, RollupMetric[])` method:: added -`Field(Expression>, IEnumerable)` method:: added - -[discrete] -==== `Nest.RollupFieldsCapabilitiesDictionary` - -[horizontal] -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.RollupFieldsIndexCapabilitiesDictionary` - -[horizontal] -`Field(Expression>)` method:: added - - - - - - - - -[discrete] -==== `Nest.RollupSearchDescriptor` - -[horizontal] -`RollupSearchDescriptor()` method:: added -`Aggregations(AggregationDictionary)` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. -`Aggregations(Func, IAggregationContainer>)` method:: deleted -`Aggregations(Func, IAggregationContainer>)` method:: added -`AllIndices()` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. -`Index()` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. -`Index(Indices)` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`Size(Nullable)` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. -`TotalHitsAsInteger(Nullable)` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`TypedKeys(Nullable)` method:: -Member type changed from `RollupSearchDescriptor` to `RollupSearchDescriptor`. - -[discrete] -==== `Nest.RollupSearchRequest` - -[horizontal] -`RollupSearchRequest()` method:: added -`RollupSearchRequest(Indices, TypeName)` method:: deleted -`TotalHitsAsInteger` property:: added - - -[discrete] -==== `Nest.RootNodeInfoResponse` - -[horizontal] -`ClusterName` property:: added -`ClusterUUID` property:: added -`Name` property getter:: -changed to non-virtual. -`Tagline` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.RouteValues` - -[horizontal] -`Remove(String)` method:: deleted -`Resolve(IConnectionSettingsValues)` method:: -Member is less visible. -`ActionId` property:: deleted -`Alias` property:: deleted -`Application` property:: deleted -`CalendarId` property:: deleted -`CategoryId` property:: deleted -`Context` property:: deleted -`DatafeedId` property:: deleted -`EventId` property:: deleted -`Feature` property:: deleted -`Field` property:: deleted -`Fields` property:: deleted -`FilterId` property:: deleted -`ForecastId` property:: deleted -`Id` property:: deleted -`Index` property:: deleted -`IndexMetric` property:: deleted -`JobId` property:: deleted -`Lang` property:: deleted -`Metric` property:: deleted -`Name` property:: deleted -`NewIndex` property:: deleted -`NodeId` property:: deleted -`PolicyId` property:: deleted -`Realms` property:: deleted -`Repository` property:: deleted -`ScrollId` property:: deleted -`Snapshot` property:: deleted -`SnapshotId` property:: deleted -`Target` property:: deleted -`TaskId` property:: deleted -`ThreadPoolPatterns` property:: deleted -`Timestamp` property:: deleted -`Type` property:: deleted -`User` property:: deleted -`Username` property:: deleted -`WatcherStatsMetric` property:: deleted -`WatchId` property:: deleted - - -[discrete] -==== `Nest.RoutingNodesState` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.RoutingShard` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.RoutingTableState` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.S3Repository` - -[horizontal] -`S3Repository(IS3RepositorySettings)` method:: added -`S3Repository(S3RepositorySettings)` method:: deleted - -[discrete] -==== `Nest.S3RepositorySettings` - -[horizontal] -`AccessKey` property:: deleted -`ConcurrentStreams` property:: deleted -`SecretKey` property:: deleted - -[discrete] -==== `Nest.S3RepositorySettingsDescriptor` - -[horizontal] -`S3RepositorySettingsDescriptor()` method:: deleted -`AccessKey(String)` method:: deleted -`ConcurrentStreams(Nullable)` method:: deleted -`SecretKey(String)` method:: deleted - - - - -[discrete] -==== `Nest.ScoreFunctionsDescriptor` - -[horizontal] -`RandomScore(Int64)` method:: deleted -`RandomScore(String)` method:: deleted - - -[discrete] -==== `Nest.ScriptConditionDescriptor` - -[horizontal] -`Indexed(String)` method:: deleted -`Inline(String)` method:: deleted - -[discrete] -==== `Nest.ScriptDescriptor` - -[horizontal] -`Indexed(String)` method:: deleted -`Inline(String)` method:: deleted - - -[discrete] -==== `Nest.ScriptProcessor` - -[horizontal] -`Inline` property:: deleted - -[discrete] -==== `Nest.ScriptProcessorDescriptor` - -[horizontal] -`Inline(String)` method:: deleted - -[discrete] -==== `Nest.ScriptQuery` - -[horizontal] -`Id` property:: deleted -`Inline` property:: deleted -`Lang` property:: deleted -`Params` property:: deleted -`Script` property:: added -`Source` property:: deleted - -[discrete] -==== `Nest.ScriptQueryDescriptor` - -[horizontal] -`Id(String)` method:: deleted -`Inline(String)` method:: deleted -`Lang(ScriptLang)` method:: deleted -`Lang(String)` method:: deleted -`Params(Func, FluentDictionary>)` method:: deleted -`Script(Func)` method:: added -`Source(String)` method:: deleted - -[discrete] -==== `Nest.ScriptScoreFunction` - -[horizontal] - -[discrete] -==== `Nest.ScriptScoreFunctionDescriptor` - -[horizontal] -`Script(Func)` method:: added -`Script(Func, IScriptQuery>)` method:: deleted - -[discrete] -==== `Nest.ScriptSortDescriptor` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.ScriptTransformDescriptor` - -[horizontal] -`Indexed(String)` method:: deleted -`Inline(String)` method:: deleted - -[discrete] -==== `Nest.ScrollAllDescriptor` - -[horizontal] -`RoutingField(Expression>)` method:: deleted -`RoutingField(Expression>)` method:: added - -[discrete] -==== `Nest.ScrollAllObservable` - -[horizontal] -`Subscribe(IObserver>)` method:: deleted -`Subscribe(IObserver>)` method:: added - - -[discrete] -==== `Nest.ScrollDescriptor` - -[horizontal] -`ScrollDescriptor()` method:: deleted -`ScrollDescriptor(Time, String)` method:: added -`Scroll(Time)` method:: -Member type changed from `ScrollDescriptor` to `ScrollDescriptor`. -`ScrollId(String)` method:: -Member type changed from `ScrollDescriptor` to `ScrollDescriptor`. -`TotalHitsAsInteger(Nullable)` method:: -Member type changed from `ScrollDescriptor` to `ScrollDescriptor`. - -[discrete] -==== `Nest.ScrollRequest` - -[horizontal] -`TypeSelector` property:: deleted - -[discrete] -==== `Nest.SearchDescriptor` - -[horizontal] -`SearchDescriptor(Indices)` method:: added -`Aggregations(AggregationDictionary)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Aggregations(Func, IAggregationContainer>)` method:: deleted -`Aggregations(Func, IAggregationContainer>)` method:: added -`AllIndices()` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`AllowPartialSearchResults(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`AllTypes()` method:: deleted -`Analyzer(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`AnalyzeWildcard(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`BatchedReduceSize(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`CcsMinimizeRoundtrips(Nullable)` method:: added -`Collapse(Func, IFieldCollapse>)` method:: deleted -`Collapse(Func, IFieldCollapse>)` method:: added -`DefaultOperator(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Df(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`DocValueFields(Fields)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`DocValueFields(Func, IPromise>)` method:: deleted -`DocValueFields(Func, IPromise>)` method:: added -`ExecuteOnLocalShard()` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`ExecuteOnNode(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`ExecuteOnPreferredNode(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`ExecuteOnPrimary()` method:: deleted -`ExecuteOnPrimaryFirst()` method:: deleted -`ExpandWildcards(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Explain(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`From(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Highlight(Func, IHighlight>)` method:: deleted -`Highlight(Func, IHighlight>)` method:: added -`IgnoreThrottled(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Index()` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Index(Indices)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`IndicesBoost(Func, FluentDictionary>)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Initialize()` method:: deleted -`Lenient(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`MatchAll(Func)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`MaxConcurrentShardRequests(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`MinScore(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`PostFilter(Func, QueryContainer>)` method:: deleted -`PostFilter(Func, QueryContainer>)` method:: added -`Preference(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`PreFilterShardSize(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Profile(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`RequestCache(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`RequestDefaults(SearchRequestParameters)` method:: added -`Rescore(Func, IPromise>>)` method:: deleted -`Rescore(Func, IPromise>>)` method:: added -`Routing(Routing)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`ScriptFields(Func>)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Scroll(Time)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SearchAfter(IList)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SearchAfter(Object[])` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SearchType(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SeqNoPrimaryTerm(Nullable)` method:: deleted -`SequenceNumberPrimaryTerm(Nullable)` method:: added -`Size(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Skip(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Slice(Func, ISlicedScroll>)` method:: deleted -`Slice(Func, ISlicedScroll>)` method:: added -`Sort(Func, IPromise>>)` method:: deleted -`Sort(Func, IPromise>>)` method:: added -`Source(Boolean)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Source(Func, ISourceFilter>)` method:: deleted -`Source(Func, ISourceFilter>)` method:: added -`Stats(String[])` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`StoredFields(Fields)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`StoredFields(Func, IPromise>)` method:: deleted -`StoredFields(Func, IPromise>)` method:: added -`Suggest(Func, IPromise>)` method:: deleted -`Suggest(Func, IPromise>)` method:: added -`SuggestField(Field)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SuggestField(Expression>)` method:: deleted -`SuggestField(Expression>)` method:: added -`SuggestMode(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SuggestSize(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`SuggestText(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Take(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`TerminateAfter(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Timeout(String)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`TotalHitsAsInteger(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`TrackScores(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`TrackTotalHits(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`TypedKeys(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. -`Version(Nullable)` method:: -Member type changed from `SearchDescriptor` to `SearchDescriptor`. - -[discrete] -==== `Nest.SearchInputRequest` - -[horizontal] -`Types` property:: deleted - -[discrete] -==== `Nest.SearchInputRequestDescriptor` - -[horizontal] -`Types()` method:: deleted -`Types(TypeName[])` method:: deleted -`Types(IEnumerable)` method:: deleted - - - -[discrete] -==== `Nest.SearchRequest` - -[horizontal] -`SearchRequest(Indices, Types)` method:: deleted -`Initialize()` method:: deleted -`RequestDefaults(SearchRequestParameters)` method:: added -`CcsMinimizeRoundtrips` property:: added -`SeqNoPrimaryTerm` property:: deleted -`SequenceNumberPrimaryTerm` property:: added -`TypeSelector` property:: deleted - -[discrete] -==== `Nest.SearchRequest` - -[horizontal] -`SearchRequest(Indices, Types)` method:: deleted -`Initialize()` method:: deleted -`Aggregations` property:: deleted -`AllowNoIndices` property:: deleted -`AllowPartialSearchResults` property:: deleted -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`BatchedReduceSize` property:: deleted -`Collapse` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`DocValueFields` property:: deleted -`ExpandWildcards` property:: deleted -`Explain` property:: deleted -`From` property:: deleted -`Highlight` property:: deleted -`HttpMethod` property:: deleted -`IgnoreThrottled` property:: deleted -`IgnoreUnavailable` property:: deleted -`IndicesBoost` property:: deleted -`Lenient` property:: deleted -`MaxConcurrentShardRequests` property:: deleted -`MinScore` property:: deleted -`PostFilter` property:: deleted -`Preference` property:: deleted -`PreFilterShardSize` property:: deleted -`Profile` property:: deleted -`Query` property:: deleted -`RequestCache` property:: deleted -`Rescore` property:: deleted -`Routing` property:: deleted -`ScriptFields` property:: deleted -`Scroll` property:: deleted -`SearchAfter` property:: deleted -`SearchType` property:: deleted -`Self` property:: deleted -`SeqNoPrimaryTerm` property:: deleted -`Size` property:: deleted -`Slice` property:: deleted -`Sort` property:: deleted -`Source` property:: deleted -`Stats` property:: deleted -`StoredFields` property:: deleted -`Suggest` property:: deleted -`SuggestField` property:: deleted -`SuggestMode` property:: deleted -`SuggestSize` property:: deleted -`SuggestText` property:: deleted -`TerminateAfter` property:: deleted -`Timeout` property:: deleted -`TotalHitsAsInteger` property:: deleted -`TrackScores` property:: deleted -`TrackTotalHits` property:: deleted -`TypedKeys` property:: deleted -`TypedSelf` property:: added -`TypeSelector` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.SearchResponse` - -[horizontal] -`Aggs` property:: deleted - - -[discrete] -==== `Nest.SearchShardsDescriptor` - -[horizontal] -`SearchShardsDescriptor(Indices)` method:: added -`AllIndices()` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`ExpandWildcards(Nullable)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`Index()` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`Index(Indices)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`Local(Nullable)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`Preference(String)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. -`Routing(Routing)` method:: -Member type changed from `SearchShardsDescriptor` to `SearchShardsDescriptor`. - -[discrete] -==== `Nest.SearchShardsRequest` - -[horizontal] -`AllowNoIndices` property:: deleted -`ExpandWildcards` property:: deleted -`IgnoreUnavailable` property:: deleted -`Local` property:: deleted -`Preference` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`TypedSelf` property:: added - -[discrete] -==== `Nest.SearchShardsResponse` - -[horizontal] -`Nodes` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.SearchTemplateDescriptor` - -[horizontal] -`SearchTemplateDescriptor(Indices)` method:: added -`AllIndices()` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`AllTypes()` method:: deleted -`CcsMinimizeRoundtrips(Nullable)` method:: added -`ExpandWildcards(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Explain(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Id(String)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`IgnoreThrottled(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Index()` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Index(Indices)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Initialize()` method:: deleted -`Inline(String)` method:: deleted -`Params(Dictionary)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Params(Func, FluentDictionary>)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Preference(String)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Profile(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`RequestDefaults(SearchTemplateRequestParameters)` method:: added -`Routing(Routing)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Scroll(Time)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`SearchType(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Source(String)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`TotalHitsAsInteger(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`TypedKeys(Nullable)` method:: -Member type changed from `SearchTemplateDescriptor` to `SearchTemplateDescriptor`. - -[discrete] -==== `Nest.SearchTemplateRequest` - -[horizontal] -`SearchTemplateRequest(Indices, Types)` method:: deleted -`Initialize()` method:: deleted -`RequestDefaults(SearchTemplateRequestParameters)` method:: added -`CcsMinimizeRoundtrips` property:: added -`Inline` property:: deleted -`TypeSelector` property:: deleted - -[discrete] -==== `Nest.SearchTemplateRequest` - -[horizontal] -`SearchTemplateRequest(Indices, Types)` method:: deleted - - - - - - - - - - -[discrete] -==== `Nest.Segment` - -[horizontal] -`Size` property:: deleted - -[discrete] -==== `Nest.SegmentsDescriptor` - -[horizontal] -`SegmentsDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`OperationThreading(String)` method:: deleted - -[discrete] -==== `Nest.SegmentsRequest` - -[horizontal] -`OperationThreading` property:: deleted - -[discrete] -==== `Nest.SegmentsResponse` - -[horizontal] -`Indices` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.SegmentsStats` - -[horizontal] -`DocValuesMemory` property:: deleted -`FileSizes` property:: added -`FixedBitSetMemory` property:: deleted -`IndexWriterMaxMemory` property:: deleted -`IndexWriterMemory` property:: deleted -`Memory` property:: deleted -`NormsMemory` property:: deleted -`PointsMemory` property:: deleted -`StoredFieldsMemory` property:: deleted -`TermsMemory` property:: deleted -`TermVectorsMemory` property:: deleted -`VersionMapMemory` property:: deleted - -[discrete] -==== `Nest.SelectorBase` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SelectorBase` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SetProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.SetSecurityUserProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.ShardFielddata` - -[horizontal] -type:: added - -[discrete] -==== `Nest.ShardFieldData` - -[horizontal] -type:: deleted - - - - - - - - - - - - - - - - - - - -[discrete] -==== `Nest.ShardsOperationResponseBase` - -[horizontal] -`Shards` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.ShardStats` - -[horizontal] -`Fielddata` property:: added -`FieldData` property:: deleted - - - - - - - - - -[discrete] -==== `Nest.ShrinkIndexDescriptor` - -[horizontal] -`ShrinkIndexDescriptor()` method:: added -`CopySettings(Nullable)` method:: deleted -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.ShrinkIndexRequest` - -[horizontal] -`ShrinkIndexRequest()` method:: -Member is more visible. -`CopySettings` property:: deleted - -[discrete] -==== `Nest.ShrinkIndexResponse` - -[horizontal] -`ShardsAcknowledged` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.SignificantTermsAggregate` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SignificantTermsAggregate` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SignificantTermsAggregation` - -[horizontal] - -[discrete] -==== `Nest.SignificantTermsAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.SignificantTermsBucket` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SignificantTermsBucket` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SignificantTermsIncludeExclude` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SignificantTextAggregation` - -[horizontal] - -[discrete] -==== `Nest.SignificantTextAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.SimilaritiesDescriptor` - -[horizontal] -`Classic(String, Func)` method:: deleted - -[discrete] -==== `Nest.SimilarityOption` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.SimulatePipelineDescriptor` - -[horizontal] -`SimulatePipelineDescriptor(Id)` method:: added - -[discrete] -==== `Nest.SimulatePipelineDocument` - -[horizontal] -`Type` property:: deleted - -[discrete] -==== `Nest.SimulatePipelineDocumentDescriptor` - -[horizontal] -`Type(TypeName)` method:: deleted - -[discrete] -==== `Nest.SimulatePipelineResponse` - -[horizontal] -`Documents` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.SingleBucketAggregate` - -[horizontal] -`Aggregations` property:: deleted - - - -[discrete] -==== `Nest.SlicedScrollDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - -[discrete] -==== `Nest.SnapshotCompletedEventArgs` - -[horizontal] -`SnapshotCompletedEventArgs(ISnapshotStatusResponse)` method:: deleted -`SnapshotCompletedEventArgs(SnapshotStatusResponse)` method:: added - -[discrete] -==== `Nest.SnapshotDescriptor` - -[horizontal] -`SnapshotDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - - - -[discrete] -==== `Nest.SnapshotNextEventArgs` - -[horizontal] -`SnapshotNextEventArgs(ISnapshotStatusResponse)` method:: deleted -`SnapshotNextEventArgs(SnapshotStatusResponse)` method:: added - -[discrete] -==== `Nest.SnapshotObservable` - -[horizontal] -`Subscribe(IObserver)` method:: deleted -`Subscribe(IObserver)` method:: added - -[discrete] -==== `Nest.SnapshotObserver` - -[horizontal] -`SnapshotObserver(Action, Action, Action)` method:: deleted -`SnapshotObserver(Action, Action, Action)` method:: added - -[discrete] -==== `Nest.SnapshotRequest` - -[horizontal] -`SnapshotRequest()` method:: added - -[discrete] -==== `Nest.SnapshotResponse` - -[horizontal] -`Accepted` property getter:: -changed to non-virtual. -`Snapshot` property getter:: -changed to non-virtual. -`Snapshot` property setter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.SnapshotStats` - -[horizontal] -`NumberOfFiles` property:: deleted -`ProcessedFiles` property:: deleted -`ProcessedSizeInBytes` property:: deleted -`TotalSizeInBytes` property:: deleted - - -[discrete] -==== `Nest.SnapshotStatusDescriptor` - -[horizontal] -`SnapshotStatusDescriptor(Name)` method:: added -`SnapshotStatusDescriptor(Name, Names)` method:: added -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.SnapshotStatusResponse` - -[horizontal] -`Snapshots` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.SortBase` - -[horizontal] -`NestedFilter` property:: deleted -`NestedPath` property:: deleted - -[discrete] -==== `Nest.SortDescriptor` - -[horizontal] -`Ascending(Expression>)` method:: deleted -`Ascending(Expression>)` method:: added -`Descending(Expression>)` method:: deleted -`Descending(Expression>)` method:: added -`Field(Func, IFieldSort>)` method:: added -`Field(Func, IFieldSort>)` method:: deleted -`Field(Expression>, SortOrder)` method:: deleted -`Field(Expression>, SortOrder)` method:: added -`GeoDistance(Func, IGeoDistanceSort>)` method:: added -`GeoDistance(Func, IGeoDistanceSort>)` method:: deleted -`Script(Func, IScriptSort>)` method:: added -`Script(Func, IScriptSort>)` method:: deleted - -[discrete] -==== `Nest.SortDescriptorBase` - -[horizontal] -`NestedFilter(Func, QueryContainer>)` method:: deleted -`NestedPath(Field)` method:: deleted -`NestedPath(Expression>)` method:: deleted - -[discrete] -==== `Nest.SortField` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SortFieldDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.SortGeoDistanceDescriptor` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.SortProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.SortScriptDescriptor` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.SourceDescriptor` - -[horizontal] -`SourceDescriptor()` method:: added -`SourceDescriptor(DocumentPath)` method:: deleted -`SourceDescriptor(Id)` method:: added -`SourceDescriptor(IndexName, Id)` method:: added -`SourceDescriptor(IndexName, TypeName, Id)` method:: deleted -`SourceDescriptor(TDocument, IndexName, Id)` method:: added -`ExecuteOnLocalShard()` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`ExecuteOnPrimary()` method:: deleted -`Index()` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`Index(IndexName)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`Parent(String)` method:: deleted -`Preference(String)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`Realtime(Nullable)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`Routing(Routing)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `SourceDescriptor` to `SourceDescriptor`. - -[discrete] -==== `Nest.SourceExistsDescriptor` - -[horizontal] -`SourceExistsDescriptor()` method:: added -`SourceExistsDescriptor(DocumentPath)` method:: deleted -`SourceExistsDescriptor(Id)` method:: added -`SourceExistsDescriptor(IndexName, Id)` method:: added -`SourceExistsDescriptor(IndexName, TypeName, Id)` method:: deleted -`SourceExistsDescriptor(TDocument, IndexName, Id)` method:: added -`Index()` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`Index(IndexName)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`Parent(String)` method:: deleted -`Preference(String)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`Realtime(Nullable)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`Routing(Routing)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `SourceExistsDescriptor` to `SourceExistsDescriptor`. - -[discrete] -==== `Nest.SourceExistsRequest` - -[horizontal] -`SourceExistsRequest()` method:: added -`SourceExistsRequest(IndexName, Id)` method:: added -`SourceExistsRequest(IndexName, TypeName, Id)` method:: deleted -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.SourceExistsRequest` - -[horizontal] -`SourceExistsRequest()` method:: added -`SourceExistsRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`SourceExistsRequest(Id)` method:: added -`SourceExistsRequest(IndexName, Id)` method:: added -`SourceExistsRequest(IndexName, TypeName, Id)` method:: deleted -`SourceExistsRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted -`Preference` property:: deleted -`Realtime` property:: deleted -`Refresh` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Nest.SourceManyExtensions` - -[horizontal] -`SourceMany(IElasticClient, IEnumerable, String)` method:: added -`SourceMany(IElasticClient, IEnumerable, String, String)` method:: deleted -`SourceMany(IElasticClient, IEnumerable, String)` method:: added -`SourceMany(IElasticClient, IEnumerable, String, String)` method:: deleted -`SourceManyAsync(IElasticClient, IEnumerable, String, String, CancellationToken)` method:: deleted -`SourceManyAsync(IElasticClient, IEnumerable, String, CancellationToken)` method:: added -`SourceManyAsync(IElasticClient, IEnumerable, String, String, CancellationToken)` method:: deleted -`SourceManyAsync(IElasticClient, IEnumerable, String, CancellationToken)` method:: added - -[discrete] -==== `Nest.SourceRequest` - -[horizontal] -`SourceRequest()` method:: added -`SourceRequest(IndexName, Id)` method:: added -`SourceRequest(IndexName, TypeName, Id)` method:: deleted -`Parent` property:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.SourceRequest` - -[horizontal] -`SourceRequest()` method:: added -`SourceRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`SourceRequest(Id)` method:: added -`SourceRequest(IndexName, Id)` method:: added -`SourceRequest(IndexName, TypeName, Id)` method:: deleted -`SourceRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted -`Preference` property:: deleted -`Realtime` property:: deleted -`Refresh` property:: deleted -`Routing` property:: deleted -`Self` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Nest.SourceRequestResponseBuilder` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SourceResponse` - -[horizontal] - -[discrete] -==== `Nest.SpanFieldMaskingQueryDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.SpanGapQueryDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - -[discrete] -==== `Nest.Specification.CatApi.CatNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.ClusterApi.ClusterNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.CrossClusterReplicationApi.CrossClusterReplicationNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.GraphApi.GraphNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.IndexLifecycleManagementApi.IndexLifecycleManagementNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.IndicesApi.IndicesNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.IngestApi.IngestNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.LicenseApi.LicenseNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.MachineLearningApi.MachineLearningNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.MigrationApi.MigrationNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.NodesApi.NodesNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.RollupApi.RollupNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.SecurityApi.SecurityNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.SnapshotApi.SnapshotNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.SqlApi.SqlNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.TasksApi.TasksNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.WatcherApi.WatcherNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.Specification.XPackApi.XPackNamespace` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SplitIndexDescriptor` - -[horizontal] -`SplitIndexDescriptor()` method:: added -`CopySettings(Nullable)` method:: deleted -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.SplitIndexRequest` - -[horizontal] -`SplitIndexRequest()` method:: -Member is more visible. -`CopySettings` property:: deleted - -[discrete] -==== `Nest.SplitIndexResponse` - -[horizontal] -`ShardsAcknowledged` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.SplitProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - - -[discrete] -==== `Nest.StandardTokenFilter` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.StandardTokenFilterDescriptor` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.StartBasicLicenseResponse` - -[horizontal] -`Acknowledge` property getter:: -changed to non-virtual. -`BasicWasStarted` property getter:: -changed to non-virtual. -`ErrorMessage` property getter:: -changed to non-virtual. -`IsValid` property:: deleted - -[discrete] -==== `Nest.StartDatafeedDescriptor` - -[horizontal] -`StartDatafeedDescriptor()` method:: added -`StartDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.StartDatafeedRequest` - -[horizontal] -`StartDatafeedRequest()` method:: added -`StartDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.StartDatafeedResponse` - -[horizontal] -`Started` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.StartIlmDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.StartIlmRequest` - -[horizontal] -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.StartRollupJobDescriptor` - -[horizontal] -`StartRollupJobDescriptor()` method:: added - -[discrete] -==== `Nest.StartRollupJobRequest` - -[horizontal] -`StartRollupJobRequest()` method:: added - -[discrete] -==== `Nest.StartRollupJobResponse` - -[horizontal] -`Started` property getter:: -changed to non-virtual. -`Started` property setter:: -changed to non-virtual. - -[discrete] -==== `Nest.StartTrialLicenseDescriptor` - -[horizontal] -`TypeQueryString(String)` method:: -Parameter name changed from `typeQueryString` to `typequerystring`. - -[discrete] -==== `Nest.StartTrialLicenseResponse` - -[horizontal] -`ErrorMessage` property getter:: -changed to non-virtual. -`TrialWasStarted` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.StatsAggregate` - -[horizontal] - - -[discrete] -==== `Nest.StopDatafeedDescriptor` - -[horizontal] -`StopDatafeedDescriptor()` method:: added -`StopDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. -`AllowNoDatafeeds(Nullable)` method:: -Parameter name changed from `allowNoDatafeeds` to `allownodatafeeds`. - -[discrete] -==== `Nest.StopDatafeedRequest` - -[horizontal] -`StopDatafeedRequest()` method:: added -`StopDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. - -[discrete] -==== `Nest.StopDatafeedResponse` - -[horizontal] -`Stopped` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.StopIlmDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: deleted -`Timeout(Time)` method:: deleted - -[discrete] -==== `Nest.StopIlmRequest` - -[horizontal] -`MasterTimeout` property:: deleted -`Timeout` property:: deleted - -[discrete] -==== `Nest.StopRollupJobDescriptor` - -[horizontal] -`StopRollupJobDescriptor()` method:: added -`WaitForCompletion(Nullable)` method:: -Parameter name changed from `waitForCompletion` to `waitforcompletion`. - -[discrete] -==== `Nest.StopRollupJobRequest` - -[horizontal] -`StopRollupJobRequest()` method:: added - -[discrete] -==== `Nest.StopRollupJobResponse` - -[horizontal] -`Stopped` property getter:: -changed to non-virtual. -`Stopped` property setter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.StoredScriptMapping` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.StringEnumAttribute` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.Suggest` - -[horizontal] -`Length` property getter:: -changed to virtual. -`Offset` property getter:: -changed to virtual. -`Options` property getter:: -changed to virtual. -`Text` property getter:: -changed to virtual. - - -[discrete] -==== `Nest.SuggestContextDescriptorBase` - -[horizontal] -`Path(Expression>)` method:: deleted -`Path(Expression>)` method:: added - -[discrete] -==== `Nest.SuggestDescriptorBase` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.SuggestDictionary` - -[horizontal] -`SuggestDictionary(IReadOnlyDictionary[]>)` method:: added -`SuggestDictionary(IReadOnlyDictionary[]>)` method:: deleted - -[discrete] -==== `Nest.SuggestFuzziness` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SuggestFuzzinessDescriptor` - -[horizontal] -type:: added - -[discrete] -==== `Nest.SuggestOption` - -[horizontal] -`CollateMatch` property getter:: -changed to virtual. -`Contexts` property getter:: -changed to virtual. -`DocumentScore` property getter:: -Member is more visible. -`Frequency` property getter:: -changed to virtual. -`Frequency` property setter:: -changed to virtual. -`Highlighted` property getter:: -changed to virtual. -`Id` property getter:: -changed to virtual. -`Index` property getter:: -changed to virtual. -`Score` property getter:: -changed to virtual. -`Source` property getter:: -changed to virtual. -`SuggestScore` property getter:: -Member is more visible. -`Text` property getter:: -changed to virtual. -`Type` property:: deleted - - -[discrete] -==== `Nest.SumDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`FieldName(Expression>)` method:: deleted -`FieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.SyncedFlushDescriptor` - -[horizontal] -`SyncedFlushDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. - - -[discrete] -==== `Nest.SynonymGraphTokenFilter` - -[horizontal] -`IgnoreCase` property:: deleted - -[discrete] -==== `Nest.SynonymGraphTokenFilterDescriptor` - -[horizontal] -`IgnoreCase(Nullable)` method:: deleted - -[discrete] -==== `Nest.SynonymTokenFilter` - -[horizontal] -`IgnoreCase` property:: deleted - -[discrete] -==== `Nest.SynonymTokenFilterDescriptor` - -[horizontal] -`IgnoreCase(Nullable)` method:: deleted - - - - - - -[discrete] -==== `Nest.TaskStatus` - -[horizontal] - -[discrete] -==== `Nest.TemplateMapping` - -[horizontal] - - - - -[discrete] -==== `Nest.TermsAggregationDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - - - -[discrete] -==== `Nest.TermsOrder` - -[horizontal] -`Key` property getter:: -changed to virtual. -`Key` property setter:: -changed to virtual. -`Order` property getter:: -changed to virtual. -`Order` property setter:: -changed to virtual. -`TermAscending` property:: deleted -`TermDescending` property:: deleted - - - -[discrete] -==== `Nest.TermsSetQueryDescriptor` - -[horizontal] -`MinimumShouldMatchField(Expression>)` method:: deleted -`MinimumShouldMatchField(Expression>)` method:: added - -[discrete] -==== `Nest.TermSuggester` - -[horizontal] - -[discrete] -==== `Nest.TermSuggesterDescriptor` - -[horizontal] -`MaxTermFrequency(Nullable)` method:: deleted -`MaxTermFrequency(Nullable)` method:: added -`MinDocFrequency(Nullable)` method:: deleted -`MinDocFrequency(Nullable)` method:: added - - - - -[discrete] -==== `Nest.TermVectorsDescriptor` - -[horizontal] -`TermVectorsDescriptor()` method:: added -`TermVectorsDescriptor(DocumentPath)` method:: deleted -`TermVectorsDescriptor(Id)` method:: added -`TermVectorsDescriptor(IndexName)` method:: added -`TermVectorsDescriptor(IndexName, Id)` method:: added -`TermVectorsDescriptor(IndexName, TypeName)` method:: deleted -`TermVectorsDescriptor(TDocument, IndexName, Id)` method:: added -`FieldStatistics(Nullable)` method:: -Parameter name changed from `fieldStatistics` to `fieldstatistics`. -`Parent(String)` method:: deleted -`TermStatistics(Nullable)` method:: -Parameter name changed from `termStatistics` to `termstatistics`. -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`VersionType(Nullable)` method:: -Parameter name changed from `versionType` to `versiontype`. - -[discrete] -==== `Nest.TermVectorsRequest` - -[horizontal] -`TermVectorsRequest()` method:: added -`TermVectorsRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`TermVectorsRequest(Id)` method:: added -`TermVectorsRequest(IndexName)` method:: added -`TermVectorsRequest(IndexName, Id)` method:: added -`TermVectorsRequest(IndexName, TypeName)` method:: deleted -`TermVectorsRequest(IndexName, TypeName, Id)` method:: deleted -`TermVectorsRequest(TDocument, IndexName, Id)` method:: added -`Parent` property:: deleted - -[discrete] -==== `Nest.TermVectorsResponse` - -[horizontal] -`Found` property getter:: -changed to non-virtual. -`Id` property getter:: -changed to non-virtual. -`Index` property getter:: -changed to non-virtual. -`IsValid` property:: added -`TermVectors` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. -`Type` property getter:: -changed to non-virtual. -`Version` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.TermVectorsResult` - -[horizontal] -`Type` property:: deleted - - - - - - -[discrete] -==== `Nest.TimeDetectorDescriptor` - -[horizontal] -`ByFieldName(Expression>)` method:: deleted -`ByFieldName(Expression>)` method:: added -`OverFieldName(Expression>)` method:: deleted -`OverFieldName(Expression>)` method:: added -`PartitionFieldName(Expression>)` method:: deleted -`PartitionFieldName(Expression>)` method:: added - -[discrete] -==== `Nest.Timestamp` - -[horizontal] -type:: added - - - - - - -[discrete] -==== `Nest.TokenFiltersDescriptor` - -[horizontal] -`Standard(String, Func)` method:: deleted - -[discrete] -==== `Nest.TopHitsAggregate` - -[horizontal] -`Hits()` method:: -Member type changed from `IReadOnlyCollection>` to `IReadOnlyCollection>`. - -[discrete] -==== `Nest.TotalHits` - -[horizontal] -type:: added - -[discrete] -==== `Nest.TotalHitsRelation` - -[horizontal] -type:: added - - -[discrete] -==== `Nest.TranslateSqlDescriptor` - -[horizontal] -`RequestDefaults(TranslateSqlRequestParameters)` method:: added - -[discrete] -==== `Nest.TranslateSqlRequest` - -[horizontal] -`RequestDefaults(TranslateSqlRequestParameters)` method:: added - -[discrete] -==== `Nest.TranslateSqlResponse` - -[horizontal] -`Result` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.TransportStats` - -[horizontal] -`RxCount` property:: added -`RXCount` property:: deleted -`RxSize` property:: added -`RXSize` property:: deleted -`RxSizeInBytes` property:: added -`RXSizeInBytes` property:: deleted -`TxCount` property:: added -`TXCount` property:: deleted -`TxSize` property:: added -`TXSize` property:: deleted -`TxSizeInBytes` property:: added -`TXSizeInBytes` property:: deleted - - - - -[discrete] -==== `Nest.TrimProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.TypeExistsDescriptor` - -[horizontal] -`TypeExistsDescriptor()` method:: added -`TypeExistsDescriptor(Indices, Names)` method:: added -`TypeExistsDescriptor(Indices, Types)` method:: deleted -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`AllTypes()` method:: deleted -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`Type()` method:: deleted -`Type(Types)` method:: deleted - -[discrete] -==== `Nest.TypeExistsRequest` - -[horizontal] -`TypeExistsRequest()` method:: added -`TypeExistsRequest(Indices, Names)` method:: added -`TypeExistsRequest(Indices, Types)` method:: deleted - -[discrete] -==== `Nest.TypeFieldMappings` - -[horizontal] - -[discrete] -==== `Nest.TypeMappings` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.TypeName` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.TypeNameResolver` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.TypeQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.TypeQueryDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.Types` - -[horizontal] -type:: deleted - - - -[discrete] -==== `Nest.UnfollowIndexDescriptor` - -[horizontal] -`UnfollowIndexDescriptor()` method:: added - -[discrete] -==== `Nest.UnfollowIndexRequest` - -[horizontal] -`UnfollowIndexRequest()` method:: added - - - -[discrete] -==== `Nest.UpdateByQueryDescriptor` - -[horizontal] -`UpdateByQueryDescriptor()` method:: added -`AllIndices()` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`AllTypes()` method:: deleted -`Analyzer(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`AnalyzeWildcard(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Conflicts(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`DefaultOperator(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Df(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`ExpandWildcards(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`From(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Index()` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Index(Indices)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Lenient(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`MatchAll()` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Pipeline(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Preference(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryOnQueryString(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Refresh(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`RequestCache(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`RequestsPerSecond(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Routing(Routing)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Script(Func)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Script(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Scroll(Time)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`ScrollSize(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`SearchTimeout(Time)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`SearchType(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Size(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Slices(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Sort(String[])` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`SourceEnabled(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`SourceExclude(Fields)` method:: deleted -`SourceExclude(Expression>[])` method:: deleted -`SourceExcludes(Fields)` method:: added -`SourceExcludes(Expression>[])` method:: added -`SourceInclude(Fields)` method:: deleted -`SourceInclude(Expression>[])` method:: deleted -`SourceIncludes(Fields)` method:: added -`SourceIncludes(Expression>[])` method:: added -`Stats(String[])` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`TerminateAfter(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Timeout(Time)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted -`Version(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`VersionType(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`WaitForActiveShards(String)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. -`WaitForCompletion(Nullable)` method:: -Member type changed from `UpdateByQueryDescriptor` to `UpdateByQueryDescriptor`. - -[discrete] -==== `Nest.UpdateByQueryRequest` - -[horizontal] -`UpdateByQueryRequest()` method:: added -`UpdateByQueryRequest(Indices, Types)` method:: deleted -`SourceExclude` property:: deleted -`SourceExcludes` property:: added -`SourceInclude` property:: deleted -`SourceIncludes` property:: added - -[discrete] -==== `Nest.UpdateByQueryRequest` - -[horizontal] -`UpdateByQueryRequest()` method:: added -`UpdateByQueryRequest(Indices, Types)` method:: deleted -`AllowNoIndices` property:: deleted -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`Conflicts` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`ExpandWildcards` property:: deleted -`From` property:: deleted -`IgnoreUnavailable` property:: deleted -`Lenient` property:: deleted -`Pipeline` property:: deleted -`Preference` property:: deleted -`Query` property:: deleted -`QueryOnQueryString` property:: deleted -`Refresh` property:: deleted -`RequestCache` property:: deleted -`RequestsPerSecond` property:: deleted -`Routing` property:: deleted -`Script` property:: deleted -`Scroll` property:: deleted -`ScrollSize` property:: deleted -`SearchTimeout` property:: deleted -`SearchType` property:: deleted -`Self` property:: deleted -`Size` property:: deleted -`Slices` property:: deleted -`Sort` property:: deleted -`SourceEnabled` property:: deleted -`SourceExclude` property:: deleted -`SourceInclude` property:: deleted -`Stats` property:: deleted -`TerminateAfter` property:: deleted -`Timeout` property:: deleted -`TypedSelf` property:: added -`Version` property:: deleted -`VersionType` property:: deleted -`WaitForActiveShards` property:: deleted -`WaitForCompletion` property:: deleted - -[discrete] -==== `Nest.UpdateByQueryResponse` - -[horizontal] -`Batches` property getter:: -changed to non-virtual. -`Failures` property getter:: -changed to non-virtual. -`Noops` property getter:: -changed to non-virtual. -`RequestsPerSecond` property getter:: -changed to non-virtual. -`Retries` property getter:: -changed to non-virtual. -`Task` property getter:: -changed to non-virtual. -`TimedOut` property getter:: -changed to non-virtual. -`Took` property getter:: -changed to non-virtual. -`Total` property getter:: -changed to non-virtual. -`Updated` property getter:: -changed to non-virtual. -`VersionConflicts` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.UpdateByQueryRethrottleDescriptor` - -[horizontal] -`UpdateByQueryRethrottleDescriptor()` method:: added -`UpdateByQueryRethrottleDescriptor(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. -`RequestsPerSecond(Nullable)` method:: -Parameter name changed from `requestsPerSecond` to `requestspersecond`. - -[discrete] -==== `Nest.UpdateByQueryRethrottleRequest` - -[horizontal] -`UpdateByQueryRethrottleRequest()` method:: added -`UpdateByQueryRethrottleRequest(TaskId)` method:: -Parameter name changed from `task_id` to `taskId`. - -[discrete] -==== `Nest.UpdateDatafeedDescriptor` - -[horizontal] -`UpdateDatafeedDescriptor()` method:: added -`UpdateDatafeedDescriptor(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. -`Aggregations(Func, IAggregationContainer>)` method:: deleted -`Aggregations(Func, IAggregationContainer>)` method:: added -`AllIndices()` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`AllTypes()` method:: deleted -`ChunkingConfig(Func)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`Frequency(Time)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`Indices()` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`Indices(Indices)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`JobId(Id)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryDelay(Time)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`ScriptFields(Func>)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`ScrollSize(Nullable)` method:: -Member type changed from `UpdateDatafeedDescriptor` to `UpdateDatafeedDescriptor`. -`Types()` method:: deleted -`Types(Types)` method:: deleted - -[discrete] -==== `Nest.UpdateDatafeedRequest` - -[horizontal] -`UpdateDatafeedRequest()` method:: added -`UpdateDatafeedRequest(Id)` method:: -Parameter name changed from `datafeed_id` to `datafeedId`. -`Types` property:: deleted - -[discrete] -==== `Nest.UpdateDatafeedResponse` - -[horizontal] -`Aggregations` property getter:: -changed to non-virtual. -`ChunkingConfig` property getter:: -changed to non-virtual. -`DatafeedId` property getter:: -changed to non-virtual. -`Frequency` property getter:: -changed to non-virtual. -`Indices` property getter:: -changed to non-virtual. -`JobId` property getter:: -changed to non-virtual. -`Query` property getter:: -changed to non-virtual. -`QueryDelay` property getter:: -changed to non-virtual. -`ScriptFields` property getter:: -changed to non-virtual. -`ScrollSize` property getter:: -changed to non-virtual. -`Types` property:: deleted - -[discrete] -==== `Nest.UpdateDescriptor` - -[horizontal] -`UpdateDescriptor()` method:: added -`UpdateDescriptor(DocumentPath)` method:: deleted -`UpdateDescriptor(Id)` method:: added -`UpdateDescriptor(IndexName, Id)` method:: added -`UpdateDescriptor(IndexName, TypeName, Id)` method:: deleted -`UpdateDescriptor(TDocument, IndexName, Id)` method:: added -`Fields(Fields)` method:: deleted -`Fields(Expression>[])` method:: deleted -`Fields(String[])` method:: deleted -`IfPrimaryTerm(Nullable)` method:: -Parameter name changed from `ifPrimaryTerm` to `ifprimaryterm`. -`IfSeqNo(Nullable)` method:: deleted -`IfSequenceNumber(Nullable)` method:: added -`Parent(String)` method:: deleted -`RetryOnConflict(Nullable)` method:: -Parameter name changed from `retryOnConflict` to `retryonconflict`. -`SourceEnabled(Nullable)` method:: -Parameter name changed from `sourceEnabled` to `sourceenabled`. -`Type()` method:: deleted -`Type(TypeName)` method:: deleted -`Version(Nullable)` method:: deleted -`VersionType(Nullable)` method:: deleted -`WaitForActiveShards(String)` method:: -Parameter name changed from `waitForActiveShards` to `waitforactiveshards`. - -[discrete] -==== `Nest.UpdateFilterDescriptor` - -[horizontal] -`UpdateFilterDescriptor()` method:: added -`UpdateFilterDescriptor(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.UpdateFilterRequest` - -[horizontal] -`UpdateFilterRequest()` method:: added -`UpdateFilterRequest(Id)` method:: -Parameter name changed from `filter_id` to `filterId`. - -[discrete] -==== `Nest.UpdateFilterResponse` - -[horizontal] -`Description` property getter:: -changed to non-virtual. -`FilterId` property getter:: -changed to non-virtual. -`Items` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.UpdateIndexSettingsDescriptor` - -[horizontal] -`UpdateIndexSettingsDescriptor(Indices)` method:: added -`AllowNoIndices(Nullable)` method:: -Parameter name changed from `allowNoIndices` to `allownoindices`. -`ExpandWildcards(Nullable)` method:: -Parameter name changed from `expandWildcards` to `expandwildcards`. -`FlatSettings(Nullable)` method:: -Parameter name changed from `flatSettings` to `flatsettings`. -`IgnoreUnavailable(Nullable)` method:: -Parameter name changed from `ignoreUnavailable` to `ignoreunavailable`. -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. -`PreserveExisting(Nullable)` method:: -Parameter name changed from `preserveExisting` to `preserveexisting`. - -[discrete] -==== `Nest.UpdateJobDescriptor` - -[horizontal] -`UpdateJobDescriptor()` method:: added -`UpdateJobDescriptor(Id)` method:: -Parameter name changed from `job_id` to `jobId`. -`AnalysisLimits(Func)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`BackgroundPersistInterval(Time)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`CustomSettings(Func, FluentDictionary>)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`Description(String)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`ModelPlot(Func, IModelPlotConfigEnabled>)` method:: deleted -`ModelPlot(Func, IModelPlotConfigEnabled>)` method:: added -`ModelSnapshotRetentionDays(Nullable)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`RenormalizationWindowDays(Nullable)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. -`ResultsRetentionDays(Nullable)` method:: -Member type changed from `UpdateJobDescriptor` to `UpdateJobDescriptor`. - -[discrete] -==== `Nest.UpdateJobRequest` - -[horizontal] -`UpdateJobRequest()` method:: added -`UpdateJobRequest(Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.UpdateModelSnapshotDescriptor` - -[horizontal] -`UpdateModelSnapshotDescriptor()` method:: added -`UpdateModelSnapshotDescriptor(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.UpdateModelSnapshotRequest` - -[horizontal] -`UpdateModelSnapshotRequest()` method:: added -`UpdateModelSnapshotRequest(Id, Id)` method:: -Parameter name changed from `job_id` to `jobId`. - -[discrete] -==== `Nest.UpdateModelSnapshotResponse` - -[horizontal] -`Model` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.UpdateRequest` - -[horizontal] -`UpdateRequest()` method:: added -`UpdateRequest(DocumentPath, IndexName, TypeName, Id)` method:: deleted -`UpdateRequest(Id)` method:: added -`UpdateRequest(IndexName, Id)` method:: added -`UpdateRequest(IndexName, TypeName, Id)` method:: deleted -`UpdateRequest(TDocument, IndexName, Id)` method:: added -`Fields` property:: deleted -`IfSeqNo` property:: deleted -`IfSequenceNumber` property:: added -`Parent` property:: deleted -`Version` property:: deleted -`VersionType` property:: deleted - -[discrete] -==== `Nest.UpdateResponse` - -[horizontal] -`Id` property:: deleted -`Index` property:: deleted -`IsValid` property:: added -`Result` property:: deleted -`ShardsHit` property:: deleted -`Type` property:: deleted -`Version` property:: deleted - -[discrete] -==== `Nest.UpgradeActionRequired` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeResponse` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeStatus` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeStatusDescriptor` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeStatusRequest` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.UpgradeStatusResponse` - -[horizontal] -type:: deleted - - -[discrete] -==== `Nest.UppercaseProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - - -[discrete] -==== `Nest.UrlDecodeProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - -[discrete] -==== `Nest.UserAgentProcessorDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added -`TargetField(Expression>)` method:: deleted -`TargetField(Expression>)` method:: added - - - -[discrete] -==== `Nest.ValidateDetectorDescriptor` - -[horizontal] -`Count(Func, ICountDetector>)` method:: deleted -`Count(Func, ICountDetector>)` method:: added -`DistinctCount(Func, IDistinctCountDetector>)` method:: deleted -`DistinctCount(Func, IDistinctCountDetector>)` method:: added -`FreqRare(Func, IRareDetector>)` method:: deleted -`FreqRare(Func, IRareDetector>)` method:: added -`HighCount(Func, ICountDetector>)` method:: deleted -`HighCount(Func, ICountDetector>)` method:: added -`HighDistinctCount(Func, IDistinctCountDetector>)` method:: deleted -`HighDistinctCount(Func, IDistinctCountDetector>)` method:: added -`HighInfoContent(Func, IInfoContentDetector>)` method:: deleted -`HighInfoContent(Func, IInfoContentDetector>)` method:: added -`HighMean(Func, IMetricDetector>)` method:: deleted -`HighMean(Func, IMetricDetector>)` method:: added -`HighMedian(Func, IMetricDetector>)` method:: deleted -`HighMedian(Func, IMetricDetector>)` method:: added -`HighNonNullSum(Func, INonNullSumDetector>)` method:: deleted -`HighNonNullSum(Func, INonNullSumDetector>)` method:: added -`HighNonZeroCount(Func, INonZeroCountDetector>)` method:: deleted -`HighNonZeroCount(Func, INonZeroCountDetector>)` method:: added -`HighSum(Func, ISumDetector>)` method:: deleted -`HighSum(Func, ISumDetector>)` method:: added -`HighVarp(Func, IMetricDetector>)` method:: deleted -`HighVarp(Func, IMetricDetector>)` method:: added -`InfoContent(Func, IInfoContentDetector>)` method:: deleted -`InfoContent(Func, IInfoContentDetector>)` method:: added -`LowCount(Func, ICountDetector>)` method:: deleted -`LowCount(Func, ICountDetector>)` method:: added -`LowDistinctCount(Func, IDistinctCountDetector>)` method:: deleted -`LowDistinctCount(Func, IDistinctCountDetector>)` method:: added -`LowInfoContent(Func, IInfoContentDetector>)` method:: deleted -`LowInfoContent(Func, IInfoContentDetector>)` method:: added -`LowMean(Func, IMetricDetector>)` method:: deleted -`LowMean(Func, IMetricDetector>)` method:: added -`LowMedian(Func, IMetricDetector>)` method:: deleted -`LowMedian(Func, IMetricDetector>)` method:: added -`LowNonNullSum(Func, INonNullSumDetector>)` method:: deleted -`LowNonNullSum(Func, INonNullSumDetector>)` method:: added -`LowNonZeroCount(Func, INonZeroCountDetector>)` method:: deleted -`LowNonZeroCount(Func, INonZeroCountDetector>)` method:: added -`LowSum(Func, ISumDetector>)` method:: deleted -`LowSum(Func, ISumDetector>)` method:: added -`LowVarp(Func, IMetricDetector>)` method:: deleted -`LowVarp(Func, IMetricDetector>)` method:: added -`Max(Func, IMetricDetector>)` method:: deleted -`Max(Func, IMetricDetector>)` method:: added -`Mean(Func, IMetricDetector>)` method:: deleted -`Mean(Func, IMetricDetector>)` method:: added -`Median(Func, IMetricDetector>)` method:: deleted -`Median(Func, IMetricDetector>)` method:: added -`Metric(Func, IMetricDetector>)` method:: deleted -`Metric(Func, IMetricDetector>)` method:: added -`Min(Func, IMetricDetector>)` method:: deleted -`Min(Func, IMetricDetector>)` method:: added -`NonNullSum(Func, INonNullSumDetector>)` method:: deleted -`NonNullSum(Func, INonNullSumDetector>)` method:: added -`NonZeroCount(Func, INonZeroCountDetector>)` method:: deleted -`NonZeroCount(Func, INonZeroCountDetector>)` method:: added -`Rare(Func, IRareDetector>)` method:: deleted -`Rare(Func, IRareDetector>)` method:: added -`Sum(Func, ISumDetector>)` method:: deleted -`Sum(Func, ISumDetector>)` method:: added -`TimeOfDay(Func, ITimeDetector>)` method:: deleted -`TimeOfDay(Func, ITimeDetector>)` method:: added -`TimeOfWeek(Func, ITimeDetector>)` method:: deleted -`TimeOfWeek(Func, ITimeDetector>)` method:: added -`Varp(Func, IMetricDetector>)` method:: deleted -`Varp(Func, IMetricDetector>)` method:: added - -[discrete] -==== `Nest.ValidateJobDescriptor` - -[horizontal] -`AnalysisConfig(Func, IAnalysisConfig>)` method:: deleted -`AnalysisConfig(Func, IAnalysisConfig>)` method:: added -`AnalysisLimits(Func)` method:: -Member type changed from `ValidateJobDescriptor` to `ValidateJobDescriptor`. -`DataDescription(Func, IDataDescription>)` method:: deleted -`DataDescription(Func, IDataDescription>)` method:: added -`Description(String)` method:: -Member type changed from `ValidateJobDescriptor` to `ValidateJobDescriptor`. -`ModelPlot(Func, IModelPlotConfig>)` method:: deleted -`ModelPlot(Func, IModelPlotConfig>)` method:: added -`ModelSnapshotRetentionDays(Nullable)` method:: -Member type changed from `ValidateJobDescriptor` to `ValidateJobDescriptor`. -`ResultsIndexName()` method:: -Member type changed from `ValidateJobDescriptor` to `ValidateJobDescriptor`. -`ResultsIndexName(IndexName)` method:: -Member type changed from `ValidateJobDescriptor` to `ValidateJobDescriptor`. - -[discrete] -==== `Nest.ValidateQueryDescriptor` - -[horizontal] -`ValidateQueryDescriptor(Indices)` method:: added -`AllIndices()` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`AllowNoIndices(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`AllShards(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`AllTypes()` method:: deleted -`Analyzer(String)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`AnalyzeWildcard(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`DefaultOperator(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Df(String)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`ExpandWildcards(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Explain(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`IgnoreUnavailable(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Index()` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Index(Indices)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Lenient(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`OperationThreading(String)` method:: deleted -`Query(Func, QueryContainer>)` method:: deleted -`Query(Func, QueryContainer>)` method:: added -`QueryOnQueryString(String)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Rewrite(Nullable)` method:: -Member type changed from `ValidateQueryDescriptor` to `ValidateQueryDescriptor`. -`Type()` method:: deleted -`Type(Types)` method:: deleted - -[discrete] -==== `Nest.ValidateQueryRequest` - -[horizontal] -`ValidateQueryRequest(Indices, Types)` method:: deleted -`OperationThreading` property:: deleted - -[discrete] -==== `Nest.ValidateQueryRequest` - -[horizontal] -`ValidateQueryRequest(Indices, Types)` method:: deleted -`AllowNoIndices` property:: deleted -`AllShards` property:: deleted -`Analyzer` property:: deleted -`AnalyzeWildcard` property:: deleted -`DefaultOperator` property:: deleted -`Df` property:: deleted -`ExpandWildcards` property:: deleted -`Explain` property:: deleted -`IgnoreUnavailable` property:: deleted -`Lenient` property:: deleted -`OperationThreading` property:: deleted -`Query` property:: deleted -`QueryOnQueryString` property:: deleted -`Rewrite` property:: deleted -`Self` property:: deleted -`TypedSelf` property:: added - -[discrete] -==== `Nest.ValidateQueryResponse` - -[horizontal] -`Explanations` property getter:: -changed to non-virtual. -`Shards` property getter:: -changed to non-virtual. -`Valid` property getter:: -changed to non-virtual. - - - -[discrete] -==== `Nest.VerifyRepositoryDescriptor` - -[horizontal] -`VerifyRepositoryDescriptor()` method:: added -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.VerifyRepositoryRequest` - -[horizontal] -`VerifyRepositoryRequest()` method:: added - -[discrete] -==== `Nest.VerifyRepositoryResponse` - -[horizontal] -`Nodes` property getter:: -changed to non-virtual. - - -[discrete] -==== `Nest.Watch` - -[horizontal] -`Actions` property getter:: -changed to virtual. -`Actions` property setter:: -Member is more visible. -`Condition` property getter:: -changed to virtual. -`Condition` property setter:: -Member is more visible. -`Input` property getter:: -changed to virtual. -`Input` property setter:: -Member is more visible. -`Meta` property:: deleted -`Metadata` property:: added -`Status` property setter:: -Member is more visible. -`ThrottlePeriod` property getter:: -changed to virtual. -`ThrottlePeriod` property setter:: -Member is more visible. -`Transform` property getter:: -changed to virtual. -`Transform` property setter:: -Member is more visible. -`Trigger` property getter:: -changed to virtual. -`Trigger` property setter:: -Member is more visible. - -[discrete] -==== `Nest.WatchDescriptor` - -[horizontal] -type:: added - - - -[discrete] -==== `Nest.WatcherStatsDescriptor` - -[horizontal] -`WatcherStatsDescriptor(Metrics)` method:: added -`EmitStacktraces(Nullable)` method:: -Parameter name changed from `emitStacktraces` to `emitstacktraces`. -`Metric(Metrics)` method:: added -`WatcherStatsMetric(WatcherStatsMetric)` method:: deleted - -[discrete] -==== `Nest.WatcherStatsRequest` - -[horizontal] -`WatcherStatsRequest(WatcherStatsMetric)` method:: deleted -`WatcherStatsRequest(Metrics)` method:: added - -[discrete] -==== `Nest.WatcherStatsResponse` - -[horizontal] -`ClusterName` property getter:: -changed to non-virtual. -`ManuallyStopped` property getter:: -changed to non-virtual. -`Stats` property getter:: -changed to non-virtual. - -[discrete] -==== `Nest.WatchRecord` - -[horizontal] -`Node` property:: added - - - - - -[discrete] -==== `Nest.WeightedAverageValueDescriptor` - -[horizontal] -`Field(Expression>)` method:: deleted -`Field(Expression>)` method:: added - -[discrete] -==== `Nest.WildcardQuery` - -[horizontal] -type:: deleted - -[discrete] -==== `Nest.WildcardQuery` - -[horizontal] -type:: added - -[discrete] -==== `Nest.WriteResponseBase` - -[horizontal] -type:: added - - - - - -[discrete] -==== `Nest.XPackInfoResponse` - -[horizontal] -`Build` property getter:: -changed to non-virtual. -`Features` property getter:: -changed to non-virtual. -`License` property getter:: -changed to non-virtual. -`Tagline` property getter:: -changed to non-virtual. - - - - -[discrete] -==== `Nest.XPackUsageDescriptor` - -[horizontal] -`MasterTimeout(Time)` method:: -Parameter name changed from `masterTimeout` to `mastertimeout`. - -[discrete] -==== `Nest.XPackUsageResponse` - -[horizontal] -`Alerting` property getter:: -changed to non-virtual. -`Ccr` property getter:: -changed to non-virtual. -`Graph` property getter:: -changed to non-virtual. -`Logstash` property getter:: -changed to non-virtual. -`MachineLearning` property getter:: -changed to non-virtual. -`Monitoring` property getter:: -changed to non-virtual. -`Rollup` property getter:: -changed to non-virtual. -`Security` property getter:: -changed to non-virtual. -`Sql` property getter:: -changed to non-virtual. - - - -[discrete] -==== `System.Collections.Generic.SynchronizedCollection` - -[horizontal] -type:: deleted diff --git a/docs/aggregations.asciidoc b/docs/aggregations.asciidoc deleted file mode 100644 index 32313dd4ac9..00000000000 --- a/docs/aggregations.asciidoc +++ /dev/null @@ -1,371 +0,0 @@ -[[reference-aggregations]] -= Aggregations - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/aggregations.asciidoc. -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! -//// - -[partintro] --- -Aggregations are arguably one of the most powerful features of Elasticsearch and NEST -exposes all of the available Aggregation types - -* <> - -* <> - -* <> - -* <> - -See the documentation on <> for how to use them in NEST. - --- - -[[metric-aggregations]] -== Metric Aggregations - -The aggregations in this family compute metrics based on values extracted in one way or another from the documents that are being aggregated. -The values are typically extracted from the fields of the document (using the field data), but can also be generated using scripts. - -:anchor-list: aggregations/metric - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/search-aggregations-metrics.html[Metric aggregations] for more details. - -:includes-from-dirs: aggregations/metric - -include::aggregations/metric/average/average-aggregation-usage.asciidoc[] - -include::aggregations/metric/boxplot/boxplot-aggregation-usage.asciidoc[] - -include::aggregations/metric/cardinality/cardinality-aggregation-usage.asciidoc[] - -include::aggregations/metric/extended-stats/extended-stats-aggregation-usage.asciidoc[] - -include::aggregations/metric/geo-bounds/geo-bounds-aggregation-usage.asciidoc[] - -include::aggregations/metric/geo-centroid/geo-centroid-aggregation-usage.asciidoc[] - -include::aggregations/metric/geo-line/geo-line-aggregation-usage.asciidoc[] - -include::aggregations/metric/max/max-aggregation-usage.asciidoc[] - -include::aggregations/metric/median-absolute-deviation/median-absolute-deviation-aggregation-usage.asciidoc[] - -include::aggregations/metric/min/min-aggregation-usage.asciidoc[] - -include::aggregations/metric/percentile-ranks/percentile-ranks-aggregation-usage.asciidoc[] - -include::aggregations/metric/percentiles/percentiles-aggregation-usage.asciidoc[] - -include::aggregations/metric/rate/rate-aggregation-usage.asciidoc[] - -include::aggregations/metric/scripted-metric/scripted-metric-aggregation-usage.asciidoc[] - -include::aggregations/metric/stats/stats-aggregation-usage.asciidoc[] - -include::aggregations/metric/string-stats/string-stats-aggregation-usage.asciidoc[] - -include::aggregations/metric/sum/sum-aggregation-usage.asciidoc[] - -include::aggregations/metric/t-test/t-test-aggregation-usage.asciidoc[] - -include::aggregations/metric/top-hits/top-hits-aggregation-usage.asciidoc[] - -include::aggregations/metric/top-metrics/top-metrics-aggregation-usage.asciidoc[] - -include::aggregations/metric/value-count/value-count-aggregation-usage.asciidoc[] - -include::aggregations/metric/weighted-average/weighted-average-aggregation-usage.asciidoc[] - -[[bucket-aggregations]] -== Bucket Aggregations - -Bucket aggregations don’t calculate metrics over fields like the metrics aggregations do, but instead, they create buckets of documents. -Each bucket is associated with a criterion (depending on the aggregation type) which determines whether or not a document in the -current context "falls" into it. In other words, the buckets effectively define document sets. -In addition to the buckets themselves, the bucket aggregations also compute and return the number of documents that "fell into" each bucket. - -:anchor-list: aggregations/bucket - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -[NOTE] --- -Bucketing aggregations can have sub-aggregations (bucketing or metric). The sub-aggregations will be computed -for the buckets which their parent aggregation generates. There is no hard limit on the level/depth -of nested aggregations (one can nest an aggregation under a "parent" aggregation, which is itself a -sub-aggregation of another higher-level aggregation). - --- - -See the Elasticsearch documentation on {ref_current}/search-aggregations-bucket.html[Bucket aggregations] for more details. - -:includes-from-dirs: aggregations/bucket - -include::aggregations/bucket/adjacency-matrix/adjacency-matrix-usage.asciidoc[] - -include::aggregations/bucket/auto-date-histogram/auto-date-histogram-aggregation-usage.asciidoc[] - -include::aggregations/bucket/children/children-aggregation-usage.asciidoc[] - -include::aggregations/bucket/composite/composite-aggregation-usage.asciidoc[] - -include::aggregations/bucket/date-histogram/date-histogram-aggregation-usage.asciidoc[] - -include::aggregations/bucket/date-range/date-range-aggregation-usage.asciidoc[] - -include::aggregations/bucket/diversified-sampler/diversified-sampler-aggregation-usage.asciidoc[] - -include::aggregations/bucket/filter/filter-aggregation-usage.asciidoc[] - -include::aggregations/bucket/filters/filters-aggregation-usage.asciidoc[] - -include::aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciidoc[] - -include::aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc[] - -include::aggregations/bucket/geo-tile-grid/geo-tile-grid-aggregation-usage.asciidoc[] - -include::aggregations/bucket/global/global-aggregation-usage.asciidoc[] - -include::aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc[] - -include::aggregations/bucket/ip-range/ip-range-aggregation-usage.asciidoc[] - -include::aggregations/bucket/missing/missing-aggregation-usage.asciidoc[] - -include::aggregations/bucket/multi-terms/multi-terms-aggregation-usage.asciidoc[] - -include::aggregations/bucket/nested/nested-aggregation-usage.asciidoc[] - -include::aggregations/bucket/parent/parent-aggregation-usage.asciidoc[] - -include::aggregations/bucket/range/range-aggregation-usage.asciidoc[] - -include::aggregations/bucket/rare-terms/rare-terms-aggregation-usage.asciidoc[] - -include::aggregations/bucket/reverse-nested/reverse-nested-aggregation-usage.asciidoc[] - -include::aggregations/bucket/sampler/sampler-aggregation-usage.asciidoc[] - -include::aggregations/bucket/significant-terms/significant-terms-aggregation-usage.asciidoc[] - -include::aggregations/bucket/significant-text/significant-text-aggregation-usage.asciidoc[] - -include::aggregations/bucket/terms/terms-aggregation-usage.asciidoc[] - -[[pipeline-aggregations]] -== Pipeline Aggregations - -Pipeline aggregations work on the outputs produced from other aggregations rather than from document sets, adding information to the output tree. -There are many different types of pipeline aggregation, each computing different information from other aggregations. - -:anchor-list: aggregations/pipeline - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/search-aggregations-pipeline.html[Pipeline aggregations] for more details. - -:includes-from-dirs: aggregations/pipeline - -include::aggregations/pipeline/average-bucket/average-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/bucket-script/bucket-script-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/bucket-selector/bucket-selector-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/bucket-sort/bucket-sort-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/cumulative-cardinality/cumulative-cardinality-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/cumulative-sum/cumulative-sum-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/derivative/derivative-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/extended-stats-bucket/extended-stats-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/max-bucket/max-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/min-bucket/min-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-average/moving-average-ewma-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-average/moving-average-holt-linear-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-average/moving-average-holt-winters-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-average/moving-average-linear-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-average/moving-average-simple-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-function/moving-function-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/moving-percentiles/moving-percentiles-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/normalize/normalize-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/percentiles-bucket/percentiles-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/serial-differencing/serial-differencing-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/stats-bucket/stats-bucket-aggregation-usage.asciidoc[] - -include::aggregations/pipeline/sum-bucket/sum-bucket-aggregation-usage.asciidoc[] - -[[matrix-aggregations]] -== Matrix Aggregations - -The aggregations in this family operate on multiple fields and produce a matrix result based on the values extracted from the requested document fields. -Unlike <> and <> aggregations, this aggregation family does not yet support scripting. - -:anchor-list: aggregations/matrix - -* <> - -See the Elasticsearch documentation on {ref_current}/search-aggregations-matrix.html[Matrix aggregations] for more details. - -:includes-from-dirs: aggregations/matrix - -include::aggregations/matrix/matrix-stats/matrix-stats-aggregation-usage.asciidoc[] - diff --git a/docs/aggregations/aggregation-meta-usage.asciidoc b/docs/aggregations/aggregation-meta-usage.asciidoc deleted file mode 100644 index a06ee39497f..00000000000 --- a/docs/aggregations/aggregation-meta-usage.asciidoc +++ /dev/null @@ -1,77 +0,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/AggregationMetaUsageTests.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! -//// - -[[aggregation-metadata]] -=== Aggregation Metadata - -Metadata can be provided per aggregation, and will be returned in the aggregation response - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Min("min_last_activity", m => m - .Field(p => p.LastActivity) - .Meta(d => d - .Add("meta_1", "value_1") - .Add("meta_2", 2) - .Add("meta_3", new { meta_3 = "value_3" }) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MinAggregation("min_last_activity", Infer.Field(p => p.LastActivity)) -{ - Meta = new Dictionary - { - { "meta_1", "value_1" }, - { "meta_2", 2 }, - { "meta_3", new { meta_3 = "value_3" } } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "min_last_activity": { - "min": { - "field": "lastActivity" - }, - "meta": { - "meta_1": "value_1", - "meta_2": 2, - "meta_3": { - "meta_3": "value_3" - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var min = response.Aggregations.Min("min_last_activity"); -min.Meta.Should().NotBeNull().And.ContainKeys("meta_1", "meta_2", "meta_3"); ----- - diff --git a/docs/aggregations/bucket/adjacency-matrix/adjacency-matrix-usage.asciidoc b/docs/aggregations/bucket/adjacency-matrix/adjacency-matrix-usage.asciidoc deleted file mode 100644 index bdfdb83e16c..00000000000 --- a/docs/aggregations/bucket/adjacency-matrix/adjacency-matrix-usage.asciidoc +++ /dev/null @@ -1,96 +0,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/AdjacencyMatrix/AdjacencyMatrixUsageTests.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! -//// - -[[adjacency-matrix-usage]] -=== Adjacency Matrix Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.AdjacencyMatrix("interactions", am => am - .Filters(fs => fs - .Filter("grpA", f => f.Term(p => p.State, StateOfBeing.BellyUp)) - .Filter("grpB", f => f.Term(p => p.State, StateOfBeing.Stable)) - .Filter("grpC", f => f.Term(p => p.State, StateOfBeing.VeryActive)) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new AdjacencyMatrixAggregation("interactions") -{ - Filters = new NamedFiltersContainer - { - { "grpA", new TermQuery { Field = "state", Value = StateOfBeing.BellyUp } }, - { "grpB", new TermQuery { Field = "state", Value = StateOfBeing.Stable } }, - { "grpC", new TermQuery { Field = "state", Value = StateOfBeing.VeryActive } }, - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "interactions": { - "adjacency_matrix": { - "filters": { - "grpA": { - "term": { - "state": { - "value": "BellyUp" - } - } - }, - "grpB": { - "term": { - "state": { - "value": "Stable" - } - } - }, - "grpC": { - "term": { - "state": { - "value": "VeryActive" - } - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var interactions = response.Aggregations.AdjacencyMatrix("interactions"); -interactions.Should().NotBeNull(); -var buckets = interactions.Buckets; -buckets.Should().NotBeNullOrEmpty(); -foreach (var bucket in buckets) -{ - bucket.Key.Should().NotBeNullOrEmpty(); - bucket.DocCount.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/auto-date-histogram/auto-date-histogram-aggregation-usage.asciidoc b/docs/aggregations/bucket/auto-date-histogram/auto-date-histogram-aggregation-usage.asciidoc deleted file mode 100644 index d67e61b64bb..00000000000 --- a/docs/aggregations/bucket/auto-date-histogram/auto-date-histogram-aggregation-usage.asciidoc +++ /dev/null @@ -1,128 +0,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/AutoDateHistogram/AutoDateHistogramAggregationUsageTests.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! -//// - -[[auto-date-histogram-aggregation-usage]] -=== Auto Date Histogram Aggregation Usage - -A multi-bucket aggregation similar to the Date Histogram Aggregation except instead of providing an interval to -use as the width of each bucket, a target number of buckets is provided indicating the number of buckets needed -and the interval of the buckets is automatically chosen to best achieve that target. The number of buckets -returned will always be less than or equal to this target number. - -NOTE: When specifying a `format` **and** `extended_bounds` or `missing`, in order for Elasticsearch to be able to parse -the serialized `DateTime` of `extended_bounds` or `missing` correctly, the `date_optional_time` format is included -as part of the `format` value. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-autodatehistogram-aggregation.html[Auto Date Histogram Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.AutoDateHistogram("projects_started_per_month", date => date - .Field(p => p.StartedOn) - .Buckets(10) - .Format("yyyy-MM-dd'T'HH:mm:ss") - .Missing(FixedDate) - .Aggregations(childAggs => childAggs - .Nested("project_tags", n => n - .Path(p => p.Tags) - .Aggregations(nestedAggs => nestedAggs - .Terms("tags", avg => avg.Field(p => p.Tags.First().Name)) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new AutoDateHistogramAggregation("projects_started_per_month") -{ - Field = Field(p => p.StartedOn), - Buckets = 10, - Format = "yyyy-MM-dd'T'HH:mm:ss", - Missing = FixedDate, - Aggregations = new NestedAggregation("project_tags") - { - Path = Field(p => p.Tags), - Aggregations = new TermsAggregation("tags") - { - Field = Field(p => p.Tags.First().Name) - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "auto_date_histogram": { - "field": "startedOn", - "buckets": 10, - "format": "yyyy-MM-dd'T'HH:mm:ss||date_optional_time", <1> - "missing": "2015-06-06T12:01:02.123" - }, - "aggs": { - "project_tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tags": { - "terms": { - "field": "tags.name" - } - } - } - } - } - } -} ----- -<1> Note the inclusion of `date_optional_time` to `format` - -==== Handling responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var dateHistogram = response.Aggregations.AutoDateHistogram("projects_started_per_month"); -dateHistogram.Should().NotBeNull(); -dateHistogram.Interval.Should().NotBeNull(); -dateHistogram.Buckets.Should().NotBeNull(); -dateHistogram.Buckets.Count.Should().BeGreaterThan(1); -foreach (var item in dateHistogram.Buckets) -{ - item.Date.Should().NotBe(default); - item.DocCount.Should().BeGreaterThan(0); - - var nested = item.Nested("project_tags"); - nested.Should().NotBeNull(); - - var nestedTerms = nested.Terms("tags"); - nestedTerms.Buckets.Count.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/children/children-aggregation-usage.asciidoc b/docs/aggregations/bucket/children/children-aggregation-usage.asciidoc deleted file mode 100644 index 155cd81d7d8..00000000000 --- a/docs/aggregations/bucket/children/children-aggregation-usage.asciidoc +++ /dev/null @@ -1,78 +0,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/Children/ChildrenAggregationUsageTests.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! -//// - -[[children-aggregation-usage]] -=== Children Aggregation Usage - -A special single bucket aggregation that enables aggregating from buckets on parent document types to -buckets on child documents. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-children-aggregation.html[Children Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Children("name_of_child_agg", child => child - .Aggregations(childAggs => childAggs - .Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Min("min_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ChildrenAggregation("name_of_child_agg", typeof(CommitActivity)) -{ - Aggregations = - new AverageAggregation("average_per_child", "confidenceFactor") - && new MaxAggregation("max_per_child", "confidenceFactor") - && new MinAggregation("min_per_child", "confidenceFactor") -} ----- - -[source,javascript] -.Example json output ----- -{ - "name_of_child_agg": { - "children": { - "type": "commits" - }, - "aggs": { - "average_per_child": { - "avg": { - "field": "confidenceFactor" - } - }, - "max_per_child": { - "max": { - "field": "confidenceFactor" - } - }, - "min_per_child": { - "min": { - "field": "confidenceFactor" - } - } - } - } -} ----- - diff --git a/docs/aggregations/bucket/composite/composite-aggregation-usage.asciidoc b/docs/aggregations/bucket/composite/composite-aggregation-usage.asciidoc deleted file mode 100644 index 48a40a53d31..00000000000 --- a/docs/aggregations/bucket/composite/composite-aggregation-usage.asciidoc +++ /dev/null @@ -1,336 +0,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/Composite/CompositeAggregationUsageTests.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! -//// - -[[composite-aggregation-usage]] -=== Composite Aggregation Usage - -A multi-bucket aggregation that creates composite buckets from different sources. - -Unlike the other multi-bucket aggregation the composite aggregation can be -used to paginate all buckets from a multi-level aggregation efficiently. -This aggregation provides a way to stream all buckets of a specific aggregation -similarly to what scroll does for documents. - -The composite buckets are built from the combinations of the values extracted/created -for each document and each combination is considered as a composite bucket. - -NOTE: Only available in Elasticsearch 6.1.0+ - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-composite-aggregation.html[Composite Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Composite("my_buckets", date => date - .Sources(s => s - .Terms("branches", t => t - .Field(f => f.Branches.Suffix("keyword")) - ) - .DateHistogram("started", d => d - .Field(f => f.StartedOn) - .CalendarInterval(DateInterval.Month) - ) - .Histogram("branch_count", h => h - .Field(f => f.RequiredBranches) - .Interval(1) - ) - .GeoTileGrid("geo", h => h - .Field(f => f.LocationPoint) - .Precision(GeoTilePrecision.Precision12) - ) - ) - .Aggregations(childAggs => childAggs - .Nested("project_tags", n => n - .Path(p => p.Tags) - .Aggregations(nestedAggs => nestedAggs - .Terms("tags", avg => avg.Field(p => p.Tags.First().Name)) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CompositeAggregation("my_buckets") -{ - Sources = new List - { - new TermsCompositeAggregationSource("branches") - { - Field = Field(f => f.Branches.Suffix("keyword")) - }, - new DateHistogramCompositeAggregationSource("started") - { - Field = Field(f => f.StartedOn), - CalendarInterval = DateInterval.Month - }, - new HistogramCompositeAggregationSource("branch_count") - { - Field = Field(f => f.RequiredBranches), - Interval = 1 - }, - new GeoTileGridCompositeAggregationSource("geo") - { - Field = Field(f => f.LocationPoint), - Precision = GeoTilePrecision.Precision12 - } - }, - Aggregations = new NestedAggregation("project_tags") - { - Path = Field(p => p.Tags), - Aggregations = new TermsAggregation("tags") - { - Field = Field(p => p.Tags.First().Name) - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "my_buckets": { - "composite": { - "sources": [ - { - "branches": { - "terms": { - "field": "branches.keyword" - } - } - }, - { - "started": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - } - } - }, - { - "branch_count": { - "histogram": { - "field": "requiredBranches", - "interval": 1.0 - } - } - }, - { - "geo": { - "geotile_grid": { - "field": "locationPoint", - "precision": 12 - } - } - } - ] - }, - "aggs": { - "project_tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tags": { - "terms": { - "field": "tags.name" - } - } - } - } - } - } -} ----- - -==== Handling Responses - -Each Composite aggregation bucket key is a `CompositeKey` type, a specialized -`IReadOnlyDictionary` type with methods to convert values to supported types - -[source,csharp] ----- -response.ShouldBeValid(); - -var composite = response.Aggregations.Composite("my_buckets"); -composite.Should().NotBeNull(); -composite.Buckets.Should().NotBeNullOrEmpty(); -composite.AfterKey.Should().NotBeNull(); -if (TestConfiguration.Instance.InRange(">=6.3.0")) - composite.AfterKey.Should() - .HaveCount(4) - .And.ContainKeys("branches", "started", "branch_count", "geo"); -foreach (var item in composite.Buckets) -{ - var key = item.Key; - key.Should().NotBeNull(); - - key.TryGetValue("branches", out string branches).Should().BeTrue(); - branches.Should().NotBeNullOrEmpty(); - - key.TryGetValue("started", out DateTime started).Should().BeTrue(); - started.Should().BeAfter(default(DateTime)); - - key.TryGetValue("branch_count", out int branchCount).Should().BeTrue(); - branchCount.Should().BeGreaterThan(0); - - item.DocCount.Should().BeGreaterThan(0); - - var nested = item.Nested("project_tags"); - nested.Should().NotBeNull(); - - if (nested.DocCount > 0) - { - var nestedTerms = nested.Terms("tags"); - nestedTerms.Buckets.Count.Should().BeGreaterThan(0); - } -} ----- - -[float] -=== Missing buckets - -By default documents without a value for a given source are ignored. -It is possible to include them in the response by setting missing_bucket to `true` (defaults to `false`): - -NOTE: Only available in Elasticsearch 6.4.0+ - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Composite("my_buckets", date => date - .Sources(s => s - .Terms("branches", t => t - .Field(f => f.Branches.Suffix("keyword")) - .MissingBucket() - .Order(SortOrder.Ascending) - ) - ) - .Aggregations(childAggs => childAggs - .Nested("project_tags", n => n - .Path(p => p.Tags) - .Aggregations(nestedAggs => nestedAggs - .Terms("tags", avg => avg.Field(p => p.Tags.First().Name)) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CompositeAggregation("my_buckets") -{ - Sources = new List - { - new TermsCompositeAggregationSource("branches") - { - Field = Field(f => f.Branches.Suffix("keyword")), - MissingBucket = true, - Order = SortOrder.Ascending - } - }, - Aggregations = new NestedAggregation("project_tags") - { - Path = Field(p => p.Tags), - Aggregations = new TermsAggregation("tags") - { - Field = Field(p => p.Tags.First().Name) - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "my_buckets": { - "composite": { - "sources": [ - { - "branches": { - "terms": { - "field": "branches.keyword", - "order": "asc", - "missing_bucket": true - } - } - } - ] - }, - "aggs": { - "project_tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tags": { - "terms": { - "field": "tags.name" - } - } - } - } - } - } -} ----- - -==== Handling Responses - -Each Composite aggregation bucket key is an `CompositeKey`, a specialized -`IReadOnlyDictionary` type with methods to convert values to supported types - -[source,csharp] ----- -response.ShouldBeValid(); - -var composite = response.Aggregations.Composite("my_buckets"); -composite.Should().NotBeNull(); -composite.Buckets.Should().NotBeNullOrEmpty(); -composite.AfterKey.Should().NotBeNull(); - -if (TestConfiguration.Instance.InRange(">=6.3.0")) - composite.AfterKey.Should().HaveCount(1).And.ContainKeys("branches"); - -var i = 0; -foreach (var item in composite.Buckets) -{ - var key = item.Key; - key.Should().NotBeNull(); - - key.TryGetValue("branches", out string branches).Should().BeTrue("expected to find 'branches' in composite bucket"); - if (i == 0) branches.Should().BeNull("First key should be null as we expect to have some projects with no branches"); - else branches.Should().NotBeNullOrEmpty(); - - var nested = item.Nested("project_tags"); - nested.Should().NotBeNull(); - - var nestedTerms = nested.Terms("tags"); - nestedTerms.Buckets.Count.Should().BeGreaterThan(0); - i++; -} ----- - diff --git a/docs/aggregations/bucket/date-histogram/date-histogram-aggregation-usage.asciidoc b/docs/aggregations/bucket/date-histogram/date-histogram-aggregation-usage.asciidoc deleted file mode 100644 index 5ee54bc4963..00000000000 --- a/docs/aggregations/bucket/date-histogram/date-histogram-aggregation-usage.asciidoc +++ /dev/null @@ -1,144 +0,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/DateHistogram/DateHistogramAggregationUsageTests.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! -//// - -[[date-histogram-aggregation-usage]] -=== Date Histogram Aggregation Usage - -A multi-bucket aggregation similar to the histogram except it can only be applied on date values. -From a functionality perspective, this histogram supports the same features as the normal histogram. -The main difference is that the interval can be specified by date/time expressions. - -NOTE: When specifying a `format` **and** `extended_bounds`, `hard_bounds` or `missing`, in order for Elasticsearch to be able to parse -the serialized `DateTime` of `extended_bounds` or `missing` correctly, the `date_optional_time` format is included -as part of the `format` value. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-datehistogram-aggregation.html[Date Histogram Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", date => date - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(2) - .Format("yyyy-MM-dd'T'HH:mm:ss") - .ExtendedBounds(FixedDate.AddYears(-1), FixedDate.AddYears(1)) - .Order(HistogramOrder.CountAscending) - .Missing(FixedDate) - .Aggregations(childAggs => childAggs - .Nested("project_tags", n => n - .Path(p => p.Tags) - .Aggregations(nestedAggs => nestedAggs - .Terms("tags", avg => avg.Field(p => p.Tags.First().Name)) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = Field(p => p.StartedOn), - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 2, - Format = "yyyy-MM-dd'T'HH:mm:ss", - ExtendedBounds = new ExtendedBounds - { - Minimum = FixedDate.AddYears(-1), - Maximum = FixedDate.AddYears(1), - }, - Order = HistogramOrder.CountAscending, - Missing = FixedDate, - Aggregations = new NestedAggregation("project_tags") - { - Path = Field(p => p.Tags), - Aggregations = new TermsAggregation("tags") - { - Field = Field(p => p.Tags.First().Name) - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 2, - "format": "yyyy-MM-dd'T'HH:mm:ss||date_optional_time", <1> - "order": { - "_count": "asc" - }, - "extended_bounds": { - "min": "2014-06-06T12:01:02.123", - "max": "2016-06-06T12:01:02.123" - }, - "missing": "2015-06-06T12:01:02.123" - }, - "aggs": { - "project_tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tags": { - "terms": { - "field": "tags.name" - } - } - } - } - } - } -} ----- -<1> Note the inclusion of `date_optional_time` to `format` - -==== Handling responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var dateHistogram = response.Aggregations.DateHistogram("projects_started_per_month"); -dateHistogram.Should().NotBeNull(); -dateHistogram.Buckets.Should().NotBeNull(); -dateHistogram.Buckets.Count.Should().BeGreaterThan(10); -foreach (var item in dateHistogram.Buckets) -{ - item.Date.Should().NotBe(default(DateTime)); - item.DocCount.Should().BeGreaterThan(0); - - var nested = item.Nested("project_tags"); - nested.Should().NotBeNull(); - - var nestedTerms = nested.Terms("tags"); - nestedTerms.Buckets.Count.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/date-range/date-range-aggregation-usage.asciidoc b/docs/aggregations/bucket/date-range/date-range-aggregation-usage.asciidoc deleted file mode 100644 index 711ce5959d1..00000000000 --- a/docs/aggregations/bucket/date-range/date-range-aggregation-usage.asciidoc +++ /dev/null @@ -1,118 +0,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/DateRange/DateRangeAggregationUsageTests.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! -//// - -[[date-range-aggregation-usage]] -=== Date Range Aggregation Usage - -A range aggregation that is dedicated for date values. The main difference between this aggregation and the normal range aggregation is that the `from` -and `to` values can be expressed in `DateMath` expressions, and it is also possible to specify a date format by which the from and -to response fields will be returned. - -IMPORTANT: this aggregation includes the `from` value and excludes the `to` value for each range. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-daterange-aggregation.html[Date Range Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateRange("projects_date_ranges", date => date - .Field(p => p.StartedOn) - .Ranges( - r => r.From(DateMath.Anchored(FixedDate).Add("2d")).To(DateMath.Now), - r => r.To(DateMath.Now.Add(TimeSpan.FromDays(1)).Subtract("30m").RoundTo(DateMathTimeUnit.Hour)), - r => r.From(DateMath.Anchored("2012-05-05").Add(TimeSpan.FromDays(1)).Subtract("1m")) - ) - .TimeZone("CET") - .Aggregations(childAggs => childAggs - .Terms("project_tags", avg => avg.Field(p => p.Tags)) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateRangeAggregation("projects_date_ranges") -{ - Field = Field(p => p.StartedOn), - Ranges = new List - { - new DateRangeExpression { From = DateMath.Anchored(FixedDate).Add("2d"), To = DateMath.Now }, - new DateRangeExpression { To = DateMath.Now.Add(TimeSpan.FromDays(1)).Subtract("30m").RoundTo(DateMathTimeUnit.Hour) }, - new DateRangeExpression { From = DateMath.Anchored("2012-05-05").Add(TimeSpan.FromDays(1)).Subtract("1m") } - }, - TimeZone = "CET", - Aggregations = - new TermsAggregation("project_tags") { Field = Field(p => p.Tags) } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_date_ranges": { - "date_range": { - "field": "startedOn", - "ranges": [ - { - "to": "now", - "from": "2015-06-06T12:01:02.123||+2d" - }, - { - "to": "now+1d-30m/h" - }, - { - "from": "2012-05-05||+1d-1m" - } - ], - "time_zone": "CET" - }, - "aggs": { - "project_tags": { - "terms": { - "field": "tags" - } - } - } - } -} ----- - -==== Handling Responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var dateHistogram = response.Aggregations.DateRange("projects_date_ranges"); -dateHistogram.Should().NotBeNull(); -dateHistogram.Buckets.Should().NotBeNull(); ----- - -We specified three ranges so we expect to have three of them in the response - -[source,csharp] ----- -dateHistogram.Buckets.Count.Should().Be(3); -foreach (var item in dateHistogram.Buckets) item.DocCount.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/bucket/diversified-sampler/diversified-sampler-aggregation-usage.asciidoc b/docs/aggregations/bucket/diversified-sampler/diversified-sampler-aggregation-usage.asciidoc deleted file mode 100644 index 767103ce3f3..00000000000 --- a/docs/aggregations/bucket/diversified-sampler/diversified-sampler-aggregation-usage.asciidoc +++ /dev/null @@ -1,74 +0,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/DiversifiedSampler/DiversifiedSamplerAggregationUsageTests.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! -//// - -[[diversified-sampler-aggregation-usage]] -=== Diversified Sampler Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DiversifiedSampler("diversified_sample", sm => sm - .ExecutionHint(DiversifiedSamplerAggregationExecutionHint.GlobalOrdinals) - .Field(doc => doc.Type) - .MaxDocsPerValue(10) - .ShardSize(200) - .Aggregations(aa => aa - .SignificantTerms("significant_names", st => st - .Field(p => p.Name) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DiversifiedSamplerAggregation("diversified_sample") -{ - ExecutionHint = DiversifiedSamplerAggregationExecutionHint.GlobalOrdinals, - Field = new Field("type"), - MaxDocsPerValue = 10, - ShardSize = 200, - Aggregations = new SignificantTermsAggregation("significant_names") - { - Field = "name" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "diversified_sample": { - "diversified_sampler": { - "execution_hint": "global_ordinals", - "field": "type", - "max_docs_per_value": 10, - "shard_size": 200 - }, - "aggs": { - "significant_names": { - "significant_terms": { - "field": "name" - } - } - } - } -} ----- - diff --git a/docs/aggregations/bucket/filter/filter-aggregation-usage.asciidoc b/docs/aggregations/bucket/filter/filter-aggregation-usage.asciidoc deleted file mode 100644 index f223656a99d..00000000000 --- a/docs/aggregations/bucket/filter/filter-aggregation-usage.asciidoc +++ /dev/null @@ -1,138 +0,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/Filter/FilterAggregationUsageTests.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! -//// - -[[filter-aggregation-usage]] -=== Filter Aggregation Usage - -Defines a single bucket of all the documents in the current document set context that match a specified filter. -Often this will be used to narrow down the current aggregation context to a specific set of documents. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-filter-aggregation.html[Filter Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filter("bethels_projects", date => date - .Filter(q => q.Term(p => p.LeadDeveloper.FirstName, FirstNameToFind)) - .Aggregations(childAggs => childAggs - .Terms("project_tags", avg => avg.Field(p => p.CuratedTags.First().Name.Suffix("keyword"))) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FilterAggregation("bethels_projects") -{ - Filter = new TermQuery { Field = Field(p => p.LeadDeveloper.FirstName), Value = FirstNameToFind }, - Aggregations = - new TermsAggregation("project_tags") { Field = Field(p => p.CuratedTags.First().Name.Suffix("keyword")) } -} ----- - -[source,javascript] -.Example json output ----- -{ - "bethels_projects": { - "filter": { - "term": { - "leadDeveloper.firstName": { - "value": "pierce" - } - } - }, - "aggs": { - "project_tags": { - "terms": { - "field": "curatedTags.name.keyword" - } - } - } - } -} ----- - -==== Handling Responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var filterAgg = response.Aggregations.Filter("bethels_projects"); -filterAgg.Should().NotBeNull(); -filterAgg.DocCount.Should().BeGreaterThan(0); -var tags = filterAgg.Terms("project_tags"); -tags.Should().NotBeNull(); -tags.Buckets.Should().NotBeEmpty(); ----- - -[float] -=== Empty Filter - -When the collection of filters is empty or all are conditionless, NEST will serialize them -to an empty object. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filter("empty_filter", date => date - .Filter(f => f - .Bool(b => b - .Filter(new QueryContainer[0]) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FilterAggregation("empty_filter") -{ - Filter = new BoolQuery - { - Filter = new List() - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "empty_filter": { - "filter": {} - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldNotBeValid() ----- - diff --git a/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc b/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc deleted file mode 100644 index 470faecce0d..00000000000 --- a/docs/aggregations/bucket/filters/filters-aggregation-usage.asciidoc +++ /dev/null @@ -1,239 +0,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/Filters/FiltersAggregationUsageTests.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! -//// - -[[filters-aggregation-usage]] -=== Filters Aggregation Usage - -Defines a multi bucket aggregations where each bucket is associated with a filter. -Each bucket will collect all documents that match its associated filter. For documents -that do not match any filter, these will be collected in the _other bucket_. - -Be sure to read the Elasticsearch documentation {ref_current}/search-aggregations-bucket-filters-aggregation.html[Filters Aggregation] - -[float] -=== Named filters - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filters("projects_by_state", agg => agg - .OtherBucket() - .OtherBucketKey("other_states_of_being") - .NamedFilters(filters => filters - .Filter("belly_up", f => f.Term(p => p.State, StateOfBeing.BellyUp)) - .Filter("stable", f => f.Term(p => p.State, StateOfBeing.Stable)) - .Filter("very_active", f => f.Term(p => p.State, StateOfBeing.VeryActive)) - ) - .Aggregations(childAggs => childAggs - .Terms("project_tags", avg => avg.Field(p => p.CuratedTags.First().Name.Suffix("keyword"))) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FiltersAggregation("projects_by_state") -{ - OtherBucket = true, - OtherBucketKey = "other_states_of_being", - Filters = new NamedFiltersContainer - { - { "belly_up", Query.Term(p => p.State, StateOfBeing.BellyUp) }, - { "stable", Query.Term(p => p.State, StateOfBeing.Stable) }, - { "very_active", Query.Term(p => p.State, StateOfBeing.VeryActive) } - }, - Aggregations = - new TermsAggregation("project_tags") { Field = Field(p => p.CuratedTags.First().Name.Suffix("keyword")) } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_by_state": { - "filters": { - "other_bucket": true, - "other_bucket_key": "other_states_of_being", - "filters": { - "belly_up": { - "term": { - "state": { - "value": "BellyUp" - } - } - }, - "stable": { - "term": { - "state": { - "value": "Stable" - } - } - }, - "very_active": { - "term": { - "state": { - "value": "VeryActive" - } - } - } - } - }, - "aggs": { - "project_tags": { - "terms": { - "field": "curatedTags.name.keyword" - } - } - } - } -} ----- - -==== Handling Responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var filterAgg = response.Aggregations.Filters("projects_by_state"); -filterAgg.Should().NotBeNull(); - -var namedResult = filterAgg.NamedBucket("belly_up"); -namedResult.Should().NotBeNull(); -namedResult.DocCount.Should().BeGreaterThan(0); - -namedResult = filterAgg.NamedBucket("stable"); -namedResult.Should().NotBeNull(); -namedResult.DocCount.Should().BeGreaterThan(0); - -namedResult = filterAgg.NamedBucket("very_active"); -namedResult.Should().NotBeNull(); -namedResult.DocCount.Should().BeGreaterThan(0); - -namedResult = filterAgg.NamedBucket("other_states_of_being"); -namedResult.Should().NotBeNull(); -namedResult.DocCount.Should().Be(0); ----- - -[float] -=== Anonymous filters - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Filters("projects_by_state", agg => agg - .OtherBucket() - .AnonymousFilters( - f => f.Term(p => p.State, StateOfBeing.BellyUp), - f => f.Term(p => p.State, StateOfBeing.Stable), - f => f.Term(p => p.State, StateOfBeing.VeryActive) - ) - .Aggregations(childAggs => childAggs - .Terms("project_tags", avg => avg.Field(p => p.CuratedTags.First().Name.Suffix("keyword"))) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FiltersAggregation("projects_by_state") -{ - OtherBucket = true, - Filters = new List - { - Query.Term(p => p.State, StateOfBeing.BellyUp), - Query.Term(p => p.State, StateOfBeing.Stable), - Query.Term(p => p.State, StateOfBeing.VeryActive) - }, - Aggregations = - new TermsAggregation("project_tags") { Field = Field(p => p.CuratedTags.First().Name.Suffix("keyword")) } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_by_state": { - "filters": { - "other_bucket": true, - "filters": [ - { - "term": { - "state": { - "value": "BellyUp" - } - } - }, - { - "term": { - "state": { - "value": "Stable" - } - } - }, - { - "term": { - "state": { - "value": "VeryActive" - } - } - } - ] - }, - "aggs": { - "project_tags": { - "terms": { - "field": "curatedTags.name.keyword" - } - } - } - } -} ----- - -==== Handling Responses - -The `AggregateDictionary found on `.Aggregations` on `SearchResponse` has several helper methods -so we can fetch our aggregation results easily in the correct type. -<> - -[source,csharp] ----- -response.ShouldBeValid(); - -var filterAgg = response.Aggregations.Filters("projects_by_state"); -filterAgg.Should().NotBeNull(); -var results = filterAgg.AnonymousBuckets(); -results.Count.Should().Be(4); - -foreach (var singleBucket in results.Take(3)) singleBucket.DocCount.Should().BeGreaterThan(0); - -results.Last().DocCount.Should().Be(0); <1> ----- -<1> The last bucket is the _other bucket_ - diff --git a/docs/aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciidoc b/docs/aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciidoc deleted file mode 100644 index c47f0eff6f2..00000000000 --- a/docs/aggregations/bucket/geo-distance/geo-distance-aggregation-usage.asciidoc +++ /dev/null @@ -1,90 +0,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/GeoDistance/GeoDistanceAggregationUsageTests.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-distance-aggregation-usage]] -=== Geo Distance Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoDistance("rings_around_amsterdam", g => g - .Field(p => p.LocationPoint) - .Origin(52.376, 4.894) - .Ranges( - r => r.To(100), - r => r.From(100).To(300), - r => r.From(300) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoDistanceAggregation("rings_around_amsterdam") -{ - Field = Field((Project p) => p.LocationPoint), - Origin = "52.376, 4.894", - Ranges = new List - { - new AggregationRange { To = 100 }, - new AggregationRange { From = 100, To = 300 }, - new AggregationRange { From = 300 } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "rings_around_amsterdam": { - "geo_distance": { - "field": "locationPoint", - "origin": { - "lat": 52.376, - "lon": 4.894 - }, - "ranges": [ - { - "to": 100.0 - }, - { - "from": 100.0, - "to": 300.0 - }, - { - "from": 300.0 - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var ringsAroundAmsterdam = response.Aggregations.GeoDistance("rings_around_amsterdam"); -ringsAroundAmsterdam.Should().NotBeNull(); -ringsAroundAmsterdam.Buckets.FirstOrDefault(r => r.Key == "*-100.0").Should().NotBeNull(); -ringsAroundAmsterdam.Buckets.FirstOrDefault(r => r.Key == "100.0-300.0").Should().NotBeNull(); -ringsAroundAmsterdam.Buckets.FirstOrDefault(r => r.Key == "300.0-*").Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc b/docs/aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc deleted file mode 100644 index e879d5c3fa7..00000000000 --- a/docs/aggregations/bucket/geo-hash-grid/geo-hash-grid-aggregation-usage.asciidoc +++ /dev/null @@ -1,127 +0,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/GeoHashGrid/GeoHashGridAggregationUsageTests.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-hash-grid-aggregation-usage]] -=== Geo Hash Grid Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoHash("my_geohash_grid", g => g - .Field(p => p.LocationPoint) - .GeoHashPrecision(GeoHashPrecision.Precision3) - .Size(1000) - .ShardSize(100) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoHashGridAggregation("my_geohash_grid") -{ - Field = Field(p => p.LocationPoint), - Precision = GeoHashPrecision.Precision3, - Size = 1000, - ShardSize = 100 -} ----- - -[source,javascript] -.Example json output ----- -{ - "my_geohash_grid": { - "geohash_grid": { - "field": "locationPoint", - "precision": 3, - "size": 1000, - "shard_size": 100 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var myGeoHashGrid = response.Aggregations.GeoHash("my_geohash_grid"); -myGeoHashGrid.Should().NotBeNull(); ----- - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoHash("my_geohash_grid", g => g - .Field(p => p.LocationPoint) - .Bounds(b => b - .TopLeft(90,-180) - .BottomRight(-90, 180) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoHashGridAggregation("my_geohash_grid") -{ - Field = Field(p => p.LocationPoint), - Bounds = new BoundingBox - { - TopLeft = new GeoLocation(90, -180), - BottomRight = new GeoLocation(-90, 180) - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "my_geohash_grid": { - "geohash_grid": { - "field": "locationPoint", - "bounds": { - "top_left": { - "lat": 90.0, - "lon": -180.0 - }, - "bottom_right": { - "lat": -90.0, - "lon": 180.0 - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var myGeoHashGrid = response.Aggregations.GeoHash("my_geohash_grid"); -myGeoHashGrid.Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/geo-tile-grid/geo-tile-grid-aggregation-usage.asciidoc b/docs/aggregations/bucket/geo-tile-grid/geo-tile-grid-aggregation-usage.asciidoc deleted file mode 100644 index c513a1b4f8e..00000000000 --- a/docs/aggregations/bucket/geo-tile-grid/geo-tile-grid-aggregation-usage.asciidoc +++ /dev/null @@ -1,70 +0,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/GeoTileGrid/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 myGeoTileGrid = response.Aggregations.GeoTile("my_geotile"); -myGeoTileGrid.Should().NotBeNull(); -var firstBucket = myGeoTileGrid.Buckets.First(); -firstBucket.Key.Should().NotBeNullOrWhiteSpace(); -firstBucket.DocCount.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/bucket/global/global-aggregation-usage.asciidoc b/docs/aggregations/bucket/global/global-aggregation-usage.asciidoc deleted file mode 100644 index 3df778f4818..00000000000 --- a/docs/aggregations/bucket/global/global-aggregation-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/Global/GlobalAggregationUsageTests.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! -//// - -[[global-aggregation-usage]] -=== Global Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Global("all_projects", g => g - .Aggregations(aa => aa - .Terms("names", t => t - .Field(p => p.Name) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GlobalAggregation("all_projects") -{ - Aggregations = new TermsAggregation("names") - { - Field = Field(p => p.Name) - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "all_projects": { - "global": {}, - "aggs": { - "names": { - "terms": { - "field": "name" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var allProjects = response.Aggregations.Global("all_projects"); -allProjects.Should().NotBeNull(); -var names = allProjects.Terms("names"); -names.Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc b/docs/aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc deleted file mode 100644 index dc79bb16290..00000000000 --- a/docs/aggregations/bucket/histogram/histogram-aggregation-usage.asciidoc +++ /dev/null @@ -1,76 +0,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/Histogram/HistogramAggregationUsageTests.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! -//// - -[[histogram-aggregation-usage]] -=== Histogram Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Histogram("commits", h => h - .Field(p => p.NumberOfCommits) - .Interval(100) - .MinimumDocumentCount(1) - .Order(HistogramOrder.KeyDescending) - .Offset(1.1) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new HistogramAggregation("commits") -{ - Field = Field(p => p.NumberOfCommits), - Interval = 100, - MinimumDocumentCount = 1, - Order = HistogramOrder.KeyDescending, - Offset = 1.1 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits": { - "histogram": { - "field": "numberOfCommits", - "interval": 100.0, - "min_doc_count": 1, - "order": { - "_key": "desc" - }, - "offset": 1.1 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commits = response.Aggregations.Histogram("commits"); -commits.Should().NotBeNull(); -commits.Buckets.Should().NotBeNull(); -commits.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in commits.Buckets) - item.DocCount.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/bucket/ip-range/ip-range-aggregation-usage.asciidoc b/docs/aggregations/bucket/ip-range/ip-range-aggregation-usage.asciidoc deleted file mode 100644 index bf6cc6f00d1..00000000000 --- a/docs/aggregations/bucket/ip-range/ip-range-aggregation-usage.asciidoc +++ /dev/null @@ -1,84 +0,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/IpRange/IpRangeAggregationUsageTests.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! -//// - -[[ip-range-aggregation-usage]] -=== Ip Range Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.IpRange("ip_ranges", ip => ip - .Field(p => p.LeadDeveloper.IpAddress) - .Ranges( - r => r.To("127.0.0.1"), - r => r.From("127.0.0.1") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new IpRangeAggregation("ip_ranges") -{ - Field = Field((Project p) => p.LeadDeveloper.IpAddress), - Ranges = new List - { - new IpRangeAggregationRange { To = "127.0.0.1" }, - new IpRangeAggregationRange { From = "127.0.0.1" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "ip_ranges": { - "ip_range": { - "field": "leadDeveloper.ipAddress", - "ranges": [ - { - "to": "127.0.0.1" - }, - { - "from": "127.0.0.1" - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var ipRanges = response.Aggregations.IpRange("ip_ranges"); -ipRanges.Should().NotBeNull(); -ipRanges.Buckets.Should().NotBeNull(); -ipRanges.Buckets.Count.Should().Be(2); -ipRanges.Buckets.First().To.Should().Be("127.0.0.1"); -ipRanges.Buckets.Last().From.Should().Be("127.0.0.1"); -foreach (var range in ipRanges.Buckets) -{ - range.Key.Should().NotBeNullOrEmpty(); - range.DocCount.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/missing/missing-aggregation-usage.asciidoc b/docs/aggregations/bucket/missing/missing-aggregation-usage.asciidoc deleted file mode 100644 index a5df75847f1..00000000000 --- a/docs/aggregations/bucket/missing/missing-aggregation-usage.asciidoc +++ /dev/null @@ -1,58 +0,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/Missing/MissingAggregationUsageTests.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! -//// - -[[missing-aggregation-usage]] -=== Missing Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Missing("projects_without_a_description", m => m - .Field(p => p.Description.Suffix("keyword")) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MissingAggregation("projects_without_a_description") -{ - Field = Field(p => p.Description.Suffix("keyword")) -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_without_a_description": { - "missing": { - "field": "description.keyword" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var projectsWithoutDesc = response.Aggregations.Missing("projects_without_a_description"); -projectsWithoutDesc.Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/multi-terms/multi-terms-aggregation-usage.asciidoc b/docs/aggregations/bucket/multi-terms/multi-terms-aggregation-usage.asciidoc deleted file mode 100644 index fb3d747cbbf..00000000000 --- a/docs/aggregations/bucket/multi-terms/multi-terms-aggregation-usage.asciidoc +++ /dev/null @@ -1,131 +0,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/MultiTerms/MultiTermsAggregationUsageTests.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! -//// - -[[multi-terms-aggregation-usage]] -=== Multi Terms Aggregation Usage - -A multi-bucket value source based aggregation where buckets are dynamically built - one per unique set of values. - -See the Elasticsearch documentation on {ref_current}//search-aggregations-bucket-multi-terms-aggregation.html[multi terms aggregation] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.MultiTerms("states", st => st - .CollectMode(TermsAggregationCollectMode.BreadthFirst) - .Terms(t => t.Field(f => f.Name), t => t.Field(f => f.NumberOfCommits).Missing(0)) - .MinimumDocumentCount(1) - .Size(5) - .ShardSize(100) - .ShardMinimumDocumentCount(1) - .ShowTermDocCountError(true) - .Order(o => o - .KeyAscending() - .CountDescending() - ) - .Meta(m => m - .Add("foo", "bar") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MultiTermsAggregation("states") -{ - CollectMode = TermsAggregationCollectMode.BreadthFirst, - Terms = new List - { - new() {Field = Field(f => f.Name) }, - new() {Field = Field(f => f.NumberOfCommits), Missing = 0 } - }, - MinimumDocumentCount = 1, - Size = 5, - ShardSize = 100, - ShardMinimumDocumentCount = 1, - ShowTermDocCountError = true, - Order = new List - { - TermsOrder.KeyAscending, - TermsOrder.CountDescending - }, - Meta = new Dictionary - { - { "foo", "bar" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "states": { - "meta": { - "foo": "bar" - }, - "multi_terms": { - "collect_mode": "breadth_first", - "terms": [ - { - "field": "name" - }, - { - "field": "numberOfCommits", - "missing": 0 - } - ], - "min_doc_count": 1, - "shard_min_doc_count": 1, - "size": 5, - "shard_size": 100, - "show_term_doc_count_error": true, - "order": [ - { - "_key": "asc" - }, - { - "_count": "desc" - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var states = response.Aggregations.MultiTerms("states"); -states.Should().NotBeNull(); -states.DocCountErrorUpperBound.Should().HaveValue(); -states.SumOtherDocCount.Should().HaveValue(); -states.Buckets.Should().NotBeNull(); -states.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in states.Buckets) -{ - item.Key.Should().NotBeNullOrEmpty(); - item.DocCount.Should().BeGreaterOrEqualTo(1); - item.KeyAsString.Should().NotBeNullOrEmpty(); -} -states.Meta.Should().NotBeNull().And.HaveCount(1); -states.Meta["foo"].Should().Be("bar"); ----- - diff --git a/docs/aggregations/bucket/nested/nested-aggregation-usage.asciidoc b/docs/aggregations/bucket/nested/nested-aggregation-usage.asciidoc deleted file mode 100644 index 6a4771ab95f..00000000000 --- a/docs/aggregations/bucket/nested/nested-aggregation-usage.asciidoc +++ /dev/null @@ -1,81 +0,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/Nested/NestedAggregationUsageTests.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! -//// - -[[nested-aggregation-usage]] -=== Nested Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Nested("tags", n => n - .Path(p => p.Tags) - .Aggregations(aa => aa - .Terms("tag_names", t => t - .Field(p => p.Tags.Suffix("name")) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new NestedAggregation("tags") -{ - Path = "tags", - Aggregations = new TermsAggregation("tag_names") - { - Field = "tags.name" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tag_names": { - "terms": { - "field": "tags.name" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var tags = response.Aggregations.Nested("tags"); -tags.Should().NotBeNull(); -var tagNames = tags.Terms("tag_names"); -tagNames.Should().NotBeNull(); -foreach (var item in tagNames.Buckets) -{ - item.Key.Should().NotBeNullOrEmpty(); - item.DocCount.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/parent/parent-aggregation-usage.asciidoc b/docs/aggregations/bucket/parent/parent-aggregation-usage.asciidoc deleted file mode 100644 index fb6fab39d43..00000000000 --- a/docs/aggregations/bucket/parent/parent-aggregation-usage.asciidoc +++ /dev/null @@ -1,97 +0,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/Parent/ParentAggregationUsageTests.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! -//// - -[[parent-aggregation-usage]] -=== Parent Aggregation Usage - -A special single bucket aggregation that selects parent documents that have the specified type, as defined in a `join` field. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-parent-aggregation.html[Parent Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Parent("name_of_parent_agg", parent => parent <1> - .Aggregations(parentAggs => parentAggs - .Average("average_commits", avg => avg.Field(p => p.NumberOfCommits)) - .Max("max_commits", avg => avg.Field(p => p.NumberOfCommits)) - .Min("min_commits", avg => avg.Field(p => p.NumberOfCommits)) - ) -) ----- -<1> sub-aggregations are on the type determined from the generic type parameter. In this example, the search is against `CommitActivity` type and `Project` is a parent of `CommitActivity` - -==== Object Initializer syntax example - -[source,csharp] ----- -new ParentAggregation("name_of_parent_agg", typeof(CommitActivity)) <1> -{ - Aggregations = - new AverageAggregation("average_commits", Field(f => f.NumberOfCommits)) <2> - && new MaxAggregation("max_commits", Field(f => f.NumberOfCommits)) - && new MinAggregation("min_commits", Field(f => f.NumberOfCommits)) -} ----- -<1> `join` field is determined from the _child_ type. In this example, it is `CommitActivity` -<2> sub-aggregations are on the type determined from the `join` field. In this example, a `Project` is a parent of `CommitActivity` - -[source,javascript] -.Example json output ----- -{ - "size": 0, - "aggs": { - "name_of_parent_agg": { - "parent": { - "type": "commits" - }, - "aggs": { - "average_commits": { - "avg": { - "field": "numberOfCommits" - } - }, - "max_commits": { - "max": { - "field": "numberOfCommits" - } - }, - "min_commits": { - "min": { - "field": "numberOfCommits" - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var parentAgg = response.Aggregations.Parent("name_of_parent_agg"); -parentAgg.Should().NotBeNull(); -parentAgg.DocCount.Should().BeGreaterThan(0); -parentAgg.Min("average_commits").Should().NotBeNull(); -parentAgg.Min("min_commits").Should().NotBeNull(); -parentAgg.Max("max_commits").Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/range/range-aggregation-usage.asciidoc b/docs/aggregations/bucket/range/range-aggregation-usage.asciidoc deleted file mode 100644 index 7467fad84e2..00000000000 --- a/docs/aggregations/bucket/range/range-aggregation-usage.asciidoc +++ /dev/null @@ -1,85 +0,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/Range/RangeAggregationUsageTests.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! -//// - -[[range-aggregation-usage]] -=== Range Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Range("commit_ranges", ra => ra - .Field(p => p.NumberOfCommits) - .Ranges( - r => r.To(100), - r => r.From(100).To(500), - r => r.From(500) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RangeAggregation("commit_ranges") -{ - Field = Field(p => p.NumberOfCommits), - Ranges = new List - { - { new AggregationRange { To = 100 } }, - { new AggregationRange { From = 100, To = 500 } }, - { new AggregationRange { From = 500 } } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "commit_ranges": { - "range": { - "field": "numberOfCommits", - "ranges": [ - { - "to": 100.0 - }, - { - "from": 100.0, - "to": 500.0 - }, - { - "from": 500.0 - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitRanges = response.Aggregations.Range("commit_ranges"); -commitRanges.Should().NotBeNull(); -commitRanges.Buckets.Count.Should().Be(3); -commitRanges.Buckets.FirstOrDefault(r => r.Key == "*-100.0").Should().NotBeNull(); -commitRanges.Buckets.FirstOrDefault(r => r.Key == "100.0-500.0").Should().NotBeNull(); -commitRanges.Buckets.FirstOrDefault(r => r.Key == "500.0-*").Should().NotBeNull(); ----- - diff --git a/docs/aggregations/bucket/rare-terms/rare-terms-aggregation-usage.asciidoc b/docs/aggregations/bucket/rare-terms/rare-terms-aggregation-usage.asciidoc deleted file mode 100644 index 419594a1252..00000000000 --- a/docs/aggregations/bucket/rare-terms/rare-terms-aggregation-usage.asciidoc +++ /dev/null @@ -1,92 +0,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/RareTerms/RareTermsAggregationUsageTests.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! -//// - -[[rare-terms-aggregation-usage]] -=== Rare Terms Aggregation Usage - -A multi-bucket value source based aggregation which finds "rare" terms — terms that are at the long-tail of the -distribution and are not frequent. Conceptually, this is like a terms aggregation that is sorted by _count ascending. -As noted in the terms aggregation docs, actually ordering a terms agg by count ascending has unbounded error. -Instead, you should use the rare_terms aggregation. - -NOTE: Valid only in Elasticsearch 7.3.0+ - -See the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-rare-terms-aggregation.html[rare terms aggregation] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.RareTerms("names", st => st - .Field(p => p.Name) - .Missing("n/a") - .MaximumDocumentCount(5) - .Precision(0.001) - .Meta(m => m - .Add("foo", "bar") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RareTermsAggregation("names") -{ - Field = Infer.Field(p => p.Name), - MaximumDocumentCount = 5, - Precision = 0.001, - Missing = "n/a", - Meta = new Dictionary { { "foo", "bar" } } -} ----- - -[source,javascript] -.Example json output ----- -{ - "names": { - "meta": { - "foo": "bar" - }, - "rare_terms": { - "field": "name", - "max_doc_count": 5, - "missing": "n/a", - "precision": 0.001 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var rareTerms = response.Aggregations.RareTerms("names"); -rareTerms.Should().NotBeNull(); -rareTerms.Buckets.Should().NotBeNull(); -rareTerms.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in rareTerms.Buckets) -{ - item.Key.Should().NotBeNullOrEmpty(); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} -rareTerms.Meta.Should().NotBeNull().And.HaveCount(1); -rareTerms.Meta["foo"].Should().Be("bar"); ----- - diff --git a/docs/aggregations/bucket/reverse-nested/reverse-nested-aggregation-usage.asciidoc b/docs/aggregations/bucket/reverse-nested/reverse-nested-aggregation-usage.asciidoc deleted file mode 100644 index 5e6385d5b06..00000000000 --- a/docs/aggregations/bucket/reverse-nested/reverse-nested-aggregation-usage.asciidoc +++ /dev/null @@ -1,118 +0,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/ReverseNested/ReverseNestedAggregationUsageTests.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! -//// - -[[reverse-nested-aggregation-usage]] -=== Reverse Nested Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Nested("tags", n => n - .Path(p => p.Tags) - .Aggregations(aa => aa - .Terms("tag_names", t => t - .Field(p => p.Tags.Suffix("name")) - .Aggregations(aaa => aaa - .ReverseNested("tags_to_project", r => r - .Aggregations(aaaa => aaaa - .Terms("top_projects_per_tag", tt => tt - .Field(p => p.Name) - ) - ) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new NestedAggregation("tags") -{ - Path = "tags", - Aggregations = new TermsAggregation("tag_names") - { - Field = "tags.name", - Aggregations = new ReverseNestedAggregation("tags_to_project") - { - Aggregations = new TermsAggregation("top_projects_per_tag") - { - Field = Field(p => p.Name) - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "tags": { - "nested": { - "path": "tags" - }, - "aggs": { - "tag_names": { - "terms": { - "field": "tags.name" - }, - "aggs": { - "tags_to_project": { - "reverse_nested": {}, - "aggs": { - "top_projects_per_tag": { - "terms": { - "field": "name" - } - } - } - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var tags = response.Aggregations.Nested("tags"); -tags.Should().NotBeNull(); -var tagNames = tags.Terms("tag_names"); -tagNames.Should().NotBeNull(); -foreach (var tagName in tagNames.Buckets) -{ - tagName.Key.Should().NotBeNullOrEmpty(); - tagName.DocCount.Should().BeGreaterThan(0); - var tagsToProjects = tagName.ReverseNested("tags_to_project"); - tagsToProjects.Should().NotBeNull(); - var topProjectsPerTag = tagsToProjects.Terms("top_projects_per_tag"); - topProjectsPerTag.Should().NotBeNull(); - foreach (var topProject in topProjectsPerTag.Buckets) - { - topProject.Key.Should().NotBeNullOrEmpty(); - topProject.DocCount.Should().BeGreaterThan(0); - } -} ----- - diff --git a/docs/aggregations/bucket/sampler/sampler-aggregation-usage.asciidoc b/docs/aggregations/bucket/sampler/sampler-aggregation-usage.asciidoc deleted file mode 100644 index 5028844f8a6..00000000000 --- a/docs/aggregations/bucket/sampler/sampler-aggregation-usage.asciidoc +++ /dev/null @@ -1,80 +0,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/Sampler/SamplerAggregationUsageTests.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! -//// - -[[sampler-aggregation-usage]] -=== Sampler Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Sampler("sample", sm => sm - .ShardSize(200) - .Aggregations(aa => aa - .SignificantTerms("significant_names", st => st - .Field(p => p.Name) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SamplerAggregation("sample") -{ - ShardSize = 200, - Aggregations = new SignificantTermsAggregation("significant_names") - { - Field = "name" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "sample": { - "sampler": { - "shard_size": 200 - }, - "aggs": { - "significant_names": { - "significant_terms": { - "field": "name" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var sample = response.Aggregations.Sampler("sample"); -sample.Should().NotBeNull(); -var sigTags = sample.SignificantTerms("significant_names"); -sigTags.Should().NotBeNull(); -sigTags.DocCount.Should().BeGreaterThan(0); -if (TestConfiguration.Instance.InRange(">=5.5.0")) - sigTags.BgCount.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/bucket/significant-terms/significant-terms-aggregation-usage.asciidoc b/docs/aggregations/bucket/significant-terms/significant-terms-aggregation-usage.asciidoc deleted file mode 100644 index ec84cbaf470..00000000000 --- a/docs/aggregations/bucket/significant-terms/significant-terms-aggregation-usage.asciidoc +++ /dev/null @@ -1,277 +0,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/SignificantTerms/SignificantTermsAggregationUsageTests.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! -//// - -[[significant-terms-aggregation-usage]] -=== Significant Terms Aggregation Usage - -An aggregation that returns interesting or unusual occurrences of terms in a set. - -[WARNING] --- -The significant_terms aggregation can be very heavy when run on large indices. Work is in progress -to provide more lightweight sampling techniques. -As a result, the API for this feature may change in non-backwards compatible ways - --- - -See the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-significantterms-aggregation.html[significant terms aggregation] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.SignificantTerms("significant_names", st => st - .Field(p => p.Name) - .MinimumDocumentCount(10) - .MutualInformation(mi => mi - .BackgroundIsSuperSet() - .IncludeNegatives() - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SignificantTermsAggregation("significant_names") -{ - Field = Field(p => p.Name), - MinimumDocumentCount = 10, - MutualInformation = new MutualInformationHeuristic - { - BackgroundIsSuperSet = true, - IncludeNegatives = true - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "significant_names": { - "significant_terms": { - "field": "name", - "min_doc_count": 10, - "mutual_information": { - "background_is_superset": true, - "include_negatives": true - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var sigNames = response.Aggregations.SignificantTerms("significant_names"); -sigNames.Should().NotBeNull(); -sigNames.DocCount.Should().BeGreaterThan(0); ----- - -[[significant-terms-pattern-filter]] -[float] -== Filtering with a regular expression pattern - -Using significant terms aggregation with filtering to include values using a regular expression pattern - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.SignificantTerms("significant_names", st => st - .Field(p => p.Name) - .MinimumDocumentCount(10) - .MutualInformation(mi => mi - .BackgroundIsSuperSet() - .IncludeNegatives() - ) - .Include("pi*") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SignificantTermsAggregation("significant_names") -{ - Field = Field(p => p.Name), - MinimumDocumentCount = 10, - MutualInformation = new MutualInformationHeuristic - { - BackgroundIsSuperSet = true, - IncludeNegatives = true - }, - Include = new IncludeExclude("pi*") -} ----- - -[source,javascript] -.Example json output ----- -{ - "significant_names": { - "significant_terms": { - "field": "name", - "min_doc_count": 10, - "mutual_information": { - "background_is_superset": true, - "include_negatives": true - }, - "include": "pi*" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var sigNames = response.Aggregations.SignificantTerms("significant_names"); -sigNames.Should().NotBeNull(); -sigNames.DocCount.Should().BeGreaterThan(0); ----- - -[[significant-terms-exact-value-filter]] -[float] -== Filtering with exact values - -Using significant terms aggregation with filtering to exclude specific values - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.SignificantTerms("significant_names", st => st - .Field(p => p.Name) - .MinimumDocumentCount(10) - .MutualInformation(mi => mi - .BackgroundIsSuperSet() - .IncludeNegatives() - ) - .Exclude(new[] { "pierce" }) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SignificantTermsAggregation("significant_names") -{ - Field = Field(p => p.Name), - MinimumDocumentCount = 10, - MutualInformation = new MutualInformationHeuristic - { - BackgroundIsSuperSet = true, - IncludeNegatives = true - }, - Exclude = new IncludeExclude(new[] { "pierce" }) -} ----- - -[source,javascript] -.Example json output ----- -{ - "significant_names": { - "significant_terms": { - "field": "name", - "min_doc_count": 10, - "mutual_information": { - "background_is_superset": true, - "include_negatives": true - }, - "exclude": [ - "pierce" - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var sigNames = response.Aggregations.SignificantTerms("significant_names"); -sigNames.Should().NotBeNull(); -sigNames.DocCount.Should().BeGreaterThan(0); ----- - -[[significant-terms-numeric-field]] -[float] -== Numeric fields - -A significant terms aggregation on a numeric field - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.SignificantTerms("commits", st => st - .Field(p => p.NumberOfContributors) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SignificantTermsAggregation("commits") -{ - Field = Field(p => p.NumberOfContributors) -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits": { - "significant_terms": { - "field": "numberOfContributors" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commits = response.Aggregations.SignificantTerms("commits"); -commits.Should().NotBeNull(); -commits.Buckets.Should().NotBeNull(); -commits.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in commits.Buckets) -{ - item.Key.Should().BeGreaterThan(0); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} ----- - diff --git a/docs/aggregations/bucket/significant-text/significant-text-aggregation-usage.asciidoc b/docs/aggregations/bucket/significant-text/significant-text-aggregation-usage.asciidoc deleted file mode 100644 index 07fac154cd8..00000000000 --- a/docs/aggregations/bucket/significant-text/significant-text-aggregation-usage.asciidoc +++ /dev/null @@ -1,91 +0,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/SignificantText/SignificantTextAggregationUsageTests.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! -//// - -[[significant-text-aggregation-usage]] -=== Significant Text Aggregation Usage - -An aggregation that returns interesting or unusual occurrences of free-text -terms in a set. It is like the significant terms aggregation but differs in that: - -* It is specifically designed for use on type `text` fields - -* It does not require field data or doc-values - -* It re-analyzes text content on-the-fly meaning it can also filter duplicate sections of noisy text that otherwise tend to skew statistics. - -[WARNING] --- -Re-analyzing large result sets will require a lot of time and memory. -It is recommended that the significant_text aggregation is used -as a child of either the sampler or diversified sampler aggregation to -limit the analysis to a small selection of top-matching documents -e.g. 200. This will typically improve speed, memory use and quality -of results. - --- - -See the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-significanttext-aggregation.html[significant text aggregation] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.SignificantText("significant_descriptions", st => st - .Field(p => p.Description) - .FilterDuplicateText() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SignificantTextAggregation("significant_descriptions") -{ - Field = Infer.Field(p => p.Description), - FilterDuplicateText = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "significant_descriptions": { - "significant_text": { - "field": "description", - "filter_duplicate_text": true - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var sigNames = response.Aggregations.SignificantText("significant_descriptions"); -sigNames.Should().NotBeNull(); -sigNames.DocCount.Should().BeGreaterThan(0); -foreach (var bucket in sigNames.Buckets) -{ - bucket.Key.Should().NotBeNullOrEmpty(); - bucket.BgCount.Should().BeGreaterThan(0); - bucket.DocCount.Should().BeGreaterThan(0); - bucket.Score.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/bucket/terms/terms-aggregation-usage.asciidoc b/docs/aggregations/bucket/terms/terms-aggregation-usage.asciidoc deleted file mode 100644 index a4e01dd3379..00000000000 --- a/docs/aggregations/bucket/terms/terms-aggregation-usage.asciidoc +++ /dev/null @@ -1,570 +0,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/Terms/TermsAggregationUsageTests.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! -//// - -[[terms-aggregation-usage]] -=== Terms Aggregation Usage - -A multi-bucket value source based aggregation where buckets are dynamically built - one per unique value. - -See the Elasticsearch documentation on {ref_current}/search-aggregations-bucket-terms-aggregation.html[terms aggregation] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("states", st => st - .Field(p => p.State) - .MinimumDocumentCount(2) - .Size(5) - .ShardSize(100) - .ExecutionHint(TermsAggregationExecutionHint.Map) - .Missing("n/a") - .Script(ss => ss.Source("'State of Being: '+_value")) - .Order(o => o - .KeyAscending() - .CountDescending() - ) - .Meta(m => m - .Add("foo", "bar") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("states") -{ - Field = Field(p => p.State), - MinimumDocumentCount = 2, - Size = 5, - ShardSize = 100, - ExecutionHint = TermsAggregationExecutionHint.Map, - Missing = "n/a", - Script = new InlineScript("'State of Being: '+_value"), - Order = new List - { - TermsOrder.KeyAscending, - TermsOrder.CountDescending - }, - Meta = new Dictionary - { - { "foo", "bar" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "states": { - "meta": { - "foo": "bar" - }, - "terms": { - "field": "state", - "min_doc_count": 2, - "size": 5, - "shard_size": 100, - "execution_hint": "map", - "missing": "n/a", - "script": { - "source": "'State of Being: '+_value" - }, - "order": [ - { - "_key": "asc" - }, - { - "_count": "desc" - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var states = response.Aggregations.Terms("states"); -states.Should().NotBeNull(); -states.DocCountErrorUpperBound.Should().HaveValue(); -states.SumOtherDocCount.Should().HaveValue(); -states.Buckets.Should().NotBeNull(); -states.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in states.Buckets) -{ - item.Key.Should().NotBeNullOrEmpty(); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} -states.Meta.Should().NotBeNull().And.HaveCount(1); -states.Meta["foo"].Should().Be("bar"); ----- - -[[terms-pattern-filter]] -[float] -== Filtering with a regular expression pattern - -Using terms aggregation with filtering to include values using a regular expression pattern - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("states", st => st - .Field(p => p.State.Suffix("keyword")) - .MinimumDocumentCount(2) - .Size(5) - .ShardSize(100) - .ExecutionHint(TermsAggregationExecutionHint.Map) - .Missing("n/a") - .Include("(Stable|VeryActive)") - .Order(o => o - .KeyAscending() - .CountDescending() - ) - .Meta(m => m - .Add("foo", "bar") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("states") -{ - Field = Field(p => p.State.Suffix("keyword")), - MinimumDocumentCount = 2, - Size = 5, - ShardSize = 100, - ExecutionHint = TermsAggregationExecutionHint.Map, - Missing = "n/a", - Include = new TermsInclude("(Stable|VeryActive)"), - Order = new List - { - TermsOrder.KeyAscending, - TermsOrder.CountDescending - }, - Meta = new Dictionary - { - { "foo", "bar" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "states": { - "meta": { - "foo": "bar" - }, - "terms": { - "field": "state.keyword", - "min_doc_count": 2, - "size": 5, - "shard_size": 100, - "execution_hint": "map", - "missing": "n/a", - "include": "(Stable|VeryActive)", - "order": [ - { - "_key": "asc" - }, - { - "_count": "desc" - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var states = response.Aggregations.Terms("states"); -states.Should().NotBeNull(); -states.DocCountErrorUpperBound.Should().HaveValue(); -states.SumOtherDocCount.Should().HaveValue(); -states.Buckets.Should().NotBeNull(); -states.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in states.Buckets) -{ - item.Key.Should().BeOfType(); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} -states.Meta.Should().NotBeNull().And.HaveCount(1); -states.Meta["foo"].Should().Be("bar"); ----- - -[[terms-exact-value-filter]] -[float] -== Filtering with exact values - -Using terms aggregation with filtering to include only specific values - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("states", st => st - .Field(p => p.State.Suffix("keyword")) - .MinimumDocumentCount(2) - .Size(5) - .ShardSize(100) - .ExecutionHint(TermsAggregationExecutionHint.Map) - .Missing("n/a") - .Include(new[] { StateOfBeing.Stable.ToString(), StateOfBeing.VeryActive.ToString() }) - .Order(o => o - .KeyAscending() - .CountDescending() - ) - .Meta(m => m - .Add("foo", "bar") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("states") -{ - Field = Field(p => p.State.Suffix("keyword")), - MinimumDocumentCount = 2, - Size = 5, - ShardSize = 100, - ExecutionHint = TermsAggregationExecutionHint.Map, - Missing = "n/a", - Include = new TermsInclude(new[] { StateOfBeing.Stable.ToString(), StateOfBeing.VeryActive.ToString() }), - Order = new List - { - TermsOrder.KeyAscending, - TermsOrder.CountDescending - }, - Meta = new Dictionary - { - { "foo", "bar" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "states": { - "meta": { - "foo": "bar" - }, - "terms": { - "field": "state.keyword", - "min_doc_count": 2, - "size": 5, - "shard_size": 100, - "execution_hint": "map", - "missing": "n/a", - "include": [ - "Stable", - "VeryActive" - ], - "order": [ - { - "_key": "asc" - }, - { - "_count": "desc" - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var states = response.Aggregations.Terms("states"); -states.Should().NotBeNull(); -states.DocCountErrorUpperBound.Should().HaveValue(); -states.SumOtherDocCount.Should().HaveValue(); -states.Buckets.Should().NotBeNull(); -states.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in states.Buckets) -{ - item.Key.Should().NotBeNullOrEmpty(); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} -states.Meta.Should().NotBeNull().And.HaveCount(1); -states.Meta["foo"].Should().Be("bar"); ----- - -[float] -== Filtering with partitions - -A terms aggregation that uses partitioning to filter the terms that are returned in the response. Further terms -can be returned by issuing additional requests with an incrementing `partition` number. - -[NOTE] --- -Partitioning is available only in Elasticsearch 5.2.0+ - --- - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("commits", st => st - .Field(p => p.NumberOfCommits) - .Include(0, 10) - .Size(5) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("commits") -{ - Field = Field(p => p.NumberOfCommits), - Include = new TermsInclude(0, 10), - Size = 5 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits": { - "terms": { - "field": "numberOfCommits", - "size": 5, - "include": { - "partition": 0, - "num_partitions": 10 - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commits = response.Aggregations.Terms("commits"); -commits.Should().NotBeNull(); -commits.DocCountErrorUpperBound.Should().HaveValue(); -commits.SumOtherDocCount.Should().HaveValue(); -commits.Buckets.Should().NotBeNull(); -commits.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in commits.Buckets) -{ - item.Key.Should().BeGreaterThan(0); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} ----- - -[float] -== Numeric fields - -A terms aggregation on a numeric field - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("commits", st => st - .Field(p => p.NumberOfCommits) - .Missing(-1) - .ShowTermDocCountError() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("commits") -{ - Field = Field(p => p.NumberOfCommits), - ShowTermDocCountError = true, - Missing = -1 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits": { - "terms": { - "field": "numberOfCommits", - "missing": -1, - "show_term_doc_count_error": true - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commits = response.Aggregations.Terms("commits"); -commits.Should().NotBeNull(); -commits.DocCountErrorUpperBound.Should().HaveValue(); -commits.SumOtherDocCount.Should().HaveValue(); -commits.Buckets.Should().NotBeNull(); -commits.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in commits.Buckets) -{ - item.Key.Should().BeGreaterThan(0); - item.DocCount.Should().BeGreaterOrEqualTo(1); -} -commits.Buckets.Should().Contain(b => b.DocCountErrorUpperBound.HasValue); ----- - -[float] -== Nested terms aggregations - -A terms aggregation returns buckets that can contain more aggregations - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("commits", st => st - .Field(p => p.NumberOfCommits) - .Aggregations(aggs => aggs - .Terms("state", t => t - .Meta(m => m.Add("x", "y")) - .Field(p => p.State) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("commits") -{ - Field = Field(p => p.NumberOfCommits), - Aggregations = new TermsAggregation("state") - { - Meta = new Dictionary { { "x", "y" } }, - Field = Field(p => p.State), - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits": { - "terms": { - "field": "numberOfCommits" - }, - "aggs": { - "state": { - "meta": { - "x": "y" - }, - "terms": { - "field": "state" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commits = response.Aggregations.Terms("commits"); -commits.Should().NotBeNull(); -commits.DocCountErrorUpperBound.Should().HaveValue(); -commits.SumOtherDocCount.Should().HaveValue(); -commits.Buckets.Should().NotBeNull(); -commits.Buckets.Count.Should().BeGreaterThan(0); -foreach (var item in commits.Buckets) -{ - item.Key.Should().BeGreaterThan(0); - item.DocCount.Should().BeGreaterOrEqualTo(1); - var states = item.Terms("state"); - states.Should().NotBeNull(); - states.Buckets.Should().NotBeEmpty(); - states.Meta.Should().NotBeEmpty("meta").And.ContainKey("x"); - foreach (var b in states.Buckets) - { - b.DocCount.Should().BeGreaterThan(0); - b.Key.Should().NotBeNullOrEmpty(); - } -} ----- - -[float] -== Typed Keys aggregations - -Starting with Elasticsearch 6.x you can provide a `typed_keys` parameter which will prefix all the aggregation names -with the type of aggregation that is returned. The following modifies the previous nested terms aggregation and sends it again -but this time with the `typed_keys` option set. The client should treat this in a an opaque fashion so let's assert that it does. - -==== Fluent DSL example - -[source,csharp] ----- -f => base.Fluent(f.TypedKeys()) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -var r = base.Initializer; -r.TypedKeys = true; -return r; ----- - diff --git a/docs/aggregations/matrix/matrix-stats/matrix-stats-aggregation-usage.asciidoc b/docs/aggregations/matrix/matrix-stats/matrix-stats-aggregation-usage.asciidoc deleted file mode 100644 index f04721318f7..00000000000 --- a/docs/aggregations/matrix/matrix-stats/matrix-stats-aggregation-usage.asciidoc +++ /dev/null @@ -1,95 +0,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/Matrix/MatrixStats/MatrixStatsAggregationUsageTests.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! -//// - -[[matrix-stats-aggregation-usage]] -=== Matrix Stats Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.MatrixStats("matrixstats", ms => ms - .Meta(m => m - .Add("foo", "bar") - ) - .Fields(fs => fs - .Field(p => p.NumberOfCommits) - .Field(p => p.NumberOfContributors) - ) - .Missing(m => m - .Add(Field(p => p.NumberOfCommits), 0) - .Add(Field(p => p.NumberOfContributors), 1) - ) - .Mode(MatrixStatsMode.Median) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatrixStatsAggregation("matrixstats", Field(p => p.NumberOfCommits)) -{ - Meta = new Dictionary - { - { "foo", "bar" } - }, - Missing = new Dictionary - { - { "numberOfCommits", 0.0 }, - { "numberOfContributors", 1.0 }, - }, - Mode = MatrixStatsMode.Median, - Fields = Field(p => p.NumberOfCommits).And("numberOfContributors") -} ----- - -[source,javascript] -.Example json output ----- -{ - "matrixstats": { - "meta": { - "foo": "bar" - }, - "matrix_stats": { - "fields": [ - "numberOfCommits", - "numberOfContributors" - ], - "missing": { - "numberOfCommits": 0.0, - "numberOfContributors": 1.0 - }, - "mode": "median" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var matrix = response.Aggregations.MatrixStats("matrixstats"); -matrix.Should().NotBeNull(); -matrix.Fields.Should().NotBeNull().And.HaveCount(2); -matrix.DocCount.Should().BeGreaterThan(0); - -AssertField(matrix, "numberOfCommits"); -AssertField(matrix, "numberOfContributors"); ----- - diff --git a/docs/aggregations/metric/average/average-aggregation-usage.asciidoc b/docs/aggregations/metric/average/average-aggregation-usage.asciidoc deleted file mode 100644 index c0d068b9bfc..00000000000 --- a/docs/aggregations/metric/average/average-aggregation-usage.asciidoc +++ /dev/null @@ -1,78 +0,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/Metric/Average/AverageAggregationUsageTests.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! -//// - -[[average-aggregation-usage]] -=== Average Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Average("average_commits", avg => avg - .Meta(m => m - .Add("foo", "bar") - ) - .Field(p => p.NumberOfCommits) - .Missing(10) - .Script(ss => ss.Source("_value * 1.2")) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new AverageAggregation("average_commits", Field(p => p.NumberOfCommits)) -{ - Meta = new Dictionary - { - { "foo", "bar" } - }, - Missing = 10, - Script = new InlineScript("_value * 1.2") -} ----- - -[source,javascript] -.Example json output ----- -{ - "average_commits": { - "meta": { - "foo": "bar" - }, - "avg": { - "field": "numberOfCommits", - "missing": 10.0, - "script": { - "source": "_value * 1.2" - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitsAvg = response.Aggregations.Average("average_commits"); -commitsAvg.Should().NotBeNull(); -commitsAvg.Value.Should().BeGreaterThan(0); -commitsAvg.Meta.Should().NotBeNull().And.HaveCount(1); -commitsAvg.Meta["foo"].Should().Be("bar"); ----- - diff --git a/docs/aggregations/metric/boxplot/boxplot-aggregation-usage.asciidoc b/docs/aggregations/metric/boxplot/boxplot-aggregation-usage.asciidoc deleted file mode 100644 index 7c5033d5938..00000000000 --- a/docs/aggregations/metric/boxplot/boxplot-aggregation-usage.asciidoc +++ /dev/null @@ -1,90 +0,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/Metric/Boxplot/BoxplotAggregationUsageTests.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! -//// - -[[boxplot-aggregation-usage]] -=== Boxplot Aggregation Usage - -A boxplot metrics aggregation that computes boxplot of numeric values extracted from the aggregated documents. -These values can be generated by a provided script or extracted from specific numeric or histogram fields in the documents. - -boxplot aggregation returns essential information for making a box plot: minimum, maximum median, first quartile (25th percentile) -and third quartile (75th percentile) values. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-boxplot-aggregation.html[Boxplot Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Boxplot("boxplot_commits", plot => plot - .Meta(m => m - .Add("foo", "bar") - ) - .Field(p => p.NumberOfCommits) - .Missing(10) - .Compression(100) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new BoxplotAggregation("boxplot_commits", Field(p => p.NumberOfCommits)) -{ - Meta = new Dictionary - { - { "foo", "bar" } - }, - Missing = 10, - Compression = 100 -} ----- - -[source,javascript] -.Example json output ----- -{ - "boxplot_commits": { - "meta": { - "foo": "bar" - }, - "boxplot": { - "field": "numberOfCommits", - "missing": 10.0, - "compression": 100.0 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var boxplot = response.Aggregations.Boxplot("boxplot_commits"); -boxplot.Should().NotBeNull(); -boxplot.Min.Should().BeGreaterOrEqualTo(0); -boxplot.Max.Should().BeGreaterOrEqualTo(0); -boxplot.Q1.Should().BeGreaterOrEqualTo(0); -boxplot.Q2.Should().BeGreaterOrEqualTo(0); -boxplot.Q3.Should().BeGreaterOrEqualTo(0); -boxplot.Lower.Should().BeGreaterOrEqualTo(0); -boxplot.Upper.Should().BeGreaterOrEqualTo(0); -boxplot.Meta.Should().NotBeNull().And.HaveCount(1); -boxplot.Meta["foo"].Should().Be("bar"); ----- - diff --git a/docs/aggregations/metric/cardinality/cardinality-aggregation-usage.asciidoc b/docs/aggregations/metric/cardinality/cardinality-aggregation-usage.asciidoc deleted file mode 100644 index 8446c0bd67d..00000000000 --- a/docs/aggregations/metric/cardinality/cardinality-aggregation-usage.asciidoc +++ /dev/null @@ -1,61 +0,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/Metric/Cardinality/CardinalityAggregationUsageTests.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! -//// - -[[cardinality-aggregation-usage]] -=== Cardinality Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Cardinality("state_count", c => c - .Field(p => p.State) - .PrecisionThreshold(100) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CardinalityAggregation("state_count", Field(p => p.State)) -{ - PrecisionThreshold = 100 -} ----- - -[source,javascript] -.Example json output ----- -{ - "state_count": { - "cardinality": { - "field": "state", - "precision_threshold": 100 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var projectCount = response.Aggregations.Cardinality("state_count"); -projectCount.Should().NotBeNull(); -projectCount.Value.Should().Be(3); ----- - diff --git a/docs/aggregations/metric/extended-stats/extended-stats-aggregation-usage.asciidoc b/docs/aggregations/metric/extended-stats/extended-stats-aggregation-usage.asciidoc deleted file mode 100644 index 144a2614e38..00000000000 --- a/docs/aggregations/metric/extended-stats/extended-stats-aggregation-usage.asciidoc +++ /dev/null @@ -1,70 +0,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/Metric/ExtendedStats/ExtendedStatsAggregationUsageTests.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! -//// - -[[extended-stats-aggregation-usage]] -=== Extended Stats Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.ExtendedStats("commit_stats", es => es - .Field(p => p.NumberOfCommits) - .Sigma(1) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ExtendedStatsAggregation("commit_stats", Field(p => p.NumberOfCommits)) -{ - Sigma = 1 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commit_stats": { - "extended_stats": { - "field": "numberOfCommits", - "sigma": 1.0 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitStats = response.Aggregations.ExtendedStats("commit_stats"); -commitStats.Should().NotBeNull(); -commitStats.Average.Should().BeGreaterThan(0); -commitStats.Max.Should().BeGreaterThan(0); -commitStats.Min.Should().BeGreaterThan(0); -commitStats.Count.Should().BeGreaterThan(0); -commitStats.Sum.Should().BeGreaterThan(0); -commitStats.SumOfSquares.Should().BeGreaterThan(0); -commitStats.StdDeviation.Should().BeGreaterThan(0); -commitStats.StdDeviationBounds.Should().NotBeNull(); -commitStats.StdDeviationBounds.Upper.Should().BeGreaterThan(0); -commitStats.StdDeviationBounds.Lower.Should().NotBe(0); ----- - diff --git a/docs/aggregations/metric/geo-bounds/geo-bounds-aggregation-usage.asciidoc b/docs/aggregations/metric/geo-bounds/geo-bounds-aggregation-usage.asciidoc deleted file mode 100644 index a4954e2a343..00000000000 --- a/docs/aggregations/metric/geo-bounds/geo-bounds-aggregation-usage.asciidoc +++ /dev/null @@ -1,75 +0,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/Metric/GeoBounds/GeoBoundsAggregationUsageTests.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-bounds-aggregation-usage]] -=== Geo Bounds Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoBounds("viewport", gb => gb - .Field(p => p.LocationPoint) - .WrapLongitude() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoBoundsAggregation("viewport", Field(p => p.LocationPoint)) -{ - WrapLongitude = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "viewport": { - "geo_bounds": { - "field": "locationPoint", - "wrap_longitude": true - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var viewport = response.Aggregations.GeoBounds("viewport"); -viewport.Should().NotBeNull(); -viewport.Bounds.Should().NotBeNull(); - -var bottomRight = viewport.Bounds.BottomRight; -bottomRight.Should().NotBeNull(); -bottomRight.Lat.Should().HaveValue(); -GeoLocation.IsValidLatitude(bottomRight.Lat.Value).Should().BeTrue(); -bottomRight.Lon.Should().HaveValue(); -GeoLocation.IsValidLongitude(bottomRight.Lon.Value).Should().BeTrue(); - -var topLeft = viewport.Bounds.TopLeft; -topLeft.Should().NotBeNull(); -topLeft.Lat.Should().HaveValue(); -GeoLocation.IsValidLatitude(topLeft.Lat.Value).Should().BeTrue(); -topLeft.Lon.Should().HaveValue(); -GeoLocation.IsValidLongitude(topLeft.Lon.Value).Should().BeTrue(); ----- - diff --git a/docs/aggregations/metric/geo-centroid/geo-centroid-aggregation-usage.asciidoc b/docs/aggregations/metric/geo-centroid/geo-centroid-aggregation-usage.asciidoc deleted file mode 100644 index 59912dc2f28..00000000000 --- a/docs/aggregations/metric/geo-centroid/geo-centroid-aggregation-usage.asciidoc +++ /dev/null @@ -1,175 +0,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/Metric/GeoCentroid/GeoCentroidAggregationUsageTests.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-centroid-aggregation-usage]] -=== Geo Centroid Aggregation Usage - -A metric aggregation that computes the weighted centroid from all coordinate values -for a Geo-point datatype field. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-geocentroid-aggregation.html[Geo Centroid Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoCentroid("centroid", gb => gb - .Field(p => p.LocationPoint) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoCentroidAggregation("centroid", Infer.Field(p => p.LocationPoint)) ----- - -[source,javascript] -.Example json output ----- -{ - "centroid": { - "geo_centroid": { - "field": "locationPoint" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var centroid = response.Aggregations.GeoCentroid("centroid"); -centroid.Should().NotBeNull(); -centroid.Count.Should().BeGreaterThan(0); -centroid.Location.Should().NotBeNull(); - -centroid.Location.Latitude.Should().NotBe(0); -centroid.Location.Longitude.Should().NotBe(0); ----- - -[[geo-centroid-sub-aggregation]] -[float] -=== Geo Centroid Sub Aggregation - -The `geo_centroid` aggregation is more interesting when combined as a sub-aggregation to other bucket aggregations - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("projects", t => t - .Field(p => p.Name) - .Aggregations(sa => sa - .GeoCentroid("centroid", gb => gb - .Field(p => p.LocationPoint) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("projects") -{ - Field = Infer.Field(p => p.Name), - Aggregations = new GeoCentroidAggregation("centroid", Infer.Field(p => p.LocationPoint)) -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects": { - "terms": { - "field": "name" - }, - "aggs": { - "centroid": { - "geo_centroid": { - "field": "locationPoint" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projects = response.Aggregations.Terms("projects"); - -foreach (var bucket in projects.Buckets) -{ - var centroid = bucket.GeoCentroid("centroid"); - centroid.Should().NotBeNull(); - centroid.Count.Should().BeGreaterThan(0); - centroid.Location.Should().NotBeNull(); - - centroid.Location.Latitude.Should().NotBe(0); - centroid.Location.Longitude.Should().NotBe(0); -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoCentroid("centroid", gb => gb - .Field(p => p.LocationPoint) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoCentroidAggregation("centroid", Infer.Field(p => p.LocationPoint)) ----- - -[source,javascript] -.Example json output ----- -{ - "centroid": { - "geo_centroid": { - "field": "locationPoint" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var centroid = response.Aggregations.GeoCentroid("centroid"); -centroid.Should().NotBeNull(); -centroid.Count.Should().Be(0); ----- - diff --git a/docs/aggregations/metric/geo-line/geo-line-aggregation-usage.asciidoc b/docs/aggregations/metric/geo-line/geo-line-aggregation-usage.asciidoc deleted file mode 100644 index a8407767271..00000000000 --- a/docs/aggregations/metric/geo-line/geo-line-aggregation-usage.asciidoc +++ /dev/null @@ -1,77 +0,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/Metric/GeoLine/GeoLineAggregationUsageTests.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-line-aggregation-usage]] -=== Geo Line Aggregation Usage - -The geo_line aggregation aggregates all geo_point values within a bucket into a LineString ordered by the chosen sort field. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-geo-line.html[Geo-Line Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.GeoLine("line", d => d - .Point(p => p.LocationPoint) - .Sort(p => p.StartedOn) - .IncludeSort() - .Size(25)) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoLineAggregation("line", Field(f => f.LocationPoint), Field(f => f.StartedOn)) -{ - IncludeSort = true, - Size = 25 -} ----- - -[source,javascript] -.Example json output ----- -{ - "line": { - "geo_line": { - "point": { - "field": "locationPoint" - }, - "sort": { - "field": "startedOn" - }, - "include_sort": true, - "size": 25 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var geoLine = response.Aggregations.GeoLine("line"); -geoLine.Should().NotBeNull(); -geoLine.Type.Should().Be("Feature"); -geoLine.Geometry.Type.Should().Be("linestring"); -geoLine.Geometry.Coordinates.Should().NotBeEmpty(); -geoLine.Properties.Complete.Should().BeFalse(); -geoLine.Properties.SortValues.Should().NotBeEmpty(); ----- - diff --git a/docs/aggregations/metric/max/max-aggregation-usage.asciidoc b/docs/aggregations/metric/max/max-aggregation-usage.asciidoc deleted file mode 100644 index 29674d5ee7d..00000000000 --- a/docs/aggregations/metric/max/max-aggregation-usage.asciidoc +++ /dev/null @@ -1,56 +0,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/Metric/Max/MaxAggregationUsageTests.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! -//// - -[[max-aggregation-usage]] -=== Max Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Max("max_commits", m => m - .Field(p => p.NumberOfCommits) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MaxAggregation("max_commits", Field(p => p.NumberOfCommits)) ----- - -[source,javascript] -.Example json output ----- -{ - "max_commits": { - "max": { - "field": "numberOfCommits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var max = response.Aggregations.Max("max_commits"); -max.Should().NotBeNull(); -max.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/median-absolute-deviation/median-absolute-deviation-aggregation-usage.asciidoc b/docs/aggregations/metric/median-absolute-deviation/median-absolute-deviation-aggregation-usage.asciidoc deleted file mode 100644 index a276ed66b94..00000000000 --- a/docs/aggregations/metric/median-absolute-deviation/median-absolute-deviation-aggregation-usage.asciidoc +++ /dev/null @@ -1,76 +0,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/Metric/MedianAbsoluteDeviation/MedianAbsoluteDeviationAggregationUsageTests.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! -//// - -[[median-absolute-deviation-aggregation-usage]] -=== Median Absolute Deviation Aggregation Usage - -A single-value aggregation that approximates the median absolute deviation of its search results. - -Median absolute deviation is a measure of variability. It is a robust statistic, meaning that it is -useful for describing data that may have outliers, or may not be normally distributed. -For such data it can be more descriptive than standard deviation. - -It is calculated as the median of each data point's deviation from the median of the -entire sample. That is, for a random variable `X`, the median absolute deviation is `median(|median(X) - Xi|)`. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-median-absolute-deviation-aggregation.html[Median Absolute Deviation Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Average("average_commits", avg => avg - .Field(p => p.NumberOfCommits) -) -.MedianAbsoluteDeviation("commit_variability", m => m - .Field(f => f.NumberOfCommits) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new AverageAggregation("average_commits", Infer.Field(p => p.NumberOfCommits)) && -new MedianAbsoluteDeviationAggregation("commit_variability", Infer.Field(p => p.NumberOfCommits)) ----- - -[source,javascript] -.Example json output ----- -{ - "average_commits": { - "avg": { - "field": "numberOfCommits" - } - }, - "commit_variability": { - "median_absolute_deviation": { - "field": "numberOfCommits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var medianAbsoluteDeviation = response.Aggregations.MedianAbsoluteDeviation("commit_variability"); -medianAbsoluteDeviation.Should().NotBeNull(); -medianAbsoluteDeviation.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/min/min-aggregation-usage.asciidoc b/docs/aggregations/metric/min/min-aggregation-usage.asciidoc deleted file mode 100644 index 0f3039446a0..00000000000 --- a/docs/aggregations/metric/min/min-aggregation-usage.asciidoc +++ /dev/null @@ -1,59 +0,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/Metric/Min/MinAggregationUsageTests.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! -//// - -[[min-aggregation-usage]] -=== Min Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Min("min_last_activity", m => m - .Field(p => p.LastActivity) - .Format("yyyy") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MinAggregation("min_last_activity", Field(p => p.LastActivity)) { Format = "yyyy" } ----- - -[source,javascript] -.Example json output ----- -{ - "min_last_activity": { - "min": { - "field": "lastActivity", - "format": "yyyy" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var min = response.Aggregations.Min("min_last_activity"); -min.Should().NotBeNull(); -min.Value.Should().BeGreaterThan(0); -min.ValueAsString.Should().NotBeNullOrEmpty(); ----- - diff --git a/docs/aggregations/metric/percentile-ranks/percentile-ranks-aggregation-usage.asciidoc b/docs/aggregations/metric/percentile-ranks/percentile-ranks-aggregation-usage.asciidoc deleted file mode 100644 index eb6c8161f8a..00000000000 --- a/docs/aggregations/metric/percentile-ranks/percentile-ranks-aggregation-usage.asciidoc +++ /dev/null @@ -1,86 +0,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/Metric/PercentileRanks/PercentileRanksAggregationUsageTests.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! -//// - -[[percentile-ranks-aggregation-usage]] -=== Percentile Ranks Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.PercentileRanks("commits_outlier", pr => pr - .Field(p => p.NumberOfCommits) - .Values(15, 30) - .Method(m => m - .TDigest(td => td - .Compression(200) - ) - ) - .Script(ss => ss.Source("doc['numberOfCommits'].value * 1.2")) - .Missing(0) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PercentileRanksAggregation("commits_outlier", Field(p => p.NumberOfCommits)) -{ - Values = new List { 15, 30 }, - Method = new TDigestMethod - { - Compression = 200 - }, - Script = new InlineScript("doc['numberOfCommits'].value * 1.2"), - Missing = 0 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits_outlier": { - "percentile_ranks": { - "field": "numberOfCommits", - "values": [ - 15.0, - 30.0 - ], - "tdigest": { - "compression": 200.0 - }, - "script": { - "source": "doc['numberOfCommits'].value * 1.2" - }, - "missing": 0.0 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitsOutlier = response.Aggregations.PercentileRanks("commits_outlier"); -commitsOutlier.Should().NotBeNull(); -commitsOutlier.Items.Should().NotBeNullOrEmpty(); -foreach (var item in commitsOutlier.Items) - item.Should().NotBeNull(); ----- - diff --git a/docs/aggregations/metric/percentiles/percentiles-aggregation-usage.asciidoc b/docs/aggregations/metric/percentiles/percentiles-aggregation-usage.asciidoc deleted file mode 100644 index 23b50ffb255..00000000000 --- a/docs/aggregations/metric/percentiles/percentiles-aggregation-usage.asciidoc +++ /dev/null @@ -1,87 +0,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/Metric/Percentiles/PercentilesAggregationUsageTests.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! -//// - -[[percentiles-aggregation-usage]] -=== Percentiles Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Percentiles("commits_outlier", pr => pr - .Field(p => p.NumberOfCommits) - .Percents(95, 99, 99.9) - .Method(m => m - .HDRHistogram(hdr => hdr - .NumberOfSignificantValueDigits(3) - ) - ) - .Script(ss => ss.Source("doc['numberOfCommits'].value * 1.2")) - .Missing(0) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PercentilesAggregation("commits_outlier", Field(p => p.NumberOfCommits)) -{ - Percents = new[] { 95, 99, 99.9 }, - Method = new HDRHistogramMethod - { - NumberOfSignificantValueDigits = 3 - }, - Script = new InlineScript("doc['numberOfCommits'].value * 1.2"), - Missing = 0 -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits_outlier": { - "percentiles": { - "field": "numberOfCommits", - "percents": [ - 95.0, - 99.0, - 99.9 - ], - "hdr": { - "number_of_significant_value_digits": 3 - }, - "script": { - "source": "doc['numberOfCommits'].value * 1.2" - }, - "missing": 0.0 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitsOutlier = response.Aggregations.Percentiles("commits_outlier"); -commitsOutlier.Should().NotBeNull(); -commitsOutlier.Items.Should().NotBeNullOrEmpty(); -foreach (var item in commitsOutlier.Items) - item.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/rate/rate-aggregation-usage.asciidoc b/docs/aggregations/metric/rate/rate-aggregation-usage.asciidoc deleted file mode 100644 index bedb9b6497a..00000000000 --- a/docs/aggregations/metric/rate/rate-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Metric/Rate/RateAggregationUsageTests.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! -//// - -[[rate-aggregation-usage]] -=== Rate Aggregation Usage - -A rate metrics aggregation can be used only inside a date_histogram and calculates a rate of documents or a field in each -date_histogram bucket. The field values can be generated by a provided script or extracted from specific numeric or histogram fields in the documents. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-rate-aggregation.html[Rate Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("by_date", d => d - .Field(f => f.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(a => a - .Rate("my_rate", m => m - .Field(p => p.NumberOfCommits) - .Unit(DateInterval.Month) - .Mode(RateMode.Sum) - ))) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("by_date") -{ - Field = Field(p => p.StartedOn), - CalendarInterval = DateInterval.Month, - Aggregations = new RateAggregation("my_rate", Field(p => p.NumberOfCommits)) - { - Unit = DateInterval.Month, - Mode = RateMode.Sum - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "by_date": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "my_rate": { - "rate": { - "field": "numberOfCommits", - "unit": "month", - "mode": "sum" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var dateHistogram = response.Aggregations.DateHistogram("by_date"); -dateHistogram.Should().NotBeNull(); -dateHistogram.Buckets.Should().NotBeNull(); -dateHistogram.Buckets.Count.Should().BeGreaterThan(10); -foreach (var item in dateHistogram.Buckets) -{ - var rate = item.Rate("my_rate"); - rate.Should().NotBeNull(); - rate.Value.Should().BeGreaterOrEqualTo(1); -} ----- - diff --git a/docs/aggregations/metric/scripted-metric/scripted-metric-aggregation-usage.asciidoc b/docs/aggregations/metric/scripted-metric/scripted-metric-aggregation-usage.asciidoc deleted file mode 100644 index 8db1420050d..00000000000 --- a/docs/aggregations/metric/scripted-metric/scripted-metric-aggregation-usage.asciidoc +++ /dev/null @@ -1,190 +0,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/Metric/ScriptedMetric/ScriptedMetricAggregationUsageTests.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! -//// - -[[scripted-metric-aggregation-usage]] -=== Scripted Metric Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.ScriptedMetric("sum_the_hard_way", sm => sm - .InitScript(ss => ss.Source(_script.Init)) - .MapScript(ss => ss.Source(_script.Map)) - .CombineScript(ss => ss.Source(_script.Combine)) - .ReduceScript(ss => ss.Source(_script.Reduce)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ScriptedMetricAggregation("sum_the_hard_way") -{ - InitScript = new InlineScript(_script.Init), - MapScript = new InlineScript(_script.Map), - CombineScript = new InlineScript(_script.Combine), - ReduceScript = new InlineScript(_script.Reduce) -} ----- - -[source,javascript] -.Example json output ----- -{ - "sum_the_hard_way": { - "scripted_metric": { - "init_script": { - "source": "state.commits = []" - }, - "map_script": { - "source": "if (doc['state'].value == \"Stable\") { state.commits.add(doc['numberOfCommits'].value) }" - }, - "combine_script": { - "source": "def sum = 0.0; for (c in state.commits) { sum += c } return sum" - }, - "reduce_script": { - "source": "def sum = 0.0; for (a in states) { sum += a } return sum" - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var sumTheHardWay = response.Aggregations.ScriptedMetric("sum_the_hard_way"); -sumTheHardWay.Should().NotBeNull(); -sumTheHardWay.Value().Should().BeGreaterThan(0); ----- - -[source,csharp] ----- -private class Scripted -{ - public string Combine { get; set; } - public string Init { get; set; } - // ReSharper disable once UnusedAutoPropertyAccessor.Local - public string Language { get; set; } - public string Map { get; set; } - public string Reduce { get; set; } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.ScriptedMetric("by_state_total", sm => sm - .InitScript(ss => ss.Source(_first.Init).Lang(_first.Language)) - .CombineScript(ss => ss.Source(_first.Combine).Lang(_first.Language)) - .MapScript(ss => ss.Source(_first.Map).Lang(_first.Language)) - .ReduceScript(ss => ss.Source(_first.Reduce).Lang(_first.Language)) -) -.ScriptedMetric("total_commits", sm => sm - .InitScript(ss => ss.Source(_second.Init).Lang(_second.Language)) - .MapScript(ss => ss.Source(_second.Map).Lang(_second.Language)) - .CombineScript(ss => ss.Source(_second.Combine).Lang(_second.Language)) - .ReduceScript(ss => ss.Source(_second.Reduce).Lang(_second.Language)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ScriptedMetricAggregation("by_state_total") -{ - InitScript = new InlineScript(_first.Init) { Lang = _first.Language }, - CombineScript = new InlineScript(_first.Combine) { Lang = _first.Language }, - MapScript = new InlineScript(_first.Map) { Lang = _first.Language }, - ReduceScript = new InlineScript(_first.Reduce) { Lang = _first.Language } -} -&& new ScriptedMetricAggregation("total_commits") -{ - InitScript = new InlineScript(_second.Init) { Lang = _second.Language }, - MapScript = new InlineScript(_second.Map) { Lang = _second.Language }, - CombineScript = new InlineScript(_second.Combine) { Lang = _second.Language }, - ReduceScript = new InlineScript(_second.Reduce) { Lang = _second.Language } -} ----- - -[source,javascript] -.Example json output ----- -{ - "by_state_total": { - "scripted_metric": { - "init_script": { - "source": "state.map = [:]", - "lang": "painless" - }, - "combine_script": { - "source": "return state.map;", - "lang": "painless" - }, - "map_script": { - "source": "if (state.map.containsKey(doc['state'].value)) state.map[doc['state'].value] += 1; else state.map[doc['state'].value] = 1;", - "lang": "painless" - }, - "reduce_script": { - "source": "def reduce = [:]; for (map in states){ for (entry in map.entrySet()) { if (reduce.containsKey(entry.getKey())) reduce[entry.getKey()] += entry.getValue(); else reduce[entry.getKey()] = entry.getValue(); }} return reduce;", - "lang": "painless" - } - } - }, - "total_commits": { - "scripted_metric": { - "init_script": { - "source": "state.commits = []", - "lang": "painless" - }, - "map_script": { - "source": "if (doc['state'].value == \"Stable\") { state.commits.add(doc['numberOfCommits'].value) }", - "lang": "painless" - }, - "combine_script": { - "source": "def sum = 0.0; for (c in state.commits) { sum += c } return sum", - "lang": "painless" - }, - "reduce_script": { - "source": "def sum = 0.0; for (a in states) { sum += a } return sum", - "lang": "painless" - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var byStateTotal = response.Aggregations.ScriptedMetric("by_state_total"); -var totalCommits = response.Aggregations.ScriptedMetric("total_commits"); - -byStateTotal.Should().NotBeNull(); -totalCommits.Should().NotBeNull(); - -byStateTotal.Value>().Should().NotBeNull(); -totalCommits.Value().Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/stats/stats-aggregation-usage.asciidoc b/docs/aggregations/metric/stats/stats-aggregation-usage.asciidoc deleted file mode 100644 index 8de530260e9..00000000000 --- a/docs/aggregations/metric/stats/stats-aggregation-usage.asciidoc +++ /dev/null @@ -1,60 +0,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/Metric/Stats/StatsAggregationUsageTests.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! -//// - -[[stats-aggregation-usage]] -=== Stats Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Stats("commit_stats", st => st - .Field(p => p.NumberOfCommits) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new StatsAggregation("commit_stats", Field(p => p.NumberOfCommits)) ----- - -[source,javascript] -.Example json output ----- -{ - "commit_stats": { - "stats": { - "field": "numberOfCommits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitStats = response.Aggregations.Stats("commit_stats"); -commitStats.Should().NotBeNull(); -commitStats.Average.Should().BeGreaterThan(0); -commitStats.Max.Should().BeGreaterThan(0); -commitStats.Min.Should().BeGreaterThan(0); -commitStats.Count.Should().BeGreaterThan(0); -commitStats.Sum.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/string-stats/string-stats-aggregation-usage.asciidoc b/docs/aggregations/metric/string-stats/string-stats-aggregation-usage.asciidoc deleted file mode 100644 index a5f02626432..00000000000 --- a/docs/aggregations/metric/string-stats/string-stats-aggregation-usage.asciidoc +++ /dev/null @@ -1,60 +0,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/Metric/StringStats/StringStatsAggregationUsageTests.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! -//// - -[[string-stats-aggregation-usage]] -=== String Stats Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.StringStats("name_stats", st => st - .Field(p => p.Name) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new StringStatsAggregation("name_stats", Field(p => p.Name)) ----- - -[source,javascript] -.Example json output ----- -{ - "name_stats": { - "string_stats": { - "field": "name" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitStats = response.Aggregations.StringStats("name_stats"); -commitStats.Should().NotBeNull(); -commitStats.AverageLength.Should().BeGreaterThan(0); -commitStats.MaxLength.Should().BeGreaterThan(0); -commitStats.MinLength.Should().BeGreaterThan(0); -commitStats.Count.Should().BeGreaterThan(0); -commitStats.Distribution.Should().NotBeNull().And.BeEmpty(); ----- - diff --git a/docs/aggregations/metric/sum/sum-aggregation-usage.asciidoc b/docs/aggregations/metric/sum/sum-aggregation-usage.asciidoc deleted file mode 100644 index c01a959b51f..00000000000 --- a/docs/aggregations/metric/sum/sum-aggregation-usage.asciidoc +++ /dev/null @@ -1,56 +0,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/Metric/Sum/SumAggregationUsageTests.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! -//// - -[[sum-aggregation-usage]] -=== Sum Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Sum("commits_sum", sm => sm - .Field(p => p.NumberOfCommits) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SumAggregation("commits_sum", Field(p => p.NumberOfCommits)) ----- - -[source,javascript] -.Example json output ----- -{ - "commits_sum": { - "sum": { - "field": "numberOfCommits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitsSum = response.Aggregations.Sum("commits_sum"); -commitsSum.Should().NotBeNull(); -commitsSum.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/t-test/t-test-aggregation-usage.asciidoc b/docs/aggregations/metric/t-test/t-test-aggregation-usage.asciidoc deleted file mode 100644 index d7d20c1f4d0..00000000000 --- a/docs/aggregations/metric/t-test/t-test-aggregation-usage.asciidoc +++ /dev/null @@ -1,118 +0,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/Metric/TTest/TTestAggregationUsageTests.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! -//// - -[[t-test-aggregation-usage]] -=== T Test Aggregation Usage - -A t_test metrics aggregation that performs a statistical hypothesis test in which the test statistic follows a -Student’s t-distribution under the null hypothesis on numeric values extracted from the aggregated documents or -generated by provided scripts. In practice, this will tell you if the difference between two population means -are statistically significant and did not occur by chance alone. - -NOTE: Available in Elasticsearch 7.8.0+ with at least basic license level - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-ttest-aggregation.html[T-Test Aggregation]. - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.TTest("commits_visibility", c => c - .A(t => t - .Field(f => f.NumberOfCommits) - .Filter(f => f - .Term(ff => ff.Visibility, Visibility.Public) - ) - ) - .B(t => t - .Field(f => f.NumberOfCommits) - .Filter(f => f - .Term(ff => ff.Visibility, Visibility.Private) - ) - ) - .Type(TTestType.Heteroscedastic) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TTestAggregation("commits_visibility") -{ - A = new TTestPopulation - { - Field = Field(f => f.NumberOfCommits), - Filter = new TermQuery - { - Field = Field(f => f.Visibility), - Value = Visibility.Public - } - }, - B = new TTestPopulation - { - Field = Field(f => f.NumberOfCommits), - Filter = new TermQuery - { - Field = Field(f => f.Visibility), - Value = Visibility.Private - } - }, - Type = TTestType.Heteroscedastic -} ----- - -[source,javascript] -.Example json output ----- -{ - "commits_visibility": { - "t_test": { - "a": { - "field": "numberOfCommits", - "filter": { - "term": { - "visibility": { - "value": "Public" - } - } - } - }, - "b": { - "field": "numberOfCommits", - "filter": { - "term": { - "visibility": { - "value": "Private" - } - } - } - }, - "type": "heteroscedastic" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var tTest = response.Aggregations.TTest("commits_visibility"); -tTest.Should().NotBeNull(); -tTest.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/top-hits/top-hits-aggregation-usage.asciidoc b/docs/aggregations/metric/top-hits/top-hits-aggregation-usage.asciidoc deleted file mode 100644 index 459c936cd00..00000000000 --- a/docs/aggregations/metric/top-hits/top-hits-aggregation-usage.asciidoc +++ /dev/null @@ -1,217 +0,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/Metric/TopHits/TopHitsAggregationUsageTests.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! -//// - -[[top-hits-aggregation-usage]] -=== Top Hits Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.Terms("states", t => t - .Field(p => p.State) - .Aggregations(aa => aa - .TopHits("top_state_hits", th => th - .Sort(srt => srt - .Field(sf => sf - .Field(p => p.StartedOn) - .Order(SortOrder.Descending)) - .Script(ss => ss - .Type("number") - .Script(sss => sss - .Source("Math.sin(34*(double)doc['numberOfCommits'].value)") - .Lang("painless") - ) - .Order(SortOrder.Descending) - ) - ) - .Source(src => src - .Includes(fs => fs - .Field(p => p.Name) - .Field(p => p.LastActivity) - .Field(p => p.SourceOnly) - ) - ) - .Size(1) - .Version() - .TrackScores() - .Explain() - .StoredFields(f => f - .Field(p => p.StartedOn) - ) - .Highlight(h => h - .Fields( - hf => hf.Field(p => p.Tags), - hf => hf.Field(p => p.Description) - ) - ) - .ScriptFields(sfs => sfs - .ScriptField("commit_factor", sf => sf - .Source("doc['numberOfCommits'].value * 2") - ) - ) - .DocValueFields(d => d - .Field(p => p.State) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsAggregation("states") -{ - Field = Field(p => p.State), - Aggregations = new TopHitsAggregation("top_state_hits") - { - Sort = new List - { - new FieldSort { Field = Field(p => p.StartedOn), Order = SortOrder.Descending }, - new ScriptSort - { - Type = "number", - Script = new InlineScript("Math.sin(34*(double)doc['numberOfCommits'].value)") { Lang = "painless" }, - Order = SortOrder.Descending - }, - }, - Source = new SourceFilter - { - Includes = new[] { "name", "lastActivity", "sourceOnly" } - }, - Size = 1, - Version = true, - TrackScores = true, - Explain = true, - StoredFields = new[] { "startedOn" }, - Highlight = new Highlight - { - Fields = new Dictionary - { - { Field(p => p.Tags), new HighlightField() }, - { Field(p => p.Description), new HighlightField() } - } - }, - ScriptFields = new ScriptFields - { - { - "commit_factor", new ScriptField - { - Script = new InlineScript("doc['numberOfCommits'].value * 2") - } - }, - }, - DocValueFields = Fields(f => f.State) - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "states": { - "terms": { - "field": "state" - }, - "aggs": { - "top_state_hits": { - "top_hits": { - "sort": [ - { - "startedOn": { - "order": "desc" - } - }, - { - "_script": { - "type": "number", - "script": { - "lang": "painless", - "source": "Math.sin(34*(double)doc['numberOfCommits'].value)" - }, - "order": "desc" - } - } - ], - "_source": { - "includes": [ - "name", - "lastActivity", - "sourceOnly" - ] - }, - "size": 1, - "version": true, - "track_scores": true, - "explain": true, - "stored_fields": [ - "startedOn" - ], - "highlight": { - "fields": { - "tags": {}, - "description": {} - } - }, - "script_fields": { - "commit_factor": { - "script": { - "source": "doc['numberOfCommits'].value * 2" - } - } - }, - "docvalue_fields": [ - "state" - ] - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var states = response.Aggregations.Terms("states"); -states.Should().NotBeNull(); -states.Buckets.Should().NotBeNullOrEmpty(); -foreach (var state in states.Buckets) -{ - state.Key.Should().NotBeNullOrEmpty(); - state.DocCount.Should().BeGreaterThan(0); - var topStateHits = state.TopHits("top_state_hits"); - topStateHits.Should().NotBeNull(); - topStateHits.Total.Value.Should().BeGreaterThan(0); - var hits = topStateHits.Hits(); - hits.Should().NotBeNullOrEmpty(); - hits.All(h => h.Explanation != null).Should().BeTrue(); - hits.All(h => h.Version >= 0).Should().BeTrue(); - hits.All(h => h.Fields.ValuesOf("commit_factor").Any()).Should().BeTrue(); - hits.All(h => h.Fields.ValuesOf("startedOn").Any()).Should().BeTrue(); - var projects = topStateHits.Documents(); - projects.Should().NotBeEmpty(); - projects.Should().OnlyContain(p => !string.IsNullOrWhiteSpace(p.Name), "source filter included name"); - projects.Should().OnlyContain(p => string.IsNullOrWhiteSpace(p.Description), "source filter does NOT include description"); - foreach (var project in projects) - project.ShouldAdhereToSourceSerializerWhenSet(); -} ----- - diff --git a/docs/aggregations/metric/top-metrics/top-metrics-aggregation-usage.asciidoc b/docs/aggregations/metric/top-metrics/top-metrics-aggregation-usage.asciidoc deleted file mode 100644 index 03f51a88d26..00000000000 --- a/docs/aggregations/metric/top-metrics/top-metrics-aggregation-usage.asciidoc +++ /dev/null @@ -1,93 +0,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/Metric/TopMetrics/TopMetricsAggregationUsageTests.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! -//// - -[[top-metrics-aggregation-usage]] -=== Top Metrics Aggregation Usage - -The top metrics aggregation selects metrics from the document with the largest or smallest "sort" value. - -Top metrics is fairly similar to "top hits" in spirit but because it is more limited it is able to do its job using less memory and is often faster. - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-top-metrics.html[Top Metrics Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.TopMetrics("tm", st => st - .Metrics(m => m.Field(p => p.NumberOfContributors)) - .Size(10) - .Sort(sort => sort - .Ascending("numberOfContributors") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TopMetricsAggregation("tm") -{ - Metrics = new List - { - new TopMetricsValue(Field(p => p.NumberOfContributors)) - }, - Size = 10, - Sort = new List { new FieldSort { Field = "numberOfContributors", Order = SortOrder.Ascending } } -} ----- - -[source,javascript] -.Example json output ----- -{ - "tm": { - "top_metrics": { - "metrics": [ - { - "field": "numberOfContributors" - } - ], - "size": 10, - "sort": [ - { - "numberOfContributors": { - "order": "asc" - } - } - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var topMetrics = response.Aggregations.TopMetrics("tm"); -topMetrics.Should().NotBeNull(); -topMetrics.Top.Should().NotBeNull(); -topMetrics.Top.Count.Should().BeGreaterThan(0); - -var tipTop = topMetrics.Top.First(); -tipTop.Sort.Should().Should().NotBeNull(); -tipTop.Sort.Count.Should().BeGreaterThan(0); -tipTop.Metrics.Should().NotBeNull(); -tipTop.Metrics.Count.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/value-count/value-count-aggregation-usage.asciidoc b/docs/aggregations/metric/value-count/value-count-aggregation-usage.asciidoc deleted file mode 100644 index c181d3ea8d8..00000000000 --- a/docs/aggregations/metric/value-count/value-count-aggregation-usage.asciidoc +++ /dev/null @@ -1,56 +0,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/Metric/ValueCount/ValueCountAggregationUsageTests.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! -//// - -[[value-count-aggregation-usage]] -=== Value Count Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.ValueCount("commit_count", c => c - .Field(p => p.NumberOfCommits) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ValueCountAggregation("commit_count", Field(p => p.NumberOfCommits)) ----- - -[source,javascript] -.Example json output ----- -{ - "commit_count": { - "value_count": { - "field": "numberOfCommits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitCount = response.Aggregations.ValueCount("commit_count"); -commitCount.Should().NotBeNull(); -commitCount.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/metric/weighted-average/weighted-average-aggregation-usage.asciidoc b/docs/aggregations/metric/weighted-average/weighted-average-aggregation-usage.asciidoc deleted file mode 100644 index a5f4ce1a436..00000000000 --- a/docs/aggregations/metric/weighted-average/weighted-average-aggregation-usage.asciidoc +++ /dev/null @@ -1,85 +0,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/Metric/WeightedAverage/WeightedAverageAggregationUsageTests.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! -//// - -[[weighted-average-aggregation-usage]] -=== Weighted Average Aggregation Usage - -A single-value metrics aggregation that computes the weighted average of numeric values that are extracted -from the aggregated documents. These values can be extracted either from specific numeric fields in the documents. -When calculating a regular average, each datapoint has an equal "weight" i.e. it contributes equally to the final -value. Weighted averages, on the other hand, weight each datapoint differently. The amount that each -datapoint contributes to the final value is extracted from the document, or provided by a script. - -NOTE: Only available in Elasticsearch 6.4.0+ - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-metrics-weight-avg-aggregation.html[Weighted Avg Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.WeightedAverage("weighted_avg_commits", avg => avg - .Value(v => v.Field(p => p.NumberOfCommits).Missing(0)) - .Weight(w => w.Script("(doc['numberOfContributors']?.value ?: 0) + 1")) - .ValueType(ValueType.Long) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new WeightedAverageAggregation("weighted_avg_commits") -{ - Value = new WeightedAverageValue(Field(p => p.NumberOfCommits)) - { - Missing = 0 - }, - Weight = new WeightedAverageValue(new InlineScript("(doc['numberOfContributors']?.value ?: 0) + 1")), - ValueType = ValueType.Long -} ----- - -[source,javascript] -.Example json output ----- -{ - "weighted_avg_commits": { - "weighted_avg": { - "value": { - "field": "numberOfCommits", - "missing": 0.0 - }, - "weight": { - "script": { - "source": "(doc['numberOfContributors']?.value ?: 0) + 1" - } - }, - "value_type": "long" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -var commitsAvg = response.Aggregations.WeightedAverage("weighted_avg_commits"); -commitsAvg.Should().NotBeNull(); -commitsAvg.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/pipeline/average-bucket/average-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/average-bucket/average-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 22dccf26834..00000000000 --- a/docs/aggregations/pipeline/average-bucket/average-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,95 +0,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/Pipeline/AverageBucket/AverageBucketAggregationUsageTests.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! -//// - -[[average-bucket-aggregation-usage]] -=== Average Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.AverageBucket("average_commits_per_month", aaa => aaa - .BucketsPath("projects_started_per_month>commits") - .GapPolicy(GapPolicy.InsertZeros) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new AverageBucketAggregation("average_commits_per_month", "projects_started_per_month>commits") -{ - GapPolicy = GapPolicy.InsertZeros -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "average_commits_per_month": { - "avg_bucket": { - "buckets_path": "projects_started_per_month>commits", - "gap_policy": "insert_zeros" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var averageCommits = response.Aggregations.AverageBucket("average_commits_per_month"); -averageCommits.Should().NotBeNull(); -averageCommits.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/pipeline/bucket-script/bucket-script-aggregation-usage.asciidoc b/docs/aggregations/pipeline/bucket-script/bucket-script-aggregation-usage.asciidoc deleted file mode 100644 index d3c92668439..00000000000 --- a/docs/aggregations/pipeline/bucket-script/bucket-script-aggregation-usage.asciidoc +++ /dev/null @@ -1,149 +0,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/Pipeline/BucketScript/BucketScriptAggregationUsageTests.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! -//// - -[[bucket-script-aggregation-usage]] -=== Bucket Script Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(1) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .Filter("stable_state", f => f - .Filter(ff => ff - .Term(p => p.State, "Stable") - ) - .Aggregations(aaa => aaa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) - ) - .BucketScript("stable_percentage", bs => bs - .BucketsPath(bp => bp - .Add("totalCommits", "commits") - .Add("stableCommits", "stable_state>commits") - ) - .Script(ss => ss.Source("params.stableCommits / params.totalCommits * 100")) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 1, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new FilterAggregation("stable_state") - { - Filter = new TermQuery - { - Field = "state", - Value = "Stable" - }, - Aggregations = new SumAggregation("commits", "numberOfCommits") - } - && new BucketScriptAggregation("stable_percentage", new MultiBucketsPath - { - { "totalCommits", "commits" }, - { "stableCommits", "stable_state>commits" } - }) - { - Script = new InlineScript("params.stableCommits / params.totalCommits * 100") - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 1 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "stable_state": { - "filter": { - "term": { - "state": { - "value": "Stable" - } - } - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "stable_percentage": { - "bucket_script": { - "buckets_path": { - "totalCommits": "commits", - "stableCommits": "stable_state>commits" - }, - "script": { - "source": "params.stableCommits / params.totalCommits * 100" - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -foreach (var item in projectsPerMonth.Buckets) -{ - var stablePercentage = item.BucketScript("stable_percentage"); - stablePercentage.Should().NotBeNull(); - stablePercentage.Value.Should().HaveValue(); -} ----- - diff --git a/docs/aggregations/pipeline/bucket-selector/bucket-selector-aggregation-usage.asciidoc b/docs/aggregations/pipeline/bucket-selector/bucket-selector-aggregation-usage.asciidoc deleted file mode 100644 index 5eca6e67506..00000000000 --- a/docs/aggregations/pipeline/bucket-selector/bucket-selector-aggregation-usage.asciidoc +++ /dev/null @@ -1,108 +0,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/Pipeline/BucketSelector/BucketSelectorAggregationUsageTests.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! -//// - -[[bucket-selector-aggregation-usage]] -=== Bucket Selector Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .BucketSelector("commits_bucket_filter", bs => bs - .BucketsPath(bp => bp - .Add("totalCommits", "commits") - ) - .Script(ss => ss.Source("params.totalCommits >= 500")) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new BucketSelectorAggregation("commits_bucket_filter", new MultiBucketsPath - { - { "totalCommits", "commits" }, - }) - { - Script = new InlineScript("params.totalCommits >= 500") - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_bucket_filter": { - "bucket_selector": { - "buckets_path": { - "totalCommits": "commits" - }, - "script": { - "source": "params.totalCommits >= 500" - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -foreach (var item in projectsPerMonth.Buckets) -{ - var commits = item.Sum("commits"); - commits.Should().NotBeNull(); - commits.Value.Should().BeGreaterOrEqualTo(500); -} ----- - diff --git a/docs/aggregations/pipeline/bucket-sort/bucket-sort-aggregation-usage.asciidoc b/docs/aggregations/pipeline/bucket-sort/bucket-sort-aggregation-usage.asciidoc deleted file mode 100644 index b9548e2d4b7..00000000000 --- a/docs/aggregations/pipeline/bucket-sort/bucket-sort-aggregation-usage.asciidoc +++ /dev/null @@ -1,125 +0,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/Pipeline/BucketSort/BucketSortAggregationUsageTests.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! -//// - -[[bucket-sort-aggregation-usage]] -=== Bucket Sort Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .BucketSort("commits_bucket_sort", bs => bs - .Sort(s => s - .Descending("commits") - ) - .From(0) - .Size(3) - .GapPolicy(GapPolicy.InsertZeros) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new BucketSortAggregation("commits_bucket_sort") - { - Sort = new List - { - new FieldSort { Field = "commits", Order = SortOrder.Descending } - }, - From = 0, - Size = 3, - GapPolicy = GapPolicy.InsertZeros - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_bucket_sort": { - "bucket_sort": { - "sort": [ - { - "commits": { - "order": "desc" - } - } - ], - "from": 0, - "size": 3, - "gap_policy": "insert_zeros" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().Be(3); - -double previousCommits = -1; - -// sum of commits should descend over buckets -foreach (var item in projectsPerMonth.Buckets) -{ - var value = item.Sum("commits").Value; - if (value == null) continue; - - var numberOfCommits = value.Value; - if (Math.Abs(previousCommits - (-1)) > double.Epsilon) - numberOfCommits.Should().BeLessOrEqualTo(previousCommits); - - previousCommits = numberOfCommits; -} ----- - diff --git a/docs/aggregations/pipeline/cumulative-cardinality/cumulative-cardinality-aggregation-usage.asciidoc b/docs/aggregations/pipeline/cumulative-cardinality/cumulative-cardinality-aggregation-usage.asciidoc deleted file mode 100644 index 1a6e95a8087..00000000000 --- a/docs/aggregations/pipeline/cumulative-cardinality/cumulative-cardinality-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Pipeline/CumulativeCardinality/CumulativeCardinalityAggregationUsageTests.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! -//// - -[[cumulative-cardinality-aggregation-usage]] -=== Cumulative Cardinality Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Cardinality("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .CumulativeCardinality("cumulative_commits", d => d - .BucketsPath("commits") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = - new CardinalityAggregation("commits", "numberOfCommits") && - new CumulativeCardinalityAggregation("cumulative_commits", "commits") -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "cardinality": { - "field": "numberOfCommits" - } - }, - "cumulative_commits": { - "cumulative_cardinality": { - "buckets_path": "commits" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -foreach (var item in projectsPerMonth.Buckets) -{ - var commitsDerivative = item.CumulativeCardinality("cumulative_commits"); - commitsDerivative.Should().NotBeNull(); - commitsDerivative.Value.Should().NotBe(null); -} ----- - diff --git a/docs/aggregations/pipeline/cumulative-sum/cumulative-sum-aggregation-usage.asciidoc b/docs/aggregations/pipeline/cumulative-sum/cumulative-sum-aggregation-usage.asciidoc deleted file mode 100644 index ea01cfc6cde..00000000000 --- a/docs/aggregations/pipeline/cumulative-sum/cumulative-sum-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Pipeline/CumulativeSum/CumulativeSumAggregationUsageTests.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! -//// - -[[cumulative-sum-aggregation-usage]] -=== Cumulative Sum Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .CumulativeSum("cumulative_commits", d => d - .BucketsPath("commits") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new CumulativeSumAggregation("cumulative_commits", "commits") -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "cumulative_commits": { - "cumulative_sum": { - "buckets_path": "commits" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -foreach (var item in projectsPerMonth.Buckets) -{ - var commitsDerivative = item.CumulativeSum("cumulative_commits"); - commitsDerivative.Should().NotBeNull(); - commitsDerivative.Value.Should().NotBe(null); -} ----- - diff --git a/docs/aggregations/pipeline/derivative/derivative-aggregation-usage.asciidoc b/docs/aggregations/pipeline/derivative/derivative-aggregation-usage.asciidoc deleted file mode 100644 index bd37ad7f064..00000000000 --- a/docs/aggregations/pipeline/derivative/derivative-aggregation-usage.asciidoc +++ /dev/null @@ -1,98 +0,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/Pipeline/Derivative/DerivativeAggregationUsageTests.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! -//// - -[[derivative-aggregation-usage]] -=== Derivative Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .Derivative("commits_derivative", d => d - .BucketsPath("commits") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new DerivativeAggregation("commits_derivative", "commits") -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_derivative": { - "derivative": { - "buckets_path": "commits" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// derivative not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var commitsDerivative = item.Derivative("commits_derivative"); - commitsDerivative.Should().NotBeNull(); - commitsDerivative.Value.Should().NotBe(null); -} ----- - diff --git a/docs/aggregations/pipeline/extended-stats-bucket/extended-stats-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/extended-stats-bucket/extended-stats-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 778ad6879d9..00000000000 --- a/docs/aggregations/pipeline/extended-stats-bucket/extended-stats-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,104 +0,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/Pipeline/ExtendedStatsBucket/ExtendedStatsBucketAggregationUsageTests.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! -//// - -[[extended-stats-bucket-aggregation-usage]] -=== Extended Stats Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.ExtendedStatsBucket("extended_stats_commits_per_month", aaa => aaa - .BucketsPath("projects_started_per_month>commits") - .Sigma(2.0) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new ExtendedStatsBucketAggregation("extended_stats_commits_per_month", "projects_started_per_month>commits") -{ - Sigma = 2.0 -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "extended_stats_commits_per_month": { - "extended_stats_bucket": { - "buckets_path": "projects_started_per_month>commits", - "sigma": 2.0 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var commitsStats = response.Aggregations.ExtendedStatsBucket("extended_stats_commits_per_month"); -commitsStats.Should().NotBeNull(); -commitsStats.Average.Should().BeGreaterThan(0); -commitsStats.Max.Should().BeGreaterThan(0); -commitsStats.Min.Should().BeGreaterThan(0); -commitsStats.Count.Should().BeGreaterThan(0); -commitsStats.Sum.Should().BeGreaterThan(0); -commitsStats.SumOfSquares.Should().BeGreaterThan(0); -commitsStats.StdDeviation.Should().BeGreaterThan(0); -commitsStats.StdDeviationBounds.Should().NotBeNull(); -commitsStats.StdDeviationBounds.Upper.Should().BeGreaterThan(0); -commitsStats.StdDeviationBounds.Lower.Should().NotBe(0); ----- - diff --git a/docs/aggregations/pipeline/max-bucket/max-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/max-bucket/max-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 08a4058f703..00000000000 --- a/docs/aggregations/pipeline/max-bucket/max-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Pipeline/MaxBucket/MaxBucketAggregationUsageTests.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! -//// - -[[max-bucket-aggregation-usage]] -=== Max Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.MaxBucket("max_commits_per_month", aaa => aaa - .BucketsPath("projects_started_per_month>commits") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new MaxBucketAggregation("max_commits_per_month", "projects_started_per_month>commits") ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "max_commits_per_month": { - "max_bucket": { - "buckets_path": "projects_started_per_month>commits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var maxCommits = response.Aggregations.MaxBucket("max_commits_per_month"); -maxCommits.Should().NotBeNull(); -maxCommits.Value.Should().BeGreaterThan(0); -maxCommits.Keys.Should().NotBeNull(); -maxCommits.Keys.Count.Should().BeGreaterOrEqualTo(1); -foreach (var key in maxCommits.Keys) - key.Should().NotBeNull(); ----- - diff --git a/docs/aggregations/pipeline/min-bucket/min-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/min-bucket/min-bucket-aggregation-usage.asciidoc deleted file mode 100644 index a2edbee3715..00000000000 --- a/docs/aggregations/pipeline/min-bucket/min-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Pipeline/MinBucket/MinBucketAggregationUsageTests.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! -//// - -[[min-bucket-aggregation-usage]] -=== Min Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.MinBucket("min_commits_per_month", aaa => aaa - .BucketsPath("projects_started_per_month>commits") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new MinBucketAggregation("min_commits_per_month", "projects_started_per_month>commits") ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "min_commits_per_month": { - "min_bucket": { - "buckets_path": "projects_started_per_month>commits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var minCommits = response.Aggregations.MinBucket("min_commits_per_month"); -minCommits.Should().NotBeNull(); -minCommits.Value.Should().BeGreaterThan(0); -minCommits.Keys.Should().NotBeNull(); -minCommits.Keys.Count.Should().BeGreaterOrEqualTo(1); -foreach (var key in minCommits.Keys) - key.Should().NotBeNullOrEmpty(); ----- - diff --git a/docs/aggregations/pipeline/moving-average/moving-average-ewma-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-average/moving-average-ewma-aggregation-usage.asciidoc deleted file mode 100644 index 4e6d4b01d32..00000000000 --- a/docs/aggregations/pipeline/moving-average/moving-average-ewma-aggregation-usage.asciidoc +++ /dev/null @@ -1,113 +0,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/Pipeline/MovingAverage/MovingAverageEwmaAggregationUsageTests.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! -//// - -[[moving-average-ewma-aggregation-usage]] -=== Moving Average Ewma Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingAverage("commits_moving_avg", mv => mv - .BucketsPath("commits") - .Model(m => m - .Ewma(e => e - .Alpha(0.3f) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new MovingAverageAggregation("commits_moving_avg", "commits") - { - Model = new EwmaModel - { - Alpha = 0.3f, - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_avg": { - "buckets_path": "commits", - "model": "ewma", - "settings": { - "alpha": 0.3 - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// average not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingAvg = item.MovingAverage("commits_moving_avg"); - movingAvg.Should().NotBeNull(); - movingAvg.Value.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/pipeline/moving-average/moving-average-holt-linear-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-average/moving-average-holt-linear-aggregation-usage.asciidoc deleted file mode 100644 index 727f6f7648d..00000000000 --- a/docs/aggregations/pipeline/moving-average/moving-average-holt-linear-aggregation-usage.asciidoc +++ /dev/null @@ -1,114 +0,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/Pipeline/MovingAverage/MovingAverageHoltLinearAggregationUsageTests.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! -//// - -[[moving-average-holt-linear-aggregation-usage]] -=== Moving Average Holt Linear Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm.Field(p => p.NumberOfCommits)) - .MovingAverage("commits_moving_avg", mv => mv - .BucketsPath("commits") - .Model(m => m - .HoltLinear(hl => hl - .Alpha(0.5f) - .Beta(0.5f) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new MovingAverageAggregation("commits_moving_avg", "commits") - { - Model = new HoltLinearModel - { - Alpha = 0.5f, - Beta = 0.5f - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_avg": { - "buckets_path": "commits", - "model": "holt", - "settings": { - "alpha": 0.5, - "beta": 0.5 - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// average not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingAvg = item.MovingAverage("commits_moving_avg"); - movingAvg.Should().NotBeNull(); - movingAvg.Value.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/pipeline/moving-average/moving-average-holt-winters-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-average/moving-average-holt-winters-aggregation-usage.asciidoc deleted file mode 100644 index 2c67a8f462b..00000000000 --- a/docs/aggregations/pipeline/moving-average/moving-average-holt-winters-aggregation-usage.asciidoc +++ /dev/null @@ -1,145 +0,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/Pipeline/MovingAverage/MovingAverageHoltWintersAggregationUsageTests.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! -//// - -[[moving-average-holt-winters-aggregation-usage]] -=== Moving Average Holt Winters Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingAverage("commits_moving_avg", mv => mv - .BucketsPath("commits") - .Window(4) - .Model(m => m - .HoltWinters(hw => hw - .Type(HoltWintersType.Multiplicative) - .Alpha(0.5f) - .Beta(0.5f) - .Gamma(0.5f) - .Period(2) - .Pad(false) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new MovingAverageAggregation("commits_moving_avg", "commits") - { - Window = 4, - Model = new HoltWintersModel - { - Type = HoltWintersType.Multiplicative, - Alpha = 0.5f, - Beta = 0.5f, - Gamma = 0.5f, - Period = 2, - Pad = false - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_avg": { - "buckets_path": "commits", - "window": 4, - "model": "holt_winters", - "settings": { - "type": "mult", - "alpha": 0.5, - "beta": 0.5, - "gamma": 0.5, - "period": 2, - "pad": false - } - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var bucketCount = 0; -foreach (var item in projectsPerMonth.Buckets) -{ - bucketCount++; - - var commits = item.Sum("commits"); - commits.Should().NotBeNull(); - commits.Value.Should().BeGreaterThan(0); - - var movingAverage = item.MovingAverage("commits_moving_avg"); - - // Moving Average specifies a window of 4 so - // moving average values should exist from 5th bucket onwards - if (bucketCount <= 4) - movingAverage.Should().BeNull(); - else - { - movingAverage.Should().NotBeNull(); - movingAverage.Value.Should().HaveValue(); - } -} ----- - diff --git a/docs/aggregations/pipeline/moving-average/moving-average-linear-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-average/moving-average-linear-aggregation-usage.asciidoc deleted file mode 100644 index ce760d8b0dd..00000000000 --- a/docs/aggregations/pipeline/moving-average/moving-average-linear-aggregation-usage.asciidoc +++ /dev/null @@ -1,109 +0,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/Pipeline/MovingAverage/MovingAverageLinearAggregationUsageTests.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! -//// - -[[moving-average-linear-aggregation-usage]] -=== Moving Average Linear Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingAverage("commits_moving_avg", mv => mv - .BucketsPath("commits") - .GapPolicy(GapPolicy.InsertZeros) - .Model(m => m - .Linear() - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") && - new MovingAverageAggregation("commits_moving_avg", "commits") - { - GapPolicy = GapPolicy.InsertZeros, - Model = new LinearModel() - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_avg": { - "buckets_path": "commits", - "gap_policy": "insert_zeros", - "model": "linear", - "settings": {} - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// average not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingAvg = item.MovingAverage("commits_moving_avg"); - movingAvg.Should().NotBeNull(); - movingAvg.Value.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/pipeline/moving-average/moving-average-simple-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-average/moving-average-simple-aggregation-usage.asciidoc deleted file mode 100644 index 52ada897b97..00000000000 --- a/docs/aggregations/pipeline/moving-average/moving-average-simple-aggregation-usage.asciidoc +++ /dev/null @@ -1,115 +0,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/Pipeline/MovingAverage/MovingAverageSimpleAggregationUsageTests.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! -//// - -[[moving-average-simple-aggregation-usage]] -=== Moving Average Simple Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingAverage("commits_moving_avg", mv => mv - .BucketsPath("commits") - .Window(30) - .Predict(10) - .GapPolicy(GapPolicy.InsertZeros) - .Model(m => m - .Simple() - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new MovingAverageAggregation("commits_moving_avg", "commits") - { - Window = 30, - Predict = 10, - GapPolicy = GapPolicy.InsertZeros, - Model = new SimpleModel() - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_avg": { - "buckets_path": "commits", - "model": "simple", - "window": 30, - "predict": 10, - "gap_policy": "insert_zeros", - "settings": {} - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// average not calculated for the first bucket so movingAvg.Value is expected to be null there -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingAvg = item.Sum("commits_moving_avg"); - movingAvg.Should().NotBeNull(); - movingAvg.Value.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/pipeline/moving-function/moving-function-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-function/moving-function-aggregation-usage.asciidoc deleted file mode 100644 index 65dd66e1c72..00000000000 --- a/docs/aggregations/pipeline/moving-function/moving-function-aggregation-usage.asciidoc +++ /dev/null @@ -1,119 +0,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/Pipeline/MovingFunction/MovingFunctionAggregationUsageTests.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! -//// - -[[moving-function-aggregation-usage]] -=== Moving Function Aggregation Usage - -Given an ordered series of data, the Moving Function aggregation will slide a window across the data and allow -the user to specify a custom script that is executed on each window of data. For convenience, a number of -common functions are predefined such as min/max, moving averages, etc. - -This is conceptually very similar to the Moving Average pipeline aggregation, except it provides more functionality. - -NOTE: Only available in Elasticsearch 6.4.0+ - -Be sure to read the Elasticsearch documentation on {ref_current}/search-aggregations-pipeline-movfn-aggregation.html[Moving Function Aggregation] - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingFunction("commits_moving_avg", mv => mv - .BucketsPath("commits") - .Window(30) - .Shift(0) - .Script("MovingFunctions.unweightedAvg(values)") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new MovingFunctionAggregation("commits_moving_avg", "commits") - { - Window = 30, - Shift = 0, - Script = "MovingFunctions.unweightedAvg(values)" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "commits_moving_avg": { - "moving_fn": { - "buckets_path": "commits", - "window": 30, - "shift": 0, - "script": "MovingFunctions.unweightedAvg(values)" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// average not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingAvg = item.Sum("commits_moving_avg"); - movingAvg.Should().NotBeNull(); - movingAvg.Value.Should().BeGreaterThan(0); -} ----- - diff --git a/docs/aggregations/pipeline/moving-percentiles/moving-percentiles-aggregation-usage.asciidoc b/docs/aggregations/pipeline/moving-percentiles/moving-percentiles-aggregation-usage.asciidoc deleted file mode 100644 index b1932275c96..00000000000 --- a/docs/aggregations/pipeline/moving-percentiles/moving-percentiles-aggregation-usage.asciidoc +++ /dev/null @@ -1,110 +0,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/Pipeline/MovingPercentiles/MovingPercentilesAggregationUsageTests.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! -//// - -[[moving-percentiles-aggregation-usage]] -=== Moving Percentiles Aggregation Usage - -Given an ordered series of percentiles, the Moving Percentile aggregation will slide a window across those -percentiles and allow the user to compute the cumulative percentile. - -This is conceptually very similar to the Moving Function pipeline aggregation, except it works on the percentiles sketches instead of the actual buckets values. - -NOTE: Available in Elasticsearch 7.9.0+ with at least basic license level - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Percentiles("percentiles", sm => sm - .Field(p => p.NumberOfCommits) - ) - .MovingPercentiles("moving_percentiles", mv => mv - .BucketsPath("percentiles") - .Window(10) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new PercentilesAggregation("percentiles", "numberOfCommits") - && new MovingPercentilesAggregation("moving_percentiles", "percentiles") - { - Window = 10 - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "percentiles": { - "percentiles": { - "field": "numberOfCommits" - } - }, - "moving_percentiles": { - "moving_percentiles": { - "buckets_path": "percentiles", - "window": 10 - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -// percentiles not calculated for the first bucket -foreach (var item in projectsPerMonth.Buckets.Skip(1)) -{ - var movingPercentiles = item.MovingPercentiles("moving_percentiles"); - movingPercentiles.Should().NotBeNull(); - movingPercentiles.Items.Should().NotBeNull(); -} ----- - diff --git a/docs/aggregations/pipeline/normalize/normalize-aggregation-usage.asciidoc b/docs/aggregations/pipeline/normalize/normalize-aggregation-usage.asciidoc deleted file mode 100644 index 75eb80baa34..00000000000 --- a/docs/aggregations/pipeline/normalize/normalize-aggregation-usage.asciidoc +++ /dev/null @@ -1,106 +0,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/Pipeline/Normalize/NormalizeAggregationUsageTests.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! -//// - -[[normalize-aggregation-usage]] -=== Normalize Aggregation Usage - -A parent pipeline aggregation which calculates the specific normalized/rescaled value for a specific bucket value. -Values that cannot be normalized, will be skipped using the skip gap policy. - -NOTE: Valid for Elasticsearch 7.9.0+ with at least basic license level - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .Normalize("percent_of_commits", aaa => aaa - .BucketsPath("commits") - .Method(NormalizeMethod.PercentOfSum) - .Format("00.00%") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") && - new NormalizeAggregation("percent_of_commits", "commits") - { - Method = NormalizeMethod.PercentOfSum, - Format = "00.00%" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "percent_of_commits": { - "normalize": { - "buckets_path": "commits", - "method": "percent_of_sum", - "format": "00.00%" - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -foreach (var bucket in projectsPerMonth.Buckets) -{ - var normalize = bucket.Normalize("percent_of_commits"); - normalize.Value.Should().BeGreaterOrEqualTo(0); - normalize.ValueAsString.Should().NotBeNullOrEmpty(); -} ----- - diff --git a/docs/aggregations/pipeline/percentiles-bucket/percentiles-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/percentiles-bucket/percentiles-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 65a32329cf4..00000000000 --- a/docs/aggregations/pipeline/percentiles-bucket/percentiles-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,101 +0,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/Pipeline/PercentilesBucket/PercentilesBucketAggregationUsageTests.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! -//// - -[[percentiles-bucket-aggregation-usage]] -=== Percentiles Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.PercentilesBucket("commits_outlier", aaa => aaa - .BucketsPath("projects_started_per_month>commits") - .Percents(95, 99, 99.9) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new PercentilesBucketAggregation("commits_outlier", "projects_started_per_month>commits") -{ - Percents = new[] { 95, 99, 99.9 } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "commits_outlier": { - "percentiles_bucket": { - "buckets_path": "projects_started_per_month>commits", - "percents": [ - 95.0, - 99.0, - 99.9 - ] - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var commitsOutlier = response.Aggregations.PercentilesBucket("commits_outlier"); -commitsOutlier.Should().NotBeNull(); -commitsOutlier.Items.Should().NotBeNullOrEmpty(); -foreach (var item in commitsOutlier.Items) - item.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/pipeline/serial-differencing/serial-differencing-aggregation-usage.asciidoc b/docs/aggregations/pipeline/serial-differencing/serial-differencing-aggregation-usage.asciidoc deleted file mode 100644 index 8533e23b294..00000000000 --- a/docs/aggregations/pipeline/serial-differencing/serial-differencing-aggregation-usage.asciidoc +++ /dev/null @@ -1,117 +0,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/Pipeline/SerialDifferencing/SerialDifferencingAggregationUsageTests.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! -//// - -[[serial-differencing-aggregation-usage]] -=== Serial Differencing Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .MinimumDocumentCount(0) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - .SerialDifferencing("second_difference", d => d - .BucketsPath("commits") - .Lag(2) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - MinimumDocumentCount = 0, - Aggregations = - new SumAggregation("commits", "numberOfCommits") - && new SerialDifferencingAggregation("second_difference", "commits") - { - Lag = 2 - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month", - "min_doc_count": 0 - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - }, - "second_difference": { - "serial_diff": { - "buckets_path": "commits", - "lag": 2 - } - } - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var differenceCount = 0; - -foreach (var item in projectsPerMonth.Buckets) -{ - differenceCount++; - var commits = item.Sum("commits"); - commits.Should().NotBeNull(); - commits.Value.Should().NotBe(null); - - var secondDifference = item.SerialDifferencing("second_difference"); - - // serial differencing specified a lag of 2, so - // only expect values from the 3rd bucket onwards - if (differenceCount <= 2) - secondDifference.Should().BeNull(); - else - { - secondDifference.Should().NotBeNull(); - secondDifference.Value.Should().NotBe(null); - } -} ----- - diff --git a/docs/aggregations/pipeline/stats-bucket/stats-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/stats-bucket/stats-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 44ae91b0f33..00000000000 --- a/docs/aggregations/pipeline/stats-bucket/stats-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,94 +0,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/Pipeline/StatsBucket/StatsBucketAggregationUsageTests.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! -//// - -[[stats-bucket-aggregation-usage]] -=== Stats Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.StatsBucket("stats_commits_per_month", aaa => aaa - .BucketsPath("projects_started_per_month>commits") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new StatsBucketAggregation("stats_commits_per_month", "projects_started_per_month>commits") ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "stats_commits_per_month": { - "stats_bucket": { - "buckets_path": "projects_started_per_month>commits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var commitsStats = response.Aggregations.StatsBucket("stats_commits_per_month"); -commitsStats.Should().NotBeNull(); -commitsStats.Average.Should().BeGreaterThan(0); -commitsStats.Max.Should().BeGreaterThan(0); -commitsStats.Min.Should().BeGreaterThan(0); -commitsStats.Count.Should().BeGreaterThan(0); -commitsStats.Sum.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/pipeline/sum-bucket/sum-bucket-aggregation-usage.asciidoc b/docs/aggregations/pipeline/sum-bucket/sum-bucket-aggregation-usage.asciidoc deleted file mode 100644 index 7d8c0f5d416..00000000000 --- a/docs/aggregations/pipeline/sum-bucket/sum-bucket-aggregation-usage.asciidoc +++ /dev/null @@ -1,90 +0,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/Pipeline/SumBucket/SumBucketAggregationUsageTests.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! -//// - -[[sum-bucket-aggregation-usage]] -=== Sum Bucket Aggregation Usage - -==== Fluent DSL example - -[source,csharp] ----- -a => a -.DateHistogram("projects_started_per_month", dh => dh - .Field(p => p.StartedOn) - .CalendarInterval(DateInterval.Month) - .Aggregations(aa => aa - .Sum("commits", sm => sm - .Field(p => p.NumberOfCommits) - ) - ) -) -.SumBucket("sum_of_commits", aaa => aaa - .BucketsPath("projects_started_per_month>commits") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateHistogramAggregation("projects_started_per_month") -{ - Field = "startedOn", - CalendarInterval = DateInterval.Month, - Aggregations = new SumAggregation("commits", "numberOfCommits") -} -&& new SumBucketAggregation("sum_of_commits", "projects_started_per_month>commits") ----- - -[source,javascript] -.Example json output ----- -{ - "projects_started_per_month": { - "date_histogram": { - "field": "startedOn", - "calendar_interval": "month" - }, - "aggs": { - "commits": { - "sum": { - "field": "numberOfCommits" - } - } - } - }, - "sum_of_commits": { - "sum_bucket": { - "buckets_path": "projects_started_per_month>commits" - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var projectsPerMonth = response.Aggregations.DateHistogram("projects_started_per_month"); -projectsPerMonth.Should().NotBeNull(); -projectsPerMonth.Buckets.Should().NotBeNull(); -projectsPerMonth.Buckets.Count.Should().BeGreaterThan(0); - -var commitsSum = response.Aggregations.SumBucket("sum_of_commits"); -commitsSum.Should().NotBeNull(); -commitsSum.Value.Should().BeGreaterThan(0); ----- - diff --git a/docs/aggregations/reserved-aggregation-names.asciidoc b/docs/aggregations/reserved-aggregation-names.asciidoc deleted file mode 100644 index 88fd6e82664..00000000000 --- a/docs/aggregations/reserved-aggregation-names.asciidoc +++ /dev/null @@ -1,36 +0,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/ReservedAggregationNames.doc.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! -//// - -[[reserved-aggregation-names]] -=== Reserved aggregation names - -NEST uses a heuristics based parser to parse the aggregations back in to typed responses. -Because of this, some of the key properties we use to make decisions about parsing are not allowed as key names -for aggregations in a request. - -Elasticsearch 5.x will at some point get a flag that returns the aggregations in a parsable -fashion. when this happens, this limitation will be lifted but until that time, avoid the following names for -aggregation keys: - -[source,csharp] ----- -new [] -{ - "score", - "value_as_string", - "keys", - "max_score" -} ----- - diff --git a/docs/aggregations/writing-aggregations.asciidoc b/docs/aggregations/writing-aggregations.asciidoc deleted file mode 100644 index e6887dfd817..00000000000 --- a/docs/aggregations/writing-aggregations.asciidoc +++ /dev/null @@ -1,279 +0,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/WritingAggregations.doc.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! -//// - -[[writing-aggregations]] -=== Writing aggregations - -NEST allows you to write your aggregations using - -* a strict fluent DSL - -* a verbatim object initializer syntax that maps verbatim to the Elasticsearch API - -* a more terse object initializer aggregation DSL - -Three different ways, yikes that's a lot to take in! Let's go over them one at a time and explain when you might -want to use each. - -This is the json output for each example - -[source,javascript] ----- -{ - "aggs": { - "name_of_child_agg": { - "children": { - "type": "commits" - }, - "aggs": { - "average_per_child": { - "avg": { - "field": "confidenceFactor" - } - }, - "max_per_child": { - "max": { - "field": "confidenceFactor" - } - }, - "min_per_child": { - "min": { - "field": "confidenceFactor" - } - } - } - } - } -} ----- - -[float] -=== Fluent DSL - -The fluent lambda syntax is the most terse way to write aggregations. -It benefits from types that are carried over to sub aggregations - -==== Fluent DSL example - -[source,csharp] ----- -s => s -.Aggregations(aggs => aggs - .Children("name_of_child_agg", child => child - .Aggregations(childAggs => childAggs - .Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Min("min_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - ) - ) -) ----- - -[float] -=== Object Initializer syntax - -The object initializer syntax (OIS) is a one-to-one mapping with how aggregations -have to be represented in the Elasticsearch API. While it has the benefit of being a one-to-one -mapping, being dictionary based in C# means it can grow verbose rather quickly. - -Here are the same aggregations as expressed in the Fluent API above, with the dictionary-based -object initializer syntax - -==== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Aggregations = new AggregationDictionary - { - { - "name_of_child_agg", new ChildrenAggregation("name_of_child_agg", typeof(CommitActivity)) - { - Aggregations = new AggregationDictionary - { - {"average_per_child", new AverageAggregation("average_per_child", "confidenceFactor")}, - {"max_per_child", new MaxAggregation("max_per_child", "confidenceFactor")}, - {"min_per_child", new MinAggregation("min_per_child", "confidenceFactor")}, - } - } - } - } -} ----- - -As you can see, the key in the dictionary is repeated as the name passed to the aggregation constructor. -This starts to get hard to read and a little error prone, wouldn't you agree? - -There is a better way however... - -[float] -=== Terse Object Initializer syntax - -The Object Initializer syntax can be shortened dramatically by using `*Aggregation` types directly, -allowing you to forego the need to introduce intermediary dictionaries to represent the aggregation DSL. -In using these, it is also possible to combine multiple aggregations using the bitwise `&&` operator. - -Compare the following example with the previous vanilla Object Initializer syntax - -==== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Aggregations = new ChildrenAggregation("name_of_child_agg", typeof(CommitActivity)) - { - Aggregations = - new AverageAggregation("average_per_child", Field(p => p.ConfidenceFactor)) - && new MaxAggregation("max_per_child", Field(p => p.ConfidenceFactor)) - && new MinAggregation("min_per_child", Field(p => p.ConfidenceFactor)) - } -} ----- - -Now that's much cleaner! Assigning an `*Aggregation` type directly to the `Aggregation` property - on a search request works because there are implicit conversions within NEST to handle this for you. - -[float] -=== Mixed usage of object initializer and fluent - -Sometimes its useful to mix and match fluent and object initializer, the fluent Aggregations method therefore -also accepts `AggregationDictionary` directly. - -==== Fluent DSL example - -[source,csharp] ----- -s => s -.Aggregations(new ChildrenAggregation("name_of_child_agg", typeof(CommitActivity)) -{ - Aggregations = - new AverageAggregation("average_per_child", Field(p => p.ConfidenceFactor)) - && new MaxAggregation("max_per_child", Field(p => p.ConfidenceFactor)) - && new MinAggregation("min_per_child", Field(p => p.ConfidenceFactor)) -}) ----- - -[float] -=== Binary operators off the same descriptor - -For dynamic aggregation building using the fluent syntax, -it can be useful to abstract the construction to methods as much as possible. -You can use the binary operator `&&` on the same aggregation descriptor to compose the graph. -Each side of the binary operation can return null dynamically. - -[source,csharp] ----- -s => s -.Aggregations(aggs => aggs - .Children("name_of_child_agg", child => child - .Aggregations(Combine) - ) -) ----- - -[float] -=== Returning a different AggregationContainer in fluent syntax - -All the fluent selector expects is an `IAggregationContainer` to be returned. You could abstract this to a -method returning `AggregationContainer` which is free to use the object initializer syntax -to compose that `AggregationContainer`. - -[source,csharp] ----- -s => s -.Aggregations(aggs => aggs - .Children("name_of_child_agg", child => child - .Aggregations(childAggs => Combine()) - ) -) ----- - -[float] -=== Aggregating over a collection of aggregations - -An advanced scenario may involve an existing collection of aggregation functions that should be set as aggregations -on the request. Using LINQ's `.Aggregate()` method, each function can be applied to the aggregation descriptor -(`childAggs` below) in turn, returning the descriptor after each function application. - -[source,csharp] ----- -var aggregations = - new List, IAggregationContainer>> <1> - { - a => a.Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor)), - a => a.Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor)), - a => a.Min("min_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - }; - -return s => s - .Aggregations(aggs => aggs - .Children("name_of_child_agg", child => child - .Aggregations(childAggs => - aggregations.Aggregate(childAggs, (acc, agg) => - { - agg(acc); - return acc; - }) <2> - ) - ) - ); ----- -<1> a list of aggregation functions to apply -<2> Using LINQ's `Aggregate()` function to accumulate/apply all of the aggregation functions - -[[handling-aggregate-response]] -[float] -=== Handling responses - -The `SearchResponse` exposes an `AggregateDictionary` which is specialized dictionary over `` that also -exposes handy helper methods that automatically cast `IAggregate` to the expected aggregate response. - -Let's see this in action: - -[source,csharp] ----- -a => a -.Children("name_of_child_agg", child => child - .Aggregations(childAggs => childAggs - .Average("average_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Max("max_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - .Min("min_per_child", avg => avg.Field(p => p.ConfidenceFactor)) - ) -) ----- - -Now, using `.Aggregations`, we can easily get the `Children` aggregation response out and from that, -the `Average` and `Max` sub aggregations. - -==== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -var childAggregation = response.Aggregations.Children("name_of_child_agg"); - -var averagePerChild = childAggregation.Average("average_per_child"); - -averagePerChild.Should().NotBeNull(); <1> - -var maxPerChild = childAggregation.Max("max_per_child"); - -maxPerChild.Should().NotBeNull(); <2> ----- -<1> Do something with the average per child. Here we just assert it's not null -<2> Do something with the max per child. Here we just assert it's not null - diff --git a/docs/analysis-chain.png b/docs/analysis-chain.png deleted file mode 100644 index 59802984fd0ccb0246f3e647ca33e28ccffdf616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143338 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 z%0A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

xF{o30Qgz4;QX?39)Nws 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 Uk~n|#!9L5zmn{rl|LPp`KXU+Jp#T5? diff --git a/docs/analysis/analysis-usage.asciidoc b/docs/analysis/analysis-usage.asciidoc deleted file mode 100644 index 73c404d155e..00000000000 --- a/docs/analysis/analysis-usage.asciidoc +++ /dev/null @@ -1,24 +0,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/Analysis/AnalysisUsageTests.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! -//// - -[[analysis-usage]] -=== Analysis Usage - -==== Fluent DSL example - -[source,csharp] ----- -Wrap(an => set(an, Apply((t, a) => fluent(a)(a.Name, t)))) ----- - diff --git a/docs/analysis/token-filters/token-filter-usage.asciidoc b/docs/analysis/token-filters/token-filter-usage.asciidoc deleted file mode 100644 index dda77f8b1e7..00000000000 --- a/docs/analysis/token-filters/token-filter-usage.asciidoc +++ /dev/null @@ -1,327 +0,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/Analysis/TokenFilters/TokenFilterUsageTests.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! -//// - -[[token-filter-usage]] -=== Token Filter Usage - -==== Fluent DSL example - -[source,csharp] ----- -FluentExample ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -InitializerExample ----- - -[source,javascript] -.Example json output ----- -{ - "analysis": { - "filter": { - "myAscii": { - "type": "asciifolding", - "preserve_original": true - }, - "myCommonGrams": { - "type": "common_grams", - "common_words": [ - "x", - "y", - "z" - ], - "ignore_case": true, - "query_mode": true - }, - "mydp": { - "type": "delimited_payload", - "delimiter": "-", - "encoding": "identity" - }, - "dcc": { - "type": "dictionary_decompounder", - "word_list": [ - "x", - "y", - "z" - ], - "min_word_size": 2, - "min_subword_size": 2, - "max_subword_size": 2, - "only_longest_match": true - }, - "etf": { - "type": "edge_ngram", - "min_gram": 1, - "max_gram": 2 - }, - "elision": { - "type": "elision", - "articles": [ - "a", - "b", - "c" - ] - }, - "hunspell": { - "type": "hunspell", - "locale": "en_US", - "dictionary": "path_to_dict", - "dedup": true, - "longest_only": true - }, - "hypdecomp": { - "type": "hyphenation_decompounder", - "word_list": [ - "x", - "y", - "z" - ], - "min_word_size": 2, - "min_subword_size": 2, - "max_subword_size": 2, - "only_longest_match": true, - "hyphenation_patterns_path": "analysis/fop.xml" - }, - "keeptypes": { - "type": "keep_types", - "types": [ - "", - "" - ] - }, - "icuc": { - "alternate": "non-ignorable", - "caseFirst": "lower", - "caseLevel": true, - "country": "DE", - "decomposition": "no", - "hiraganaQuaternaryMode": true, - "language": "de", - "numeric": true, - "strength": "tertiary", - "type": "icu_collation", - "variant": "@collation=phonebook" - }, - "icuf": { - "type": "icu_folding", - "unicodeSetFilter": "[^åäöÅÄÖ]" - }, - "icun": { - "name": "nfc", - "type": "icu_normalizer" - }, - "icut": { - "dir": "forward", - "id": "Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC", - "type": "icu_transform" - }, - "keepwords": { - "type": "keep", - "keep_words": [ - "a", - "b", - "c" - ], - "keep_words_case": true - }, - "marker": { - "type": "keyword_marker", - "keywords": [ - "a", - "b" - ], - "ignore_case": true - }, - "kfr": { - "type": "kuromoji_readingform", - "use_romaji": true - }, - "kpos": { - "stoptags": [ - "# verb-main:", - "動詞-自立" - ], - "type": "kuromoji_part_of_speech" - }, - "ks": { - "minimum_length": 4, - "type": "kuromoji_stemmer" - }, - "kstem": { - "type": "kstem" - }, - "length": { - "type": "length", - "min": 10, - "max": 200 - }, - "limit": { - "type": "limit", - "max_token_count": 12, - "consume_all_tokens": true - }, - "lc": { - "type": "lowercase" - }, - "ngram": { - "type": "ngram", - "min_gram": 3, - "max_gram": 4 - }, - "pc": { - "type": "pattern_capture", - "patterns": [ - "\\d", - "\\w" - ], - "preserve_original": true - }, - "pr": { - "type": "pattern_replace", - "pattern": "(\\d|\\w)", - "replacement": "replacement" - }, - "porter": { - "type": "porter_stem" - }, - "rev": { - "type": "reverse" - }, - "shing": { - "type": "shingle", - "min_shingle_size": 8, - "max_shingle_size": 10, - "output_unigrams": true, - "output_unigrams_if_no_shingles": true, - "token_separator": "|", - "filler_token": "x" - }, - "snow": { - "type": "snowball", - "language": "Dutch" - }, - "standard": { - "type": "standard" - }, - "stem": { - "type": "stemmer", - "language": "arabic" - }, - "stemo": { - "type": "stemmer_override", - "rules_path": "analysis/custom_stems.txt" - }, - "stop": { - "type": "stop", - "stopwords": [ - "x", - "y", - "z" - ], - "ignore_case": true, - "remove_trailing": true - }, - "syn": { - "type": "synonym", - "synonyms_path": "analysis/stopwords.txt", - "format": "wordnet", - "synonyms": [ - "x=>y", - "z=>s" - ], - "expand": true, - "tokenizer": "whitespace" - }, - "syn_graph": { - "type": "synonym_graph", - "synonyms_path": "analysis/stopwords.txt", - "format": "wordnet", - "synonyms": [ - "x=>y", - "z=>s" - ], - "expand": true, - "tokenizer": "whitespace" - }, - "trimmer": { - "type": "trim" - }, - "truncer": { - "type": "truncate", - "length": 100 - }, - "uq": { - "type": "unique", - "only_on_same_position": true - }, - "upper": { - "type": "uppercase" - }, - "wd": { - "type": "word_delimiter", - "generate_word_parts": true, - "generate_number_parts": true, - "catenate_words": true, - "catenate_numbers": true, - "catenate_all": true, - "split_on_case_change": true, - "preserve_original": true, - "split_on_numerics": true, - "stem_english_possessive": true, - "protected_words": [ - "x", - "y", - "z" - ] - }, - "wdg": { - "type": "word_delimiter_graph", - "generate_word_parts": true, - "generate_number_parts": true, - "ignore_keywords": true, - "catenate_words": true, - "catenate_numbers": true, - "catenate_all": true, - "split_on_case_change": true, - "preserve_original": true, - "split_on_numerics": true, - "stem_english_possessive": true, - "protected_words": [ - "x", - "y", - "z" - ] - }, - "phonetic": { - "type": "phonetic", - "encoder": "beider_morse", - "rule_type": "exact", - "name_type": "sephardic", - "languageset": [ - "cyrillic", - "english", - "hebrew" - ] - } - } - } -} ----- - diff --git a/docs/breaking-changes.asciidoc b/docs/breaking-changes.asciidoc deleted file mode 100644 index 5fc36859da8..00000000000 --- a/docs/breaking-changes.asciidoc +++ /dev/null @@ -1,24 +0,0 @@ -= Breaking changes - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/breaking-changes.asciidoc. -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! -//// - -[partintro] --- -There are a number of breaking changes when going from 6.x to 7.x - -* <> - -* <> - --- - -include::7.0-breaking-changes/elasticsearch-net-breaking-changes.asciidoc[] - -include::7.0-breaking-changes/nest-breaking-changes.asciidoc[] - diff --git a/docs/capture-requests-localhost.png b/docs/capture-requests-localhost.png deleted file mode 100644 index 3730681e5ed51bb404c43e81bfeec1483383f8d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160000 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

    KCd$w*E*S1# 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�m{ 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 O>4u?&0b1`)?Ee7#x@!pl diff --git a/docs/capture-requests-remotehost.png b/docs/capture-requests-remotehost.png deleted file mode 100644 index 26a913d2cbe2851f3e7140a2596f36d66413f190..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76047 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

    !`b7b9W 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 diff --git a/docs/class.png b/docs/class.png deleted file mode 100644 index bbc981cfe7a051af0152d2d83baaf219f33f60dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66942 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

    B!o{oqhzUmEI=OF53x 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

    im|0LnTy6JLiD3PxM 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 diff --git a/docs/client-concepts/certificates/working-with-certificates.asciidoc b/docs/client-concepts/certificates/working-with-certificates.asciidoc deleted file mode 100644 index 7cf8e9879d9..00000000000 --- a/docs/client-concepts/certificates/working-with-certificates.asciidoc +++ /dev/null @@ -1,122 +0,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/ClientConcepts/Certificates/WorkingWithCertificates.doc.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! -//// - -[[working-with-certificates]] -=== Working with certificates - -If you've enabled SSL on Elasticsearch with https://www.elastic.co/products/elastic-stack[Elastic Stack Security features], or through a -proxy in front of Elasticsearch, and the Certificate Authority (CA) -that generated the certificate is trusted by the machine running the client code, there should be nothing for you to do to talk -to the cluster over HTTPS with the client. - -If you are using your own CA which is not trusted however, .NET won't allow you to make HTTPS calls to that endpoint by default. -With .NET Framework, you can pre-empt this though a custom validation callback on the global static -`ServicePointManager.ServerCertificateValidationCallback`. Most examples you will find doing this this will simply return `true` from the -validation callback and merrily whistle off into the sunset. **This is not advisable** as it allows *any* HTTPS traffic through in the -current `AppDomain` *without* any validation. Here's a concrete example: - -Imagine you deploy a web application that talks to Elasticsearch over HTTPS using NEST, and also uses some third party SOAP/WSDL endpoint. -By setting the following - -[source,csharp] ----- -ServicePointManager.ServerCertificateValidationCallback += -(sender, cert, chain, errors) => true ----- - -validation will not be performed for HTTPS connections to *both* Elasticsearch *and* that external web service. - -==== Validation configuration - -It's possible to also set a callback per service endpoint with .NET, and both Elasticsearch.NET and NEST expose this through -connection settings (`ConnectionConfiguration` with Elasticsearch.Net and `ConnectionSettings` with NEST). You can do -your own validation in that handler or use one of the baked in handlers that we ship with out of the box, on the static class -`CertificateValidations`. - -The two most basic ones are `AllowAll` and `DenyAll`, which accept or deny all SSL traffic to our nodes, respectively. Here's -a couple of examples. - -===== Denying all certificate validation - -Here we set up `ConnectionSettings` with a validation callback that denies all certificate validation - -[source,csharp] ----- -[IntegrationOnly] -public class DenyAllCertificatesCluster : SslAndKpiXPackCluster -{ - protected override ConnectionSettings ConnectionSettings(ConnectionSettings s) => s - .ServerCertificateValidationCallback((o, certificate, chain, errors) => false) - .ServerCertificateValidationCallback(CertificateValidations.DenyAll); <1> -} ----- -<1> use a lambda expression or `CertificateValidations.DenyAll` to deny all validation - -===== Allowing all certificate validation - -Here we set up `ConnectionSettings` with a validation callback that allows all certificate validation - -[source,csharp] ----- -public class AllowAllCertificatesCluster : SslAndKpiXPackCluster -{ - protected override ConnectionSettings ConnectionSettings(ConnectionSettings s) => s - .ServerCertificateValidationCallback((o, certificate, chain, errors) => true) <1> - .ServerCertificateValidationCallback(CertificateValidations.AllowAll); <1> -} ----- -<1> use a lambda expression or `CertificateValidations.AllowAll` to allow all validation - -===== Allowing certificates from a Certificate Authority - -If your client application has access to the public CA certificate locally, Elasticsearch.NET and NEST ship with some handy helpers -that can assert that a certificate the server presents is one that came from the local CA. - -If you use {ref_current}/certutil.html[`elasticsearch-certutil` tool] to generate SSL certificates, the generated node certificate -does not include the CA in the certificate chain, in order to cut down on SSL handshake size. In those case you can use -`CertificateValidations.AuthorityIsRoot` and pass it your local copy of the CA public key to assert that -the certificate the server presented was generated using it - -[source,csharp] ----- -[IntegrationOnly] -public class CertgenCaCluster : SslAndKpiXPackCluster -{ - public CertgenCaCluster() : base() { } - public CertgenCaCluster(SslAndKpiClusterConfiguration configuration) : base(configuration) { } - protected override ConnectionSettings ConnectionSettings(ConnectionSettings s) => s - .ServerCertificateValidationCallback( - CertificateValidations.AuthorityIsRoot(new X509Certificate(this.ClusterConfiguration.FileSystem.CaCertificate)) - ); -} ----- - -If your local copy does not match the server's CA, the client will fail to connect - -[source,csharp] ----- -[IntegrationOnly] -public class BadCertgenCaCluster : SslAndKpiXPackCluster -{ - protected override ConnectionSettings ConnectionSettings(ConnectionSettings s) => s - .ServerCertificateValidationCallback( - CertificateValidations.AuthorityPartOfChain(new X509Certificate(this.ClusterConfiguration.FileSystem.UnusedCaCertificate)) - ); -} ----- - -If you go for a vendor generated SSL certificate, it's common practice for the certificate to include the CA _and_ any intermediary CAs -in the certificate chain. When using such a certificate, use `CertificateValidations.AuthorityPartOfChain` which validates that -the local CA certificate is part of the chain that was used to generate the servers key. - diff --git a/docs/client-concepts/client-concepts.asciidoc b/docs/client-concepts/client-concepts.asciidoc new file mode 100644 index 00000000000..6b333b44615 --- /dev/null +++ b/docs/client-concepts/client-concepts.asciidoc @@ -0,0 +1,26 @@ +[[client-concepts]] += Client concepts + +The .NET client for {es} maps closely to the original {es} API. All +requests and responses are exposed through types, making it ideal for getting up and running quickly. + +[[serialization]] +== Serialization + +By default, the .NET client for {es} uses the Microsoft System.Text.Json library for serialization. The client understands how to serialize and +deserialize the request and response types correctly. It also handles (de)serialization of user POCO types representing documents read or written to {es}. + +The client has two distinct serialization responsibilities - serialization of the types owned by the `Elastic.Clients.Elasticsearch` library and serialization of source documents, modeled in application code. The first responsibility is entirely internal; the second is configurable. + +[[source-serialization]] +=== Source serialization + +Source serialization refers to the process of (de)serializing POCO types in consumer applications as source documents indexed and retrieved from {es}. A source serializer implementation handles serialization, with the default implementation using the `System.Text.Json` library. As a result, you may use `System.Text.Json` attributes and converters to control the serialization behavior. + +* <> + +* <> + +include::serialization/modeling-documents-with-types.asciidoc[] + +include::serialization/custom-serialization.asciidoc[] diff --git a/docs/client-concepts/connection-pooling/building-blocks/connection-pooling.asciidoc b/docs/client-concepts/connection-pooling/building-blocks/connection-pooling.asciidoc deleted file mode 100644 index 50ccac87ff0..00000000000 --- a/docs/client-concepts/connection-pooling/building-blocks/connection-pooling.asciidoc +++ /dev/null @@ -1,252 +0,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/ClientConcepts/ConnectionPooling/BuildingBlocks/ConnectionPooling.doc.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! -//// - -[[connection-pooling]] -=== Connection pools - -Connection pooling is the internal mechanism that takes care of registering what nodes there are in the cluster and which -NEST can use to issue client calls on. - -[IMPORTANT] --- -Despite the name, a connection pool in NEST is **not** like connection pooling that you may be familiar with from -https://msdn.microsoft.com/en-us/library/bb399543(v=vs.110).aspx[interacting with a database using ADO.Net]; for example, -a connection pool in NEST is **not** responsible for managing an underlying pool of TCP connections to Elasticsearch, -this is https://blogs.msdn.microsoft.com/adarshk/2005/01/02/understanding-system-net-connection-management-and-servicepointmanager/[handled by the ServicePointManager in Desktop CLR]. - --- - -So, what is a connection pool in NEST responsible for? It is responsible for managing the nodes in an Elasticsearch -cluster to which a connection can be made and there is one instance of an `IConnectionPool` associated with an -instance of `ConnectionSettings`. Since a single client and connection settings -instance is recommended for the life of the application, the lifetime of a -single connection pool instance will also be bound to the lifetime of the -application. - -There are five types of connection pool - -* <> - -* <> - -* <> - -* <> - -* <> - -[[single-node-connection-pool]] -==== SingleNodeConnectionPool - -The simplest of all connection pools and the default if no connection pool is explicitly passed to the `ConnectionSettings` constructor. -It takes a single `Uri` and uses that to connect to Elasticsearch for all the calls. Single node connection pool doesn't opt in to -sniffing or pinging behavior and will never mark nodes dead or alive. The one `Uri` it holds is always ready to go. - -Single node connection pool is the pool to use if your cluster contains only a single node or you are interacting with -your cluster through a single load balancer instance. - -[source,csharp] ----- -var uri = new Uri("http://localhost:9201"); -var pool = new SingleNodeConnectionPool(uri); -var client = new ElasticClient(new ConnectionSettings(pool)); ----- - -This type of pool is hardwired to opt out of reseeding (<>) as well as <> - -When you use the low ceremony `ElasticClient` constructor that takes a single `Uri`, -internally a `SingleNodeConnectionPool` is used - -[source,csharp] ----- -client = new ElasticClient(uri); ----- - -However we encourage you to pass connection settings explicitly. - -[[cloud-connection-pool]] -==== CloudConnectionPool - -A specialized subclass of `SingleNodeConnectionPool` that accepts a Cloud Id and credentials. -When used the client will also pick Elastic Cloud optimized defaults for the connection settings. - -A Cloud Id for your cluster can be fetched from your Elastic Cloud cluster administration console. - -A Cloud Id should be in the form of `cluster_name:base_64_data` where `base_64_data` are the UUIDs for the services in this cloud instance e.g - -`host_name$elasticsearch_uuid$kibana_uuid$apm_uuid` - -Out of these, only `host_name` and `elasticsearch_uuid` are always available. - -A cloud connection pool can be created using credentials and a `cloudId` - -[source,csharp] ----- -var credentials = new BasicAuthentication("username", "password"); <1> -var pool = new CloudConnectionPool(cloudId, credentials); <2> -var client = new ElasticClient(new ConnectionSettings(pool)); ----- -<1> a username and password that can access Elasticsearch service on Elastic Cloud -<2> `cloudId` is a value that can be retrieved from the Elastic Cloud web console - -This type of pool, like its parent the `SingleNodeConnectionPool`, is hardwired to opt out of -reseeding (<>) as well as <>. - -You can also directly create a cloud enabled connection using the `ElasticClient`'s constructor - -[source,csharp] ----- -client = new ElasticClient(cloudId, credentials); ----- - -[[static-connection-pool]] -==== StaticConnectionPool - -The static connection pool is great if you have a known small sized cluster and do no want to enable -sniffing to find out the cluster topology. - -Given a collection of `Uri` - -[source,csharp] ----- -var uris = Enumerable.Range(9200, 5) - .Select(port => new Uri($"http://localhost:{port}")); ----- - -a connection pool can be seeded with this collection - -[source,csharp] ----- -var pool = new StaticConnectionPool(uris); -var client = new ElasticClient(new ConnectionSettings(pool)); ----- - -Or using an enumerable of `Node` - -[source,csharp] ----- -var nodes = uris.Select(u => new Node(u)); -pool = new StaticConnectionPool(nodes); -client = new ElasticClient(new ConnectionSettings(pool)); ----- - -This type of pool is hardwired to opt out of reseeding -(<>) but supports <> when enabled. - -[[sniffing-connection-pool]] -==== SniffingConnectionPool - -A pool derived from `StaticConnectionPool`, a sniffing connection pool allows itself to be reseeded at run time. -It comes with the very minor overhead of a `ReaderWriterLockSlim` to ensure thread safety. - -Given a collection of `Uri` - -[source,csharp] ----- -var uris = Enumerable.Range(9200, 5) - .Select(port => new Uri($"http://localhost:{port}")); ----- - -a connection pool can be seeded using an enumerable of `Uri` - -[source,csharp] ----- -var pool = new SniffingConnectionPool(uris); -var client = new ElasticClient(new ConnectionSettings(pool)); ----- - -Or using an enumerable of `Node`. A major benefit in using nodes is that you can include -known node roles when seeding, which NEST can then use to favour particular API requests. For example, -sniffing on master eligible nodes first, and take master only nodes out of rotation for issuing client calls on. - -[source,csharp] ----- -var nodes = uris.Select(u=>new Node(u)); -pool = new SniffingConnectionPool(nodes); -client = new ElasticClient(new ConnectionSettings(pool)); ----- - -This type of pool is hardwired to opt in to reseeding (<>), and <> - -[[sticky-connection-pool]] -==== StickyConnectionPool - -A type of connection pool that returns the first live node to issue a request against, such that the node is _sticky_ between requests. -It uses https://msdn.microsoft.com/en-us/library/system.threading.interlocked(v=vs.110).aspx[`System.Threading.Interlocked`] -to keep an _indexer_ to the last live node in a thread safe manner. - -Given a collection of `Uri` - -[source,csharp] ----- -var uris = Enumerable.Range(9200, 5) - .Select(port => new Uri($"http://localhost:{port}")); ----- - -a connection pool can be seeded using an enumerable of `Uri` - -[source,csharp] ----- -var pool = new StickyConnectionPool(uris); -var client = new ElasticClient(new ConnectionSettings(pool)); ----- - -Or using an enumerable of `Node`, similar to `SniffingConnectionPool` - -[source,csharp] ----- -var nodes = uris.Select(u=>new Node(u)); -pool = new StickyConnectionPool(nodes); -client = new ElasticClient(new ConnectionSettings(pool)); ----- - -This type of pool is hardwired to opt out of reseeding (<>), but does support <>. - -[[sticky-sniffing-connection-pool]] -==== Sticky Sniffing Connection Pool - -A type of connection pool that returns the first live node to issue a request against, such that the node is _sticky_ between requests. -This implementation supports sniffing and sorting so that each instance of your application can favour a node. For example, -a node in the same rack, based on node attributes. - -Given a collection of `Uri` - -[source,csharp] ----- -var uris = Enumerable.Range(9200, 5) - .Select(port => new Uri($"http://localhost:{port}")); ----- - -a sniffing sorted sticky pool takes a second parameter, a delegate of `Func`, that takes a Node and returns a weight. -Nodes will be sorted in descending order by weight. In the following example, nodes are scored so that client nodes -in rack_id `rack_one` score the highest - -[source,csharp] ----- -var pool = new StickySniffingConnectionPool(uris, node => -{ - var weight = 0f; - - if (!node.HasFeature(HoldsData) && !node.HasFeature(MasterEligible)) - weight += 10; - - if (node.Settings.TryGetValue("node.attr.rack_id", out var rackId) && rackId.ToString() == "rack_one") - weight += 10; - - return weight; -}); - -var client = new ElasticClient(new ConnectionSettings(pool)); ----- - diff --git a/docs/client-concepts/connection-pooling/building-blocks/date-time-providers.asciidoc b/docs/client-concepts/connection-pooling/building-blocks/date-time-providers.asciidoc deleted file mode 100644 index 62cc240f98e..00000000000 --- a/docs/client-concepts/connection-pooling/building-blocks/date-time-providers.asciidoc +++ /dev/null @@ -1,70 +0,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/ClientConcepts/ConnectionPooling/BuildingBlocks/DateTimeProviders.Doc.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! -//// - -[[date-time-providers]] -=== Date time providers - -Not typically something you'll have to pass to the client but all calls to `System.DateTime.UtcNow` -in the client have been abstracted behind an `IDateTimeProvider` interface. -This allows us to unit test timeouts and cluster failover without being bound to wall clock -time as calculated by using `System.DateTime.UtcNow` directly. - -[source,csharp] ----- -var dateTimeProvider = DateTimeProvider.Default; - -dateTimeProvider.Now().Should().BeCloseTo(DateTime.UtcNow); ----- - -As you can see, dates are always returned in UTC from the default implementation. - -Another responsibility of this interface is to calculate the time a node has to be taken out of rotation -based on the number of attempts to revive it. For very advanced use cases, this might be something of interest -to provide a custom implementation for. - -The default timeout calculation is - -[source,sh] ----- -min(timeout * 2 ^ (attempts * 0.5 -1), maxTimeout) ----- - -where the default values for `timeout` and `maxTimeout` are - -[source,csharp] ----- -var timeout = TimeSpan.FromMinutes(1); -var maxTimeout = TimeSpan.FromMinutes(30); ----- - -Plotting these defaults looks as follows - -.Default formula, x-axis number of attempts to revive, y-axis time in minutes -image::timeoutplot.png[dead timeout] - -The goal here is that whenever a node is resurrected and is found to still be offline, we send it -__back to the doghouse__ for an ever increasingly long period, until we hit a bounded maximum. - -[source,csharp] ----- -var dateTimeProvider = DateTimeProvider.Default; - -var timeouts = Enumerable.Range(0, 30) - .Select(attempt => dateTimeProvider.DeadTime(attempt, timeout, maxTimeout)) - .ToList(); - -foreach (var increasedTimeout in timeouts.Take(10)) - increasedTimeout.Should().BeWithin(maxTimeout); ----- - diff --git a/docs/client-concepts/connection-pooling/building-blocks/keeping-track-of-nodes.asciidoc b/docs/client-concepts/connection-pooling/building-blocks/keeping-track-of-nodes.asciidoc deleted file mode 100644 index 521d57efa8e..00000000000 --- a/docs/client-concepts/connection-pooling/building-blocks/keeping-track-of-nodes.asciidoc +++ /dev/null @@ -1,127 +0,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/ClientConcepts/ConnectionPooling/BuildingBlocks/KeepingTrackOfNodes.Doc.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! -//// - -[[keeping-track-of-nodes]] -=== Keeping track of nodes - -==== Creating a Node - -A `Node` can be instantiated by passing it a `Uri` - -[source,csharp] ----- -var node = new Node(new Uri("http://localhost:9200")); -node.Uri.Should().NotBeNull(); -node.Uri.Port.Should().Be(9200); ----- - -By default master eligible and holds data is presumed to be true * - -[source,csharp] ----- -node.HasFeature(MasterEligible).Should().BeTrue(); -node.HasFeature(HoldsData).Should().BeTrue(); ----- - -Is resurrected is true on first usage, hints to the transport that a ping might be useful - -[source,csharp] ----- -node.IsResurrected.Should().BeTrue(); ----- - -==== Building a Node path - -passing a node with a path should be preserved. -Sometimes an Elasticsearch node lives behind a proxy - -[source,csharp] ----- -var node = new Node(new Uri("http://test.example/elasticsearch")); - -node.Uri.Port.Should().Be(80); -node.Uri.AbsolutePath.Should().Be("/elasticsearch/"); ----- - -*We force paths to end with a forward slash* so that they can later be safely combined - -[source,csharp] ----- -var combinedPath = new Uri(node.Uri, "index/type/_search"); -combinedPath.AbsolutePath.Should().Be("/elasticsearch/index/type/_search"); ----- - -which is exactly what the `CreatePath` method does on `Node` - -[source,csharp] ----- -combinedPath = node.CreatePath("index/type/_search"); -combinedPath.AbsolutePath.Should().Be("/elasticsearch/index/type/_search"); ----- - -==== Marking Nodes - -[source,csharp] ----- -var node = new Node(new Uri("http://localhost:9200")); -node.FailedAttempts.Should().Be(0); -node.IsAlive.Should().BeTrue(); ----- - -every time a node is marked dead, the number of attempts should increase -and the passed datetime should be exposed. - -[source,csharp] ----- -for(var i = 0; i<10;i++) -{ - var deadUntil = DateTime.Now.AddMinutes(1); - node.MarkDead(deadUntil); - node.FailedAttempts.Should().Be(i + 1); - node.IsAlive.Should().BeFalse(); - node.DeadUntil.Should().Be(deadUntil); -} ----- - -however when marking a node alive, the `DeadUntil` property should be reset and `FailedAttempts` reset to 0 - -[source,csharp] ----- -node.MarkAlive(); -node.FailedAttempts.Should().Be(0); -node.DeadUntil.Should().Be(default(DateTime)); -node.IsAlive.Should().BeTrue(); ----- - -==== Node Equality - -Nodes are considered equal if they have the same endpoint, no matter what other metadata is associated - -[source,csharp] ----- -var node = new Node(new Uri("http://localhost:9200")); -var nodeAsMaster = new Node(new Uri("http://localhost:9200"), ElasticsearchNodeFeatures.MasterEligibleOnly); - -(node == nodeAsMaster).Should().BeTrue(); -(node != nodeAsMaster).Should().BeFalse(); - -var uri = new Uri("http://localhost:9200"); -(node == uri).Should().BeTrue(); - -var differentUri = new Uri("http://localhost:9201"); -(node != differentUri).Should().BeTrue(); - -node.Should().Be(nodeAsMaster); ----- - diff --git a/docs/client-concepts/connection-pooling/building-blocks/request-pipelines.asciidoc b/docs/client-concepts/connection-pooling/building-blocks/request-pipelines.asciidoc deleted file mode 100644 index 2709aab1b28..00000000000 --- a/docs/client-concepts/connection-pooling/building-blocks/request-pipelines.asciidoc +++ /dev/null @@ -1,294 +0,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/ClientConcepts/ConnectionPooling/BuildingBlocks/RequestPipelines.doc.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! -//// - -[[request-pipelines]] -=== Request pipelines - -Every request is executed in the context of a `RequestPipeline` when using the -default <> implementation. - -When calling `Request()` or `RequestAsync()` on an `ITransport`, -the whole coordination of the request is deferred to a new instance in a `using` block. - -[source,csharp] ----- -var pipeline = new RequestPipeline( - settings, - DateTimeProvider.Default, - new RecyclableMemoryStreamFactory(), - new SearchRequestParameters() -); - -pipeline.GetType().Should().Implement(); ----- - -An `ITransport` does not instantiate a `RequestPipeline` directly; it uses a pluggable `IRequestPipelineFactory` -to create them - -[source,csharp] ----- -var requestPipelineFactory = new RequestPipelineFactory(); -var requestPipeline = requestPipelineFactory.Create( - settings, - DateTimeProvider.Default, <1> - new RecyclableMemoryStreamFactory(), - new SearchRequestParameters() -); - -requestPipeline.Should().BeOfType>(); -requestPipeline.GetType().Should().Implement(); ----- -<1> An <> implementation - -You can pass your own `IRequestPipeline` implementation to the transport when instantiating a client, -allowing you to have requests executed in your own custom request pipeline - -[source,csharp] ----- -var transport = new Transport( - settings, - requestPipelineFactory, - DateTimeProvider.Default, - new RecyclableMemoryStreamFactory() -); - -var client = new ElasticClient(transport); ----- - -Let's now have a look at some of the characteristics of the request pipeline - -==== Sniffing on first usage - -Here we have setup three pipelines with three different <> - -[source,csharp] ----- -var singleNodePipeline = CreatePipeline(uris => new SingleNodeConnectionPool(uris.First())); -var staticPipeline = CreatePipeline(uris => new StaticConnectionPool(uris)); -var sniffingPipeline = CreatePipeline(uris => new SniffingConnectionPool(uris)); ----- - - Let's see how they behave on first usage - -[source,csharp] ----- -singleNodePipeline.FirstPoolUsageNeedsSniffing.Should().BeFalse(); -staticPipeline.FirstPoolUsageNeedsSniffing.Should().BeFalse(); -sniffingPipeline.FirstPoolUsageNeedsSniffing.Should().BeTrue(); ----- - -We see that only the <> supports sniffing on first usage, -since it supports reseeding. Sniffing on startup however can be disabled on `ConnectionSettings` for sniffing -connection pool - -[source,csharp] ----- -sniffingPipeline = CreatePipeline( - uris => new SniffingConnectionPool(uris), - s => s.SniffOnStartup(false)); <1> - -sniffingPipeline.FirstPoolUsageNeedsSniffing.Should().BeFalse(); ----- -<1> Disable sniffing on startup - -==== Wait for first sniff - -All threads wait for the sniff on startup to finish, waiting the request timeout period. A -https://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim(v=vs.110).aspx[`SemaphoreSlim`] -is used to block threads until the sniff finishes and waiting threads release the `SemaphoreSlim` appropriately. - -We can demonstrate this with the following example. First, let's configure -a custom `IConnection` implementation that's simply going to return a known -200 response after one second - -[source,csharp] ----- -var inMemoryConnection = new WaitingInMemoryConnection( - TimeSpan.FromSeconds(1), - responseBody); ----- - -Next, we create a <> using our -custom connection and a timeout for how long a request can take before the client -times out - -[source,csharp] ----- -var sniffingPipeline = CreatePipeline( - uris => new SniffingConnectionPool(uris), - connection: inMemoryConnection, - settingsSelector: s => s.RequestTimeout(TimeSpan.FromSeconds(2))); ----- - -Now, with a `SemaphoreSlim` in place that allows only one thread to enter at a time, -start three tasks that will initiate a sniff on startup. - -The first task will successfully sniff on startup with the remaining two waiting -tasks exiting without exception. The `SemaphoreSlim` is also released, ready for -when sniffing needs to take place again - -[source,csharp] ----- -var semaphoreSlim = new SemaphoreSlim(1, 1); - -var task1 = Task.Run(() => sniffingPipeline.FirstPoolUsage(semaphoreSlim)); -var task2 = Task.Run(() => sniffingPipeline.FirstPoolUsage(semaphoreSlim)); -var task3 = Task.Run(() => sniffingPipeline.FirstPoolUsage(semaphoreSlim)); - -var exception = Record.Exception(() => Task.WaitAll(task1, task2, task3)); - -exception.Should().BeNull(); -semaphoreSlim.CurrentCount.Should().Be(1); ----- - -==== Sniff on connection failure - -Only a connection pool that supports reseeding will opt in to `SniffsOnConnectionFailure()`. -In this case, it is only the Sniffing connection pool - -[source,csharp] ----- -var singleNodePipeline = CreatePipeline(uris => new SingleNodeConnectionPool(uris.First())); -var staticPipeline = CreatePipeline(uris => new StaticConnectionPool(uris)); -var sniffingPipeline = CreatePipeline(uris => new SniffingConnectionPool(uris)); - -singleNodePipeline.SniffsOnConnectionFailure.Should().BeFalse(); -staticPipeline.SniffsOnConnectionFailure.Should().BeFalse(); -sniffingPipeline.SniffsOnConnectionFailure.Should().BeTrue(); ----- - -You can however disable this behaviour on `ConnectionSettings` - -[source,csharp] ----- -sniffingPipeline = CreatePipeline(uris => new SniffingConnectionPool(uris), s => s.SniffOnConnectionFault(false)); -sniffingPipeline.SniffsOnConnectionFailure.Should().BeFalse(); ----- - -==== Sniff on stale cluster - -A connection pool that supports reseeding will sniff after a period of time -to ensure that its understanding of the state of the cluster is not stale. - -Let's set up three request pipelines with different connection pools and a -date time provider that will allow us to artificially change the time - -[source,csharp] ----- -var dateTime = new TestableDateTimeProvider(); -var singleNodePipeline = CreatePipeline(uris => - new SingleNodeConnectionPool(uris.First(), dateTime), dateTimeProvider: dateTime); - -var staticPipeline = CreatePipeline(uris => - new StaticConnectionPool(uris, dateTimeProvider: dateTime), dateTimeProvider: dateTime); - -var sniffingPipeline = CreatePipeline(uris => - new SniffingConnectionPool(uris, dateTimeProvider: dateTime), dateTimeProvider: dateTime); ----- - -On the request pipeline with the Sniffing connection pool will sniff when its -understanding of the cluster is stale - -[source,csharp] ----- -singleNodePipeline.SniffsOnStaleCluster.Should().BeFalse(); -staticPipeline.SniffsOnStaleCluster.Should().BeFalse(); -sniffingPipeline.SniffsOnStaleCluster.Should().BeTrue(); ----- - -To begin with, all request pipelines have a _fresh_ view of cluster state i.e. not stale - -[source,csharp] ----- -singleNodePipeline.StaleClusterState.Should().BeFalse(); -staticPipeline.StaleClusterState.Should().BeFalse(); -sniffingPipeline.StaleClusterState.Should().BeFalse(); ----- - -Now, if we go two hours into the future - -[source,csharp] ----- -dateTime.ChangeTime(d => d.Add(TimeSpan.FromHours(2))); ----- - -Those connection pools that do not support reseeding never go stale - -[source,csharp] ----- -singleNodePipeline.StaleClusterState.Should().BeFalse(); -staticPipeline.StaleClusterState.Should().BeFalse(); ----- - -but the Request pipeline using the Sniffing connection pool that supports reseeding, -signals that its understanding of the cluster state is out of date - -[source,csharp] ----- -sniffingPipeline.StaleClusterState.Should().BeTrue(); ----- - -==== Retrying - -A request pipeline also checks whether the overall time across multiple retries exceeds the request timeout. -See <> for more details, here we assert that our request pipeline exposes this properly - -[source,csharp] ----- -var dateTime = new TestableDateTimeProvider(); -var singleNodePipeline = CreatePipeline(uris => - new SingleNodeConnectionPool(uris.First(), dateTime), dateTimeProvider: dateTime); - -var staticPipeline = CreatePipeline(uris => - new StaticConnectionPool(uris, dateTimeProvider: dateTime), dateTimeProvider: dateTime); - -var sniffingPipeline = CreatePipeline(uris => - new SniffingConnectionPool(uris, dateTimeProvider: dateTime), dateTimeProvider: dateTime); - -singleNodePipeline.IsTakingTooLong.Should().BeFalse(); -staticPipeline.IsTakingTooLong.Should().BeFalse(); -sniffingPipeline.IsTakingTooLong.Should().BeFalse(); ----- - -go one hour into the future - -[source,csharp] ----- -dateTime.ChangeTime(d => d.Add(TimeSpan.FromHours(2))); ----- - -Connection pools that do not support reseeding never go stale - -[source,csharp] ----- -singleNodePipeline.IsTakingTooLong.Should().BeTrue(); -staticPipeline.IsTakingTooLong.Should().BeTrue(); ----- - -the sniffing connection pool supports reseeding so the pipeline will signal the state is out of date - -[source,csharp] ----- -sniffingPipeline.IsTakingTooLong.Should().BeTrue(); ----- - -request pipeline exposes the DateTime it started; we assert it started 2 hours in the past - -[source,csharp] ----- -(dateTime.Now() - singleNodePipeline.StartedOn).Should().BePositive().And.BeCloseTo(TimeSpan.FromHours(2)); -(dateTime.Now() - staticPipeline.StartedOn).Should().BePositive().And.BeCloseTo(TimeSpan.FromHours(2)); -(dateTime.Now() - sniffingPipeline.StartedOn).Should().BePositive().And.BeCloseTo(TimeSpan.FromHours(2)); ----- - diff --git a/docs/client-concepts/connection-pooling/building-blocks/timeoutplot.png b/docs/client-concepts/connection-pooling/building-blocks/timeoutplot.png deleted file mode 100644 index ceb819bff0b789818ffdafb129d5c63735ea138a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10018 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 ConnectionConfiguration()); ----- - -and in the high level client, `ElasticClient`, like this - -[source,csharp] ----- -var highlevelTransport = new Transport(new ConnectionSettings()); - -var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var inMemoryTransport = new Transport(new ConnectionSettings(connectionPool, new InMemoryConnection())); ----- - -The only two methods on `ITransport` are `Request()` and `RequestAsync()`; the default `ITransport` implementation is responsible for introducing -many of the building blocks in the client. If you feel that the defaults do not work for you then you can swap them out for your own -custom `ITransport` implementation and if you do, {github}/issues[please let us know] as we'd love to learn why you've go down this route! - -[source,csharp] ----- -var response = inMemoryTransport.Request>( - HttpMethod.GET, - "/_search", - PostData.Serializable(new { query = new { match_all = new { } } })); - -response = await inMemoryTransport.RequestAsync>( - HttpMethod.GET, - "/_search", - default(CancellationToken), - PostData.Serializable(new { query = new { match_all = new { } } })); ----- - diff --git a/docs/client-concepts/connection-pooling/exceptions/unexpected-exceptions.asciidoc b/docs/client-concepts/connection-pooling/exceptions/unexpected-exceptions.asciidoc deleted file mode 100644 index 712e2a96ab3..00000000000 --- a/docs/client-concepts/connection-pooling/exceptions/unexpected-exceptions.asciidoc +++ /dev/null @@ -1,148 +0,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/ClientConcepts/ConnectionPooling/Exceptions/UnexpectedExceptions.doc.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! -//// - -[[unexpected-exceptions]] -=== Unexpected exceptions - -When a client call throws an exception that the `IConnection` cannot handle, the exception will bubble -out of the client as an `UnexpectedTransportException`, regardless of whether the client is configured to -throw exceptions or not. - -An `IConnection` is in charge of knowing which exceptions it can recover from and those it can't, and the default `IConnection` -in - -* Desktop CLR is based on `WebRequest` which can and will recover from `WebException` - -* Core CLR is based on `HttpClient` which can and will recover from `HttpRequestException` - -Other exceptions will be grounds for immediately exiting the pipeline. Let's demonstrate this -using our Virtual cluster test framework - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch <1> - .Bootstrap(10) - .ClientCalls(r => r.SucceedAlways()) - .ClientCalls(r => r.OnPort(9201).FailAlways(new Exception("boom!"))) <2> - .StaticConnectionPool() - .Settings(s => s.DisablePing().EnableDebugMode()) -); - -audit = await audit.TraceCall( - new ClientCall { - { HealthyResponse, 9200 }, <3> - } -); - -audit = await audit.TraceUnexpectedException( - new ClientCall { - { BadResponse, 9201 }, <4> - }, - (e) => - { - e.FailureReason.Should().Be(PipelineFailure.Unexpected); - e.InnerException.Should().NotBeNull(); - e.InnerException.Message.Should().Be("boom!"); - } -); ----- -<1> set up a cluster with 10 nodes -<2> where node 2 on port 9201 always throws an exception -<3> The first call to 9200 returns a healthy response -<4> ...but the second call, to 9201, returns a bad response - -Sometimes, an unexpected exception happens further down in the pipeline. In this scenario, we -wrap them inside an `UnexpectedTransportException` so that information about where -in the pipeline the exception happened is not lost. - -In this next example, a call to 9200 fails with a `WebException`. -The call then rolls over to retry on 9201, which throws an hard exception from within `IConnection`. -Finally, we assert that we can still see the audit trail for the whole coordinated request. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) -#if DOTNETCORE - .ClientCalls(r => r.OnPort(9200).FailAlways(new System.Net.Http.HttpRequestException("recover"))) <1> -#else - .ClientCalls(r => r.OnPort(9200).FailAlways(new System.Net.WebException("recover"))) <1> -#endif - .ClientCalls(r => r.OnPort(9201).FailAlways(new Exception("boom!"))) <2> - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceUnexpectedException( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, <3> - }, - (e) => - { - e.FailureReason.Should().Be(PipelineFailure.Unexpected); - e.InnerException.Should().NotBeNull(); - e.InnerException.Message.Should().Be("boom!"); - } -); ----- -<1> calls on 9200 set up to throw a `HttpRequestException` or a `WebException` -<2> calls on 9201 set up to throw an `Exception` -<3> Assert that the audit trail for the client call includes the bad response from 9200 and 9201 - -An unexpected hard exception on ping and sniff is something we *do* try to recover from and failover to retrying on the next node. - -Here, pinging nodes on first use is enabled and the node on port 9200 throws an exception on ping; when this happens, -we still fallover to retry the ping on node on port 9201, where it succeeds. -Following this, the client call on 9201 throws a hard exception that we are not able to recover from - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Ping(r => r.OnPort(9200).FailAlways(new Exception("ping exception"))) - .Ping(r => r.OnPort(9201).SucceedAlways()) - .ClientCalls(r => r.OnPort(9201).FailAlways(new Exception("boom!"))) - .StaticConnectionPool() - .AllDefaults() -); - -audit = await audit.TraceUnexpectedException( - new ClientCall { - { PingFailure, 9200 }, - { PingSuccess, 9201 }, - { BadResponse, 9201 }, - }, - e => - { - e.FailureReason.Should().Be(PipelineFailure.Unexpected); - - e.InnerException.Should().NotBeNull(); - e.InnerException.Message.Should().Be("boom!"); <1> - - e.SeenExceptions.Should().NotBeEmpty(); <2> - var pipelineException = e.SeenExceptions.First(); - pipelineException.FailureReason.Should().Be(PipelineFailure.PingFailure); - pipelineException.InnerException.Message.Should().Be("ping exception"); - - var pingException = e.AuditTrail.First(a => a.Event == PingFailure).Exception; <3> - pingException.Should().NotBeNull(); - pingException.Message.Should().Be("ping exception"); - } -); ----- -<1> `InnerException` is the exception that brought the request down -<2> The hard exception that happened on ping is still available though -<3> An exception can be hard to relate back to a point in time, so the exception is also available on the audit trail - diff --git a/docs/client-concepts/connection-pooling/exceptions/unrecoverable-exceptions.asciidoc b/docs/client-concepts/connection-pooling/exceptions/unrecoverable-exceptions.asciidoc deleted file mode 100644 index 076cfb3ca8c..00000000000 --- a/docs/client-concepts/connection-pooling/exceptions/unrecoverable-exceptions.asciidoc +++ /dev/null @@ -1,173 +0,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/ClientConcepts/ConnectionPooling/Exceptions/UnrecoverableExceptions.doc.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! -//// - -[[unrecoverable-exceptions]] -=== Unrecoverable exceptions - -Unrecoverable exceptions are _expected_ exceptions that are grounds to exit the client pipeline immediately. - -[NOTE] --- -What do we mean by _expected_ exceptions? Aren't all exceptions _exceptional_? - -Well, there a some exceptions that can be thrown in the course of a request -that _may_ be expected, some of which can be retried on another node in the cluster, and some that cannot. -For example, an exception thrown when pinging a node throws an exception, -but this is an exception that the client expects can happen, -and can handle by trying a ping on another node. On the contrary, a bad authentication response from a node will throw an -exception, and the client understands that an exception under these circumstances should be handled by not retrying, -but by exiting the pipeline. - --- - -By default, the client won't throw on any `TransportException` but instead return an invalid response -that can be detected by checking the `.IsValid` property on the response. You can change this behaviour with -by using `ThrowExceptions()` on <>. - -[source,csharp] ----- -var failures = Enum.GetValues(typeof(PipelineFailure)).Cast(); -foreach (var failure in failures) -{ - switch (failure) - { - /** The followinig pipeline failures are recoverable and will be retried */ - case PipelineFailure.PingFailure: - case PipelineFailure.BadRequest: - case PipelineFailure.BadResponse: - var recoverable = new PipelineException(failure); - recoverable.Recoverable.Should().BeTrue(failure.GetStringValue()); - break; - - /** The followinig pipeline failures are NOT recoverable and won't be retried */ - case PipelineFailure.BadAuthentication: - case PipelineFailure.SniffFailure: - case PipelineFailure.CouldNotStartSniffOnStartup: - case PipelineFailure.MaxTimeoutReached: - case PipelineFailure.MaxRetriesReached: - case PipelineFailure.Unexpected: - case PipelineFailure.NoNodesAttempted: - var unrecoverable = new PipelineException(failure); - unrecoverable.Recoverable.Should().BeFalse(failure.GetStringValue()); - break; - default: - throw new ArgumentOutOfRangeException(failure.GetStringValue()); - } -} ----- - -As an example, let's use our Virtual cluster test framework to set up a 10 node cluster -that always succeeds when pinged but fails with a 401 response when making client calls - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Ping(r => r.SucceedAlways()) <1> - .ClientCalls(r => r.FailAlways(401)) <2> - .StaticConnectionPool() - .AllDefaults() -); ----- -<1> Always succeed on ping -<2> ...but always fail on calls with a 401 Bad Authentication response - -Now, let's make a client call. We'll see that the first audit event is a successful ping -followed by a bad response as a result of the 401 bad authentication response - -[source,csharp] ----- -audit = await audit.TraceElasticsearchException( - new ClientCall { - { PingSuccess, 9200 }, <1> - { BadResponse, 9200 }, <2> - }, - exception => - { - exception.FailureReason - .Should().Be(PipelineFailure.BadAuthentication); <3> - } -); ----- -<1> First call results in a successful ping -<2> Second call results in a bad response -<3> The reason for the bad response is Bad Authentication - -When a bad authentication response occurs, the client attempts to deserialize the response body returned; - -In some setups you might be running behind a proxy and you might need to prevent the client from trying to deserialize -bad json. In the following example an HTML response is return but with an application/json content type. If the proxy is not -under your control you would need to be able to fix this in the client. Here we make the client aware that 401 responses -should never be deserialized by calling `SkipDeserializationForStatusCodes()` on `ConnectionSettings`. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Ping(r => r.SucceedAlways()) - .ClientCalls(r => r.FailAlways(401).ReturnByteResponse(HtmlNginx401Response, "application/json")) <1> - .StaticConnectionPool() - .Settings(s => s.SkipDeserializationForStatusCodes(401)) -); - -audit = await audit.TraceElasticsearchException( - new ClientCall { - { PingSuccess, 9200 }, - { BadResponse, 9201 }, - }, - (e) => - { - e.FailureReason.Should().Be(PipelineFailure.BadAuthentication); - e.Response.HttpStatusCode.Should().Be(401); - e.Response.ResponseBodyInBytes.Should().BeNull(); <2> - } -); ----- -<1> Always return a 401 bad response with a HTML response on client calls -<2> Assert that the response body bytes are null - -Now in this example, by turning on `DisableDirectStreaming()` on `ConnectionSettings`, we see the same behaviour exhibited -as before, but this time however, the response body bytes are captured in the response and can be inspected. -Also note that in this example the 401 returns the correct mime type for html so the client wont try to deserialize to json and -we no longer need to set `SkipDeserializationForStatusCodes()` - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Ping(r => r.SucceedAlways()) - .ClientCalls(r => r.FailAlways(401).ReturnByteResponse(HtmlNginx401Response, "text/html")) - .StaticConnectionPool() - .Settings(s => s.DisableDirectStreaming()) -); - -audit = await audit.TraceElasticsearchException( - new ClientCall { - { PingSuccess, 9200 }, - { BadResponse, 9200 }, - }, - (e) => - { - e.FailureReason.Should().Be(PipelineFailure.BadAuthentication); - e.Response.HttpStatusCode.Should().Be(401); - e.Response.ResponseBodyInBytes.Should().NotBeNull(); <1> - var responseString = Encoding.UTF8.GetString(e.Response.ResponseBodyInBytes); - responseString.Should().Contain("nginx/"); <2> - e.DebugInformation.Should().Contain("nginx/"); - } -); ----- -<1> Response bytes are set on the response -<2> Assert that the response contains `"nginx/"` - diff --git a/docs/client-concepts/connection-pooling/failover/falling-over.asciidoc b/docs/client-concepts/connection-pooling/failover/falling-over.asciidoc deleted file mode 100644 index a3bd8f7a757..00000000000 --- a/docs/client-concepts/connection-pooling/failover/falling-over.asciidoc +++ /dev/null @@ -1,129 +0,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/ClientConcepts/ConnectionPooling/Failover/FallingOver.doc.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! -//// - -[[fail-over]] -=== Fail over - -When using a connection pool with more than one node, a request will be retried if -the call to a node throws an exception or returns a 502, 503 or 504 response - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways()) - .ClientCalls(r => r.OnPort(9201).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { HealthyResponse, 9201 }, - } -); ----- - -[[bad-gateway]] -==== 502 Bad Gateway - -Will be treated as an error that requires retrying - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways(502)) - .ClientCalls(r => r.OnPort(9201).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { HealthyResponse, 9201 }, - } -); ----- - -[[service-unavailable]] -==== 503 Service Unavailable - -Will be treated as an error that requires retrying - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways(503)) - .ClientCalls(r => r.OnPort(9201).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { HealthyResponse, 9201 }, - } -); ----- - -[[gateway-timeout]] -==== 504 Gateway Timeout - -Will be treated as an error that requires retrying - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways(504)) - .ClientCalls(r => r.OnPort(9201).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { HealthyResponse, 9201 }, - } -); ----- - -If a call returns a __valid__ HTTP status code other than 502 or 503, the request won't be retried. - -IMPORTANT: Different requests may have different status codes that are deemed __valid__. For example, -a *404 Not Found* response is a __valid__ status code for an index exists request - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways(418)) - .ClientCalls(r => r.OnPort(9201).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/max-retries/respects-max-retry.asciidoc b/docs/client-concepts/connection-pooling/max-retries/respects-max-retry.asciidoc deleted file mode 100644 index 75e85a85ace..00000000000 --- a/docs/client-concepts/connection-pooling/max-retries/respects-max-retry.asciidoc +++ /dev/null @@ -1,186 +0,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/ClientConcepts/ConnectionPooling/MaxRetries/RespectsMaxRetry.doc.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! -//// - -[[retries]] -=== Retries - -By default, NEST will retry a request as many times as there are nodes in the cluster, that the client knows about. - -Retries still respects the request timeout however, meaning if you have a 100 node cluster -and a request timeout of 20 seconds, the client will retry as many times as it can before -giving up at the request timeout of 20 seconds. - -Retry behaviour can be demonstrated using NEST's Virtual cluster test framework. In the following -example, a ten node cluster is defined that always fails on all client calls, except on port 9209 - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways()) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); ----- - -The trace of a client call shows that a bad response is received from nodes 9200 to 9208, -finally returning a healthy response from the node on port 9209 - -[source,csharp] ----- -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { BadResponse, 9202 }, - { BadResponse, 9203 }, - { BadResponse, 9204 }, - { BadResponse, 9205 }, - { BadResponse, 9206 }, - { BadResponse, 9207 }, - { BadResponse, 9208 }, - { HealthyResponse, 9209 } - } -); ----- - -==== Maximum number of retries - -When you have a 100 node cluster for example, you might want to ensure that retries occur only -a _fixed_ number of times. This can be done using `MaximumRetries(n)` on `ConnectionSettings` - -IMPORTANT: the actual number of requests is `initial attempt + set number of retries` - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways()) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().MaximumRetries(3)) <1> -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { BadResponse, 9202 }, - { BadResponse, 9203 }, - { MaxRetriesReached } <2> - } -); ----- -<1> Set the maximum number of retries to 3 -<2> The client call trace returns an `MaxRetriesReached` audit after the initial attempt and the number of retries allowed - -In our previous example we simulated very fast failures, but in the real world, a call might take upwards of a second. - -In this next example, we simulate a particularly heavy search that takes 10 seconds to fail, and set a request timeout of 20 seconds. -We see that the request is tried twice and gives up before a third call is attempted, since the call takes 10 seconds and thus can be -tried twice (initial call and one retry) _before_ the request timeout. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(10))) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().RequestTimeout(TimeSpan.FromSeconds(20))) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { MaxTimeoutReached } - } -); ----- - -==== Maximum retry timeout - -If you set a smaller request timeout you might not want it to also affect the retry timeout. -In cases like this, you can configure the `MaxRetryTimeout` separately. -Here we simulate calls taking 3 seconds, a request timeout of 2 seconds and a max retry timeout of 10 seconds. -We should see 5 attempts to perform this query, testing that our request timeout cuts the query off short and that -our max retry timeout of 10 seconds wins over the configured request timeout - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(3))) - .ClientCalls(r => r.OnPort(9209).FailAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().RequestTimeout(TimeSpan.FromSeconds(2)).MaxRetryTimeout(TimeSpan.FromSeconds(10))) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { BadResponse, 9202 }, - { BadResponse, 9203 }, - { BadResponse, 9204 }, - { MaxTimeoutReached } - } -); ----- - -If your retry policy expands beyond the number of available nodes, the client **won't** retry the same node twice - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(2) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(3))) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().RequestTimeout(TimeSpan.FromSeconds(2)).MaxRetryTimeout(TimeSpan.FromSeconds(10))) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { MaxRetriesReached }, - { FailedOverAllNodes } - } -); ----- - -This makes setting any retry setting on a single node connection pool a no-op by design! -Connection pooling and failover is all about trying to fail sanely whilst still utilizing the available resources and -not giving up on the fail fast principle; **It is NOT a mechanism for forcing requests to succeed.** - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(3))) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .SingleNodeConnection() - .Settings(s => s.DisablePing().MaximumRetries(10)) -); - -audit = await audit.TraceCall( - new ClientCall { - { BadResponse, 9200 } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/pinging/first-usage.asciidoc b/docs/client-concepts/connection-pooling/pinging/first-usage.asciidoc deleted file mode 100644 index 2722feb213c..00000000000 --- a/docs/client-concepts/connection-pooling/pinging/first-usage.asciidoc +++ /dev/null @@ -1,128 +0,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/ClientConcepts/ConnectionPooling/Pinging/FirstUsage.doc.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! -//// - -[[ping-on-first-usage]] -=== Ping on first usage - -Pinging is enabled by default for the <>, <> -and <> connection pools. -This means that the first time a node is used or resurrected, a ping is issued a with a small (configurable) timeout, -allowing the client to fail and fallover to a healthy node much faster than attempting a request, that may be heavier than a ping. - -Here's an example with a cluster with two nodes where the second node fails on ping - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(2) - .Ping(p => p.Succeeds(Always)) - .Ping(p => p.OnPort(9201).FailAlways()) - .ClientCalls(c=>c.SucceedAlways()) - .StaticConnectionPool() - .AllDefaults() -); ----- - -When making the calls, the first call goes to 9200 which succeeds, -and the 2nd call does a ping on 9201 because it's used for the first time. -The ping fails so we wrap over to node 9200 which we've already pinged. - -Finally we assert that the connectionpool has one node that is marked as dead - -[source,csharp] ----- -await audit.TraceCalls( - - new ClientCall { - { PingSuccess, 9200}, - { HealthyResponse, 9200}, - { pool => - { - pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(0); - } } - }, - new ClientCall { - { PingFailure, 9201}, - { HealthyResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(1) } - } -); ----- - -A cluster with 4 nodes where the second and third pings fail - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .Ping(p => p.SucceedAlways()) - .Ping(p => p.OnPort(9201).FailAlways()) - .Ping(p => p.OnPort(9202).FailAlways()) - .ClientCalls(c=>c.SucceedAlways()) - .StaticConnectionPool() - .AllDefaults() -); - -await audit.TraceCalls( - new ClientCall { - { PingSuccess, 9200}, <1> - { HealthyResponse, 9200}, - { pool => - pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(0) - } - }, - new ClientCall { - { PingFailure, 9201}, <2> - { PingFailure, 9202}, <3> - { PingSuccess, 9203}, <4> - { HealthyResponse, 9203}, - { pool => - pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) <5> - } - } -); ----- -<1> The first call goes to 9200, which succeeds -<2> The 2nd call does a ping on 9201 because its used for the first time. This fails -<3> So we ping 9202. This _also_ fails -<4> We then ping 9203 because we haven't used it before and it succeeds -<5> Finally, we assert that the connection pool has two nodes that are marked as dead - -All nodes are pinged on first use, provided they are healthy - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .Ping(p => p.SucceedAlways()) <1> - .ClientCalls(c=>c.SucceedAlways()) - .StaticConnectionPool() - .AllDefaults() -); - -await audit.TraceCalls( - new ClientCall { { PingSuccess, 9200}, { HealthyResponse, 9200} }, <2> - new ClientCall { { PingSuccess, 9201}, { HealthyResponse, 9201} }, - new ClientCall { { PingSuccess, 9202}, { HealthyResponse, 9202} }, - new ClientCall { { PingSuccess, 9203}, { HealthyResponse, 9203} }, - new ClientCall { { HealthyResponse, 9200} }, - new ClientCall { { HealthyResponse, 9201} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9203} }, - new ClientCall { { HealthyResponse, 9200} } -); ----- -<1> Pings on nodes always succeed -<2> A successful ping on each node - diff --git a/docs/client-concepts/connection-pooling/pinging/revival.asciidoc b/docs/client-concepts/connection-pooling/pinging/revival.asciidoc deleted file mode 100644 index 2667d388c33..00000000000 --- a/docs/client-concepts/connection-pooling/pinging/revival.asciidoc +++ /dev/null @@ -1,70 +0,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/ClientConcepts/ConnectionPooling/Pinging/Revival.doc.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! -//// - -[[ping-on-revival]] -=== Ping on revival - -When a node is marked dead it will only be __put in the dog house__ for a certain amount of time. -Once it __comes out of the dog house__, or revived, a ping is scheduled before an actual API call, to ensure -that it's up and running. If it's still down, it's put _back in the dog house_ a little longer. - -Take a look at the <> for an explanation on what each timeout is. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(3) - .ClientCalls(r => r.SucceedAlways()) - .ClientCalls(r => r.OnPort(9202).Fails(Once)) - .Ping(p => p.SucceedAlways()) - .StaticConnectionPool() - .AllDefaults() -); - -audit = await audit.TraceCalls( - new ClientCall { { PingSuccess, 9200 }, { HealthyResponse, 9200 } }, - new ClientCall { { PingSuccess, 9201 }, { HealthyResponse, 9201 } }, - new ClientCall { - { PingSuccess, 9202}, - { BadResponse, 9202}, - { HealthyResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(1) } - }, - new ClientCall { { HealthyResponse, 9201 } }, - new ClientCall { { HealthyResponse, 9200 } }, - new ClientCall { { HealthyResponse, 9201 } }, - new ClientCall { - { HealthyResponse, 9200 }, - { pool => pool.Nodes.First(n=>!n.IsAlive).DeadUntil.Should().BeAfter(DateTime.UtcNow) } - } -); - -audit = await audit.TraceCalls( - new ClientCall { { HealthyResponse, 9201 } }, - new ClientCall { { HealthyResponse, 9200 } }, - new ClientCall { { HealthyResponse, 9201 } } -); - -audit.ChangeTime(d => d.AddMinutes(20)); - -audit = await audit.TraceCalls( - new ClientCall { { HealthyResponse, 9201 } }, - new ClientCall { - { Resurrection, 9202 }, - { PingSuccess, 9202 }, - { HealthyResponse, 9202 } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/request-overrides/disable-sniff-ping-per-request.asciidoc b/docs/client-concepts/connection-pooling/request-overrides/disable-sniff-ping-per-request.asciidoc deleted file mode 100644 index 9d88b30143b..00000000000 --- a/docs/client-concepts/connection-pooling/request-overrides/disable-sniff-ping-per-request.asciidoc +++ /dev/null @@ -1,118 +0,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/ClientConcepts/ConnectionPooling/RequestOverrides/DisableSniffPingPerRequest.doc.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! -//// - -[[disable-sniff-ping-per-request]] -=== Disable sniffing and pinging per request - -Even if you are using a sniffing connection pool thats set up to sniff on start/failure -and pinging enabled, you can opt out of this behaviour on a _per request_ basis. - -In our first test we set up a cluster that pings and sniffs on startup -but we disable the sniffing on our first request so we only see the ping and the response - -Let's set up the cluster and configure clients to **always** sniff on startup - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(c=>c.SucceedAlways()) - .Ping(c=>c.SucceedAlways()) - .SniffingConnectionPool() - .Settings(s => s.SniffOnStartup()) <1> -); ----- -<1> sniff on startup - -Now We disable sniffing on the request so even though it's our first call, -we do not want to sniff on startup. - -Instead, the sniff on startup is deferred to the second call into the cluster that -does not disable sniffing on a per request basis. - -And after that no sniff on startup will happen again - -[source,csharp] ----- -audit = await audit.TraceCalls( - new ClientCall(r => r.DisableSniffing()) <1> - { - { PingSuccess, 9200 }, <2> - { HealthyResponse, 9200 } - }, - new ClientCall() - { - { SniffOnStartup }, <3> - { SniffSuccess, 9200 }, - { PingSuccess, 9200 }, - { HealthyResponse, 9200 } - }, - new ClientCall() - { - { PingSuccess, 9201 }, <4> - { HealthyResponse, 9201 } - } -); ----- -<1> disable sniffing -<2> first call is a successful ping -<3> sniff on startup call happens here, on the second call -<4> No sniff on startup again - -Now, let's disable pinging on the request - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(c=>c.SucceedAlways()) - .SniffingConnectionPool() - .Settings(s => s.SniffOnStartup()) -); - -audit = await audit.TraceCall( - new ClientCall(r => r.DisablePing()) <1> - { - { SniffOnStartup }, - { SniffSuccess, 9200 }, <2> - { HealthyResponse, 9200 } - } -); ----- -<1> disable ping -<2> No ping after sniffing - -Finally, let's demonstrate disabling both sniff and ping on the request - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.SucceedAlways()) - .SniffingConnectionPool() - .Settings(s => s.SniffOnStartup()) -); - -audit = await audit.TraceCall( - new ClientCall(r=>r.DisableSniffing().DisablePing()) <1> - { - { HealthyResponse, 9200 } <2> - } -); ----- -<1> disable ping and sniff -<2> no ping or sniff before the call - diff --git a/docs/client-concepts/connection-pooling/request-overrides/request-timeouts-overrides.asciidoc b/docs/client-concepts/connection-pooling/request-overrides/request-timeouts-overrides.asciidoc deleted file mode 100644 index 5f73dad67e0..00000000000 --- a/docs/client-concepts/connection-pooling/request-overrides/request-timeouts-overrides.asciidoc +++ /dev/null @@ -1,105 +0,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/ClientConcepts/ConnectionPooling/RequestOverrides/RequestTimeoutsOverrides.doc.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! -//// - -[[request-timeout]] -=== Request timeouts - -While you can specify Request time out globally you can override this per request too - -we set up a 10 node cluster with a global time out of 20 seconds. -Each call on a node takes 10 seconds. So we can only try this call on 2 nodes -before the max request time out kills the client call. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(10))) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().RequestTimeout(TimeSpan.FromSeconds(20))) -); - -audit = await audit.TraceCalls( - new ClientCall { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { MaxTimeoutReached } - }, - /** - * On the second request we specify a request timeout override to 80 seconds - * We should now see more nodes being tried. - */ - new ClientCall(r => r.RequestTimeout(TimeSpan.FromSeconds(80))) - { - { BadResponse, 9203 }, - { BadResponse, 9204 }, - { BadResponse, 9205 }, - { BadResponse, 9206 }, - { BadResponse, 9207 }, - { BadResponse, 9208 }, - { HealthyResponse, 9209 }, - } -); ----- - -[float] -=== Connect timeouts - -Connect timeouts can be overridden on a per request basis. - -Whilst the underlying `WebRequest` in the case of Desktop CLR -and `HttpClient` in the case of Core CLR cannot distinguish between connect and retry timeouts, -we use a separate configuration value for ping requests to allow ping to be configured -independently. - -We set up a 10 node cluster with a global time out of 20 seconds. -Each call on a node takes 10 seconds. So we can only try this call on 2 nodes -before the max request time out kills the client call. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Ping(p => p.SucceedAlways().Takes(TimeSpan.FromSeconds(20))) - .ClientCalls(r => r.SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.RequestTimeout(TimeSpan.FromSeconds(10)).PingTimeout(TimeSpan.FromSeconds(10))) -); - -audit = await audit.TraceCalls( - /** - * The first call uses the configured global settings, request times out after 10 seconds and ping - * calls always take 20, so we should see a single ping failure - */ - new ClientCall { - { PingFailure, 9200 }, - { MaxTimeoutReached } - }, - /** - * On the second request we set a request ping timeout override of 2 seconds - * We should now see more nodes being tried before the request timeout is hit. - */ - new ClientCall(r => r.PingTimeout(TimeSpan.FromSeconds(2))) - { - { PingFailure, 9202 }, - { PingFailure, 9203 }, - { PingFailure, 9204 }, - { PingFailure, 9205 }, - { PingFailure, 9206 }, - { MaxTimeoutReached } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/request-overrides/respects-allowed-status-code.asciidoc b/docs/client-concepts/connection-pooling/request-overrides/respects-allowed-status-code.asciidoc deleted file mode 100644 index e4e0ed9a1b5..00000000000 --- a/docs/client-concepts/connection-pooling/request-overrides/respects-allowed-status-code.asciidoc +++ /dev/null @@ -1,36 +0,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/ClientConcepts/ConnectionPooling/RequestOverrides/RespectsAllowedStatusCode.doc.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! -//// - -[[allowed-status-codes]] -=== Allowed status codes - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways(400)) - .StaticConnectionPool() - .Settings(s => s.DisablePing().MaximumRetries(0)) -); - -audit = await audit.TraceCalls( - new ClientCall { - { BadResponse, 9200 } - }, - new ClientCall(r => r.AllowedStatusCodes(400)) { - { HealthyResponse, 9201 } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/request-overrides/respects-force-node.asciidoc b/docs/client-concepts/connection-pooling/request-overrides/respects-force-node.asciidoc deleted file mode 100644 index 3cad0b2ce26..00000000000 --- a/docs/client-concepts/connection-pooling/request-overrides/respects-force-node.asciidoc +++ /dev/null @@ -1,37 +0,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/ClientConcepts/ConnectionPooling/RequestOverrides/RespectsForceNode.doc.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! -//// - -[[forcing-nodes]] -=== Forcing nodes - -Sometimes you might want to fire a single request to a specific node. You can do so using the `ForceNode` -request configuration. This will ignore the pool and not retry. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.SucceedAlways()) - .ClientCalls(r => r.OnPort(9208).FailAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall(r => r.ForceNode(new Uri("http://localhost:9208"))) { - { BadResponse, 9208 } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/request-overrides/respects-max-retry-overrides.asciidoc b/docs/client-concepts/connection-pooling/request-overrides/respects-max-retry-overrides.asciidoc deleted file mode 100644 index c49a88f5635..00000000000 --- a/docs/client-concepts/connection-pooling/request-overrides/respects-max-retry-overrides.asciidoc +++ /dev/null @@ -1,85 +0,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/ClientConcepts/ConnectionPooling/RequestOverrides/RespectsMaxRetryOverrides.doc.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! -//// - -[[maximum-retries-per-request]] -=== Maximum retries per request - -By default retry as many times as we have nodes. However retries still respect the request timeout. -Meaning if you have a 100 node cluster and a request timeout of 20 seconds we will retry as many times as we can -but give up after 20 seconds - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways()) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing()) -); - -audit = await audit.TraceCall( - new ClientCall(r => r.MaxRetries(2)) { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { BadResponse, 9202 }, - { MaxRetriesReached } - } -); ----- - -When you have a 100 node cluster you might want to ensure a fixed number of retries. -Remember that the actual number of requests is initial attempt + set number of retries - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways()) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .StaticConnectionPool() - .Settings(s => s.DisablePing().MaximumRetries(5)) -); - -audit = await audit.TraceCall( - new ClientCall(r => r.MaxRetries(2)) { - { BadResponse, 9200 }, - { BadResponse, 9201 }, - { BadResponse, 9202 }, - { MaxRetriesReached } - } -); ----- - -This makes setting any retry setting on a single node connection pool a NOOP, this is by design! -Connection pooling and connection failover is about trying to fail sanely whilst still utilizing available resources and -not giving up on the fail fast principle. It's *NOT* a mechanism for forcing requests to succeed. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .ClientCalls(r => r.FailAlways().Takes(TimeSpan.FromSeconds(3))) - .ClientCalls(r => r.OnPort(9209).SucceedAlways()) - .SingleNodeConnection() - .Settings(s => s.DisablePing().MaximumRetries(10)) -); - -audit = await audit.TraceCall( - new ClientCall(r => r.MaxRetries(10)) { - { BadResponse, 9200 } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/round-robin/round-robin.asciidoc b/docs/client-concepts/connection-pooling/round-robin/round-robin.asciidoc deleted file mode 100644 index b142d1e1876..00000000000 --- a/docs/client-concepts/connection-pooling/round-robin/round-robin.asciidoc +++ /dev/null @@ -1,101 +0,0 @@ -ranch} - -: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/ClientConcepts/ConnectionPooling/RoundRobin/RoundRobin.doc.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! -//// - -[[round-robin]] -== Round robin behaviour - -<> and <> connection pools -round robin over the `live` nodes to evenly distribute requests over all known nodes. - -[float] -=== CreateView - -This is the method on an `IConnectionPool` that creates a view of all the live nodes in the cluster that the client -knows about. Different connection pool implementations can decide on the view to return, for example, - -* `SingleNodeConnectionPool` is only ever seeded with and hence only knows about one node - -* `StickyConnectionPool` can return a view of live nodes with the same starting position as the last live node a request was made against - -* `SniffingConnectionPool` returns a view with a changing starting position that wraps over on each call - -`CreateView` is implemented in a lock free thread safe fashion, meaning each callee gets returned -its own cursor to advance over the internal list of nodes. This to guarantee each request that needs to -fall over tries all the nodes without suffering from noisy neighbours advancing a global cursor. - -Here we have setup a Static connection pool seeded with 10 nodes. We force randomization OnStartup to false -so that we can test the nodes being returned are in the order we expect them to be. - -[source,csharp] ----- -var uris = Enumerable.Range(9200, NumberOfNodes).Select(p => new Uri("http://localhost:" + p)); -var staticPool = new StaticConnectionPool(uris, randomize: false); -var sniffingPool = new SniffingConnectionPool(uris, randomize: false); - -this.AssertCreateView(staticPool); -this.AssertCreateView(sniffingPool); ----- - -So what order do we expect? Imagine the following: - -. Thread A calls `CreateView()` first without a local cursor and takes the current value from the internal global cursor, which is `0` - -. Thread B calls `CreateView()` second without a local cursor and therefore starts at `1` - -. After this, each thread should walk the nodes in successive order using their local cursor. For example, Thread A might -get 0,1,2,3,5 and thread B will get 1,2,3,4,0. - -[source,csharp] ----- -var startingPositions = Enumerable.Range(0, NumberOfNodes) - .Select(i => pool.CreateView().First()) - .Select(n => n.Uri.Port) - .ToList(); - -var expectedOrder = Enumerable.Range(9200, NumberOfNodes); -startingPositions.Should().ContainInOrder(expectedOrder); ----- - -What the above code just proved is that each call to `CreateView()` gets assigned the next available node. - -Lets up the ante: - -. Call `CreateView()` over `NumberOfNodes * 2` threads - -. On each thread, call `CreateView()` `NumberOfNodes * 10` times using a local cursor. - -We'll validate that each thread sees all the nodes and that they wrap over, for example, after node 9209 -comes 9200 again - -[source,csharp] ----- -var threadedStartPositions = new ConcurrentBag(); -var threads = Enumerable.Range(0, 20) - .Select(i => CreateThreadCallingCreateView(pool, threadedStartPositions)) - .ToList(); - -foreach (var t in threads) t.Start(); -foreach (var t in threads) t.Join(); ----- - -Each thread reported the first node it started off. Let's make sure we see each node twice -because we started `NumberOfNodes * 2` threads - -[source,csharp] ----- -var grouped = threadedStartPositions.GroupBy(p => p).ToList(); -grouped.Count.Should().Be(NumberOfNodes); -grouped.Select(p => p.Count()).Should().OnlyContain(p => p == 2); ----- - diff --git a/docs/client-concepts/connection-pooling/round-robin/skip-dead-nodes.asciidoc b/docs/client-concepts/connection-pooling/round-robin/skip-dead-nodes.asciidoc deleted file mode 100644 index 3a350e7214f..00000000000 --- a/docs/client-concepts/connection-pooling/round-robin/skip-dead-nodes.asciidoc +++ /dev/null @@ -1,195 +0,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/ClientConcepts/ConnectionPooling/RoundRobin/SkipDeadNodes.doc.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! -//// - -[[skipping-dead-nodes]] -=== Skipping dead nodes - -When selecting nodes, the connection pool will try and skip all nodes that are marked as dead. - -==== CreateView - -CreateView is implemented in a lock free thread safe fashion, meaning each callee gets returned its own cursor to advance -over the internal list of nodes. This to guarantee each request that needs to fall over tries all the nodes without -suffering from noisy neighbours advancing a global cursor. - -[source,csharp] ----- -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -var pool = new StaticConnectionPool(seeds, randomize: false); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9202); -} - -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -seeds.First().MarkDead(DateTime.Now.AddDays(1)); -var pool = new StaticConnectionPool(seeds, randomize: false); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9202); -} ----- - -After we marked the first node alive again, we expect it to be hit again - -[source,csharp] ----- -seeds.First().MarkAlive(); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9202); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); -} - -var dateTimeProvider = new TestableDateTimeProvider(); -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -seeds.First().MarkDead(dateTimeProvider.Now().AddDays(1)); -var pool = new StaticConnectionPool(seeds, randomize: false, dateTimeProvider: dateTimeProvider); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9202); -} ----- - -If we roll the clock forward two days, the node that was marked -dead until tomorrow (or yesterday!) should be resurrected - -[source,csharp] ----- -dateTimeProvider.ChangeTime(d => d.AddDays(2)); -var n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9201); -n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9202); -n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9200); -n.IsResurrected.Should().BeTrue(); ----- - -A cluster with 2 nodes where the second node fails on ping - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .ClientCalls(p => p.Succeeds(Always)) - .ClientCalls(p => p.OnPort(9201).FailAlways()) - .ClientCalls(p => p.OnPort(9203).FailAlways()) - .StaticConnectionPool() - .Settings(p=>p.DisablePing()) -); - -await audit.TraceCalls( - new ClientCall { - { HealthyResponse, 9200}, <1> - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(0) } - }, - new ClientCall { - { BadResponse, 9201}, <2> - { HealthyResponse, 9202}, - /** Finally we assert that the connectionpool has one node that is marked as dead */ - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(1) } - }, - new ClientCall { - { BadResponse, 9203}, <3> - { HealthyResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - new ClientCall { - { HealthyResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - new ClientCall { - { HealthyResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - new ClientCall { - { HealthyResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - new ClientCall { - { HealthyResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - } -); ----- -<1> The first call goes to 9200 which succeeds -<2> The 2nd call does a ping on 9201 because its used for the first time. It fails so we wrap over to node 9202 -<3> The next call goes to 9203 which fails so we should wrap over - -A cluster with 2 nodes where the second node fails on ping - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .ClientCalls(p => p.Fails(Always)) - .StaticConnectionPool() - .Settings(p=>p.DisablePing()) -); - -await audit.TraceCalls( - new ClientCall { - { BadResponse, 9200}, <1> - { BadResponse, 9201}, - { BadResponse, 9202}, - { BadResponse, 9203}, - { MaxRetriesReached }, - { FailedOverAllNodes }, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, <2> - { Resurrection, 9201}, - { BadResponse, 9201}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9202}, - { BadResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9203}, - { BadResponse, 9203}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9200}, - { BadResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - } -); ----- -<1> All the calls fail -<2> After all our registered nodes are marked dead we want to sample a single dead node each time to quickly see if the cluster is back up. We do not want to retry all 4 nodes - diff --git a/docs/client-concepts/connection-pooling/sniffing/address-parsing.asciidoc b/docs/client-concepts/connection-pooling/sniffing/address-parsing.asciidoc deleted file mode 100644 index c598893bb9c..00000000000 --- a/docs/client-concepts/connection-pooling/sniffing/address-parsing.asciidoc +++ /dev/null @@ -1,69 +0,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/ClientConcepts/ConnectionPooling/Sniffing/AddressParsing.doc.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! -//// - -[[address-parsing]] -=== Address Parsing - -[source,csharp] ----- -var testcases = new[,] -{ - {"[::1]:9200", "[::1]", "9200"}, - {"192.168.2.1:231", "192.168.2.1", "231"}, - {"[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80", "[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]", "80"}, - {"[1080:0:0:0:8:800:200C:417A]:1234", "[1080:0:0:0:8:800:200C:417A]", "1234"}, - {"[3ffe:2a00:100:7031::1]:1", "[3ffe:2a00:100:7031::1]", "1"}, - {"[1080::8:800:200C:417A]:123", "[1080::8:800:200C:417A]", "123"}, - {"[::192.9.5.5]:12", "[::192.9.5.5]", "12"}, - {"[::FFFF:129.144.52.38]:80", "[::FFFF:129.144.52.38]", "80"}, - {"[2010:836B:4179::836B:4179]:34533", "[2010:836B:4179::836B:4179]", "34533"} -}; - -for (var i = 0; i < testcases.GetLength(0); i++) -{ - var address = testcases[i, 0]; - var ip = testcases[i, 1]; - var port = testcases[i, 2]; - - var match = SniffParser.AddressRegex.Match(address); - - match.Success.Should().BeTrue(); - - match.Groups["ip"].Value.Should().BeEquivalentTo(ip); - match.Groups["port"].Value.Should().BeEquivalentTo(port); -} - -var testcases = new[,] -{ - {"helloworld/[::1]:9200", "helloworld", "[::1]", "9200"}, - {"elastic.co/192.168.2.1:231", "elastic.co", "192.168.2.1", "231"} -}; - -for (var i = 0; i < testcases.GetLength(0); i++) -{ - var address = testcases[i, 0]; - var fqdn = testcases[i, 1]; - var ip = testcases[i, 2]; - var port = testcases[i, 3]; - - var match = SniffParser.AddressRegex.Match(address); - - match.Success.Should().BeTrue(); - - match.Groups["fqdn"].Value.Should().BeEquivalentTo(fqdn); - match.Groups["ip"].Value.Should().BeEquivalentTo(ip); - match.Groups["port"].Value.Should().BeEquivalentTo(port); -} ----- - diff --git a/docs/client-concepts/connection-pooling/sniffing/on-connection-failure.asciidoc b/docs/client-concepts/connection-pooling/sniffing/on-connection-failure.asciidoc deleted file mode 100644 index b7589d44d94..00000000000 --- a/docs/client-concepts/connection-pooling/sniffing/on-connection-failure.asciidoc +++ /dev/null @@ -1,209 +0,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/ClientConcepts/ConnectionPooling/Sniffing/OnConnectionFailure.doc.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! -//// - -[[sniffing-on-connection-failure]] -=== Sniffing on connection failure - -Sniffing on connection is enabled by default when using a connection pool that allows reseeding. -The only connection pool we ship with that allows this is the <>. - -This can be very handy to force a refresh of the connection pool's known healthy nodes by asking the Elasticsearch cluster itself, and -a sniff tries to get the nodes by asking each node it currently knows about, until one responds. - -Here we seed our connection with 5 known nodes on ports 9200-9204, of which we think -9202, 9203, 9204 are master eligible nodes. Our virtualized cluster will throw once when doing -a search on 9201. This should cause a sniff to be kicked off. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(5) - .MasterEligible(9202, 9203, 9204) - .ClientCalls(r => r.SucceedAlways()) - .ClientCalls(r => r.OnPort(9201).Fails(Once)) <1> - .Sniff(p => p.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(3) - .MasterEligible(9200, 9202) - .ClientCalls(r => r.OnPort(9201).Fails(Once)) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(s => s.SucceedAlways(Virtual.Elasticsearch <2> - .Bootstrap(3, 9210) - .MasterEligible(9210, 9212) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(r => r.SucceedAlways()) - )) - )) - .SniffingConnectionPool() - .Settings(s => s.DisablePing().SniffOnStartup(false)) -); - -audit = await audit.TraceCalls( -/** */ - new ClientCall { - { HealthyResponse, 9200 }, - { pool => pool.Nodes.Count.Should().Be(5) } - }, - new ClientCall { - { BadResponse, 9201}, - { SniffOnFail }, - { SniffSuccess, 9202}, <3> - { HealthyResponse, 9200}, - { pool => pool.Nodes.Count.Should().Be(3) } <4> - }, - new ClientCall { - { BadResponse, 9201}, - { SniffOnFail }, <5> - { SniffSuccess, 9200}, - { HealthyResponse, 9210}, - { pool => pool.Nodes.Count.Should().Be(3) } - }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9212 } }, - new ClientCall { { HealthyResponse, 9210 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9212 } }, - new ClientCall { { HealthyResponse, 9210 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9212 } }, - new ClientCall { { HealthyResponse, 9210 } } -); ----- -<1> When the call fails on 9201, the following sniff succeeds and returns a new cluster state of healthy nodes. This cluster only has 3 nodes and the known masters are 9200 and 9202. A search on 9201 is setup to still fail once -<2> After this second failure on 9201, another sniff will happen which returns a cluster state that no longer fails but looks completely different; It's now three nodes on ports 9210 - 9212, with 9210 and 9212 being master eligible. -<3> We assert we do a sniff on our first known master node 9202 after the failed call on 9201 -<4> Our pool should now have three nodes -<5> We assert we do a sniff on the first master node in our updated cluster - -==== Sniffing after ping failure - -Here we set up our cluster exactly the same as the previous setup -Only we enable pinging (default is `true`) and make the ping fail - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(5) - .MasterEligible(9202, 9203, 9204) - .Ping(r => r.OnPort(9201).Fails(Once)) - .Ping(r => r.SucceedAlways()) - .ClientCalls(c=>c.SucceedAlways()) - .Sniff(p => p.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(3) - .MasterEligible(9200, 9202) - .Ping(r => r.OnPort(9201).Fails(Once)) - .Ping(r => r.SucceedAlways()) - .ClientCalls(c=>c.SucceedAlways()) - .Sniff(s => s.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(3, 9210) - .MasterEligible(9210, 9211) - .Ping(r => r.SucceedAlways()) - .Sniff(r => r.SucceedAlways()) - .ClientCalls(c=>c.SucceedAlways()) - )) - )) - .SniffingConnectionPool() - .Settings(s => s.SniffOnStartup(false)) -); - -audit = await audit.TraceCalls( - new ClientCall { - { PingSuccess, 9200 }, - { HealthyResponse, 9200 }, - { pool => pool.Nodes.Count.Should().Be(5) } - }, - new ClientCall { - { PingFailure, 9201}, - { SniffOnFail }, <1> - { SniffSuccess, 9202}, - { PingSuccess, 9200}, - { HealthyResponse, 9200}, - { pool => pool.Nodes.Count.Should().Be(3) } <2> - }, - new ClientCall { - { PingFailure, 9201}, - { SniffOnFail }, <3> - { SniffSuccess, 9200}, - { PingSuccess, 9210}, - { HealthyResponse, 9210}, - { pool => pool.Nodes.Count.Should().Be(3) } - }, - new ClientCall { - { PingSuccess, 9211 }, - { HealthyResponse, 9211 } - }, - new ClientCall { - { PingSuccess, 9212 }, - { HealthyResponse, 9212 } - }, - new ClientCall { { HealthyResponse, 9210 } }, <4> - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9212 } }, - new ClientCall { { HealthyResponse, 9210 } } -); ----- -<1> We assert we do a sniff on our first known master node 9202 -<2> Our pool should now have three nodes -<3> We assert we do a sniff on the first master node in our updated cluster -<4> 9210 was already pinged after the sniff returned the new nodes - -==== Client uses publish address - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(2) - .MasterEligible(9200) - .ClientCalls(c=>c.SucceedAlways()) - .Ping(r => r.OnPort(9200).Fails(Once)) - .Ping(c=>c.SucceedAlways()) - .Sniff(p => p.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(10) - .MasterEligible(9200, 9202, 9201) - .PublishAddress("10.0.12.1") - .ClientCalls(c=>c.SucceedAlways()) - .Ping(c=>c.SucceedAlways()) - )) - .SniffingConnectionPool() - .Settings(s => s.SniffOnStartup(false)) -); - -void HostAssert(Audit a, string host, int expectedPort) -{ - a.Node.Uri.Host.Should().Be(host); - a.Node.Uri.Port.Should().Be(expectedPort); -} -void SniffUrlAssert(Audit a, string host, int expectedPort) -{ - HostAssert(a, host, expectedPort); - var sniffUri = new UriBuilder(a.Node.Uri) - { - Path = ElasticsearchProductRegistration.SniffPath, - Query = "flat_settings=true&timeout=2s" - }.Uri; - sniffUri.PathEquals(a.Path, nameof(SniffUrlAssert)); -} - -audit = await audit.TraceCalls( - new ClientCall { - { PingFailure, a => HostAssert(a, "localhost", 9200)}, - { SniffOnFail }, - { SniffSuccess, a => SniffUrlAssert(a, "localhost", 9200)}, - { PingSuccess, a => HostAssert(a, "10.0.12.1", 9200)}, - { HealthyResponse, a => HostAssert(a, "10.0.12.1", 9200)}, - { pool => pool.Nodes.Count.Should().Be(10) } <1> - } -); ----- -<1> Our pool should now have 10 nodes - diff --git a/docs/client-concepts/connection-pooling/sniffing/on-stale-cluster-state.asciidoc b/docs/client-concepts/connection-pooling/sniffing/on-stale-cluster-state.asciidoc deleted file mode 100644 index 37aaab4a6a5..00000000000 --- a/docs/client-concepts/connection-pooling/sniffing/on-stale-cluster-state.asciidoc +++ /dev/null @@ -1,106 +0,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/ClientConcepts/ConnectionPooling/Sniffing/OnStaleClusterState.doc.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! -//// - -[[sniffing-periodically]] -=== Sniffing periodically - -Connection pools that return true for `SupportsReseeding` can be configured to sniff periodically. -In addition to sniffing on startup and sniffing on failures, sniffing periodically can benefit scenarios where -clusters are often scaled horizontally during peak hours. An application might have a healthy view of a subset of the nodes, -but without sniffing periodically, it will never find the nodes that have been added as part of horizontal scaling, -to help out with load - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .MasterEligible(9202, 9203, 9204) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(s => s.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(100) - .MasterEligible(9202, 9203, 9204) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(ss => ss.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(10) - .MasterEligible(9202, 9203, 9204) - .ClientCalls(r => r.SucceedAlways()) - )) - )) - .SniffingConnectionPool() - .Settings(s => s - .DisablePing() - .SniffOnConnectionFault(false) - .SniffOnStartup(false) - .SniffLifeSpan(TimeSpan.FromMinutes(30)) - ) -); ----- - -healthy cluster all nodes return healthy responses - -[source,csharp] ----- -audit = await audit.TraceCalls( - new ClientCall { { HealthyResponse, 9200 } }, - new ClientCall { { HealthyResponse, 9201 } }, - new ClientCall { { HealthyResponse, 9202 } }, - new ClientCall { { HealthyResponse, 9203 } }, - new ClientCall { { HealthyResponse, 9204 } }, - new ClientCall { { HealthyResponse, 9205 } }, - new ClientCall { { HealthyResponse, 9206 } }, - new ClientCall { { HealthyResponse, 9207 } }, - new ClientCall { { HealthyResponse, 9208 } }, - new ClientCall { { HealthyResponse, 9209 } }, - new ClientCall { - { HealthyResponse, 9200 }, - { pool => pool.Nodes.Count.Should().Be(10) } - } -); ----- - -Now let's forward the clock 31 minutes. Our sniff lifespan should now go stale -and the first call should do a sniff, which discovers we've scaled up to 100 nodes! - -[source,csharp] ----- -audit.ChangeTime(d => d.AddMinutes(31)); - -audit = await audit.TraceCalls( - new ClientCall { - { SniffOnStaleCluster }, - { SniffSuccess, 9202 }, - { HealthyResponse, 9201 }, - { pool => pool.Nodes.Count.Should().Be(100) } - } -); ----- - -If we move the clock forward again by another 31 minutes, we now discover that we've scaled back -down to 10 nodes - -[source,csharp] ----- -audit.ChangeTime(d => d.AddMinutes(31)); - -audit = await audit.TraceCalls( - new ClientCall { - - { SniffOnStaleCluster }, - { SniffSuccess, 9202 }, - { HealthyResponse, 9200 }, - { pool => pool.Nodes.Count.Should().Be(10) } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/sniffing/on-startup.asciidoc b/docs/client-concepts/connection-pooling/sniffing/on-startup.asciidoc deleted file mode 100644 index dc66de4d06d..00000000000 --- a/docs/client-concepts/connection-pooling/sniffing/on-startup.asciidoc +++ /dev/null @@ -1,190 +0,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/ClientConcepts/ConnectionPooling/Sniffing/OnStartup.doc.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! -//// - -[[sniffing-on-startup]] -=== Sniffing on startup - -<> that return `true` for `SupportsReseeding` -will sniff on startup by default. - -We can demonstrate this by creating a _virtual_ Elasticsearch cluster using NEST's Test cluster framework. - -Here we create a 10 node cluster that uses a <>, setting -sniff to fail on all nodes _*except*_ 9202 - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202).Succeeds(Always)) - .Ping(c=>c.SucceedAlways()) - .ClientCalls(r => r.SucceedAlways()) - .SniffingConnectionPool() - .AllDefaults() -); ----- - -When the client call is made, from the audit trail we see that the pool first tried to sniff on startup, -with a sniff failure on 9200 and 9201, followed by a sniff success on 9202. A ping and then healthy response are made on -9200 - -[source,csharp] ----- -await audit.TraceCall( - new ClientCall - { - { SniffOnStartup}, - { SniffFailure, 9200}, - { SniffFailure, 9201}, - { SniffSuccess, 9202}, - { PingSuccess , 9200}, - { HealthyResponse, 9200} - } - ); ----- - -==== Occurs once - -**A sniff on startup only happens once**. That is, - -. a sniff is attempted on a node - -. if that node fails, a sniff is attempted on the next node - -. this continues until a sniff succeeds - -. a sniff on startup does not occur again. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202).Succeeds(Always)) - .ClientCalls(r => r.SucceedAlways()) - .Ping(c=>c.SucceedAlways()) - .SniffingConnectionPool() - .AllDefaults() -); - -await audit.TraceCalls( - new ClientCall - { - { SniffOnStartup}, - { SniffFailure, 9200}, - { SniffFailure, 9201}, - { SniffSuccess, 9202}, - { PingSuccess , 9200}, - { HealthyResponse, 9200} - }, - new ClientCall - { - { PingSuccess, 9201}, - { HealthyResponse, 9201} - } -); ----- - -==== Uses cluster state - -**A sniff on startup will use the returned cluster state**. - -In this next example, the state of the cluster returned from the successful sniff -is used for subsequent client requests - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202).Succeeds(Always, - Virtual.Elasticsearch.Bootstrap(8, startFrom: 9204) - .Ping(c=>c.SucceedAlways()) - .ClientCalls(c=>c.SucceedAlways()) - - )) <1> - .ClientCalls(r => r.SucceedAlways()) - .Ping(c=>c.SucceedAlways()) - .SniffingConnectionPool() - .AllDefaults() -); - -await audit.TraceCall(new ClientCall { - { SniffOnStartup}, - { SniffFailure, 9200}, - { SniffFailure, 9201}, - { SniffSuccess, 9202}, - { PingSuccess, 9204}, <2> - { HealthyResponse, 9204} -}); ----- -<1> Sniffing returns 8 nodes, starting from 9204 -<2> After successfully sniffing, the ping now happens on 9204 - -==== Prefers master eligible nodes - -Sniffing prefers to run on master eligible nodes - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(new[] { - new Node(new Uri("http://localhost:9200"), NotMasterEligible), - new Node(new Uri("http://localhost:9201"), NotMasterEligible), - new Node(new Uri("http://localhost:9202")), - }) - .Sniff(s => s.Succeeds(Always)) - .Ping(s => s.Succeeds(Always)) - .ClientCalls(r => r.SucceedAlways()) - .SniffingConnectionPool() - .AllDefaults() -); - -await audit.TraceCall(new ClientCall { - { SniffOnStartup}, - { SniffSuccess, 9202}, - { PingSuccess, 9200}, - { HealthyResponse, 9200} -}); ----- - -although it will fail over to non-master eligible nodes when sniffing fails on master eligible nodes - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(new[] { - new Node(new Uri("http://localhost:9200")), - new Node(new Uri("http://localhost:9201")), - new Node(new Uri("http://localhost:9202"), NotMasterEligible), - }) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202).Succeeds(Always)) - .Ping(c=>c.SucceedAlways()) - .ClientCalls(r => r.SucceedAlways()) - .SniffingConnectionPool() - .AllDefaults() -); - -await audit.TraceCall(new ClientCall { - { SniffOnStartup}, - { SniffFailure, 9200}, - { SniffFailure, 9201}, - { SniffSuccess, 9202}, - { PingSuccess, 9200}, - { HealthyResponse, 9200} -}); ----- - diff --git a/docs/client-concepts/connection-pooling/sniffing/role-detection.asciidoc b/docs/client-concepts/connection-pooling/sniffing/role-detection.asciidoc deleted file mode 100644 index 5dec3e66998..00000000000 --- a/docs/client-concepts/connection-pooling/sniffing/role-detection.asciidoc +++ /dev/null @@ -1,305 +0,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/ClientConcepts/ConnectionPooling/Sniffing/RoleDetection.doc.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! -//// - -[[sniffing-role-detection]] -=== Sniffing role detection - -When we sniff the cluster state, we detect the role of each node, for example, -whether it's master eligible, a node that holds data, etc. -We can then use this information when selecting a node to perform an API call on. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202) - .Succeeds(Always, Virtual.Elasticsearch.Bootstrap(8).MasterEligible(9200, 9201, 9202)) - ) - .SniffingConnectionPool() - .AllDefaults() -) -{ - AssertPoolBeforeStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(10); - pool.Nodes.Where(n => n.HasFeature(MasterEligible)).Should().HaveCount(10); - }, - AssertPoolAfterStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(8); - pool.Nodes.Where(n => n.HasFeature(MasterEligible)).Should().HaveCount(3); - } -}; - -await audit.TraceStartup(); - -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.Fails(Always)) - .Sniff(s => s.OnPort(9202) - .Succeeds(Always, Virtual.Elasticsearch.Bootstrap(8).StoresNoData(9200, 9201, 9202)) - ) - .SniffingConnectionPool() - .AllDefaults() -) -{ - AssertPoolBeforeStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(10); - pool.Nodes.Where(n => n.HasFeature(HoldsData)).Should().HaveCount(10); - }, - - AssertPoolAfterStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(8); - pool.Nodes.Where(n => n.HasFeature(HoldsData)).Should().HaveCount(5); - } -}; -await audit.TraceStartup(); - -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(10) - .Sniff(s => s.SucceedAlways() - .Succeeds(Always, Virtual.Elasticsearch.Bootstrap(8).StoresNoData(9200, 9201, 9202).HttpDisabled(9201)) - ) - .SniffingConnectionPool() - .AllDefaults() -) -{ - AssertPoolBeforeStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(10); - pool.Nodes.Where(n => n.HasFeature(HoldsData)).Should().HaveCount(10); - pool.Nodes.Where(n => n.HasFeature(HttpEnabled)).Should().HaveCount(10); - pool.Nodes.Should().OnlyContain(n => n.Uri.Host == "localhost"); - }, - - AssertPoolAfterStartup = (pool) => - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(7, "we filtered the node that has no http enabled"); - pool.Nodes.Should().NotContain(n=>n.Uri.Port == 9201); - pool.Nodes.Where(n => n.HasFeature(HoldsData)).Should().HaveCount(5); - } -}; -await audit.TraceStartup(); ----- - -In this example, We create a Virtual cluster with a Sniffing connection pool that seeds all the known master nodes. -When the client sniffs on startup, we see that the cluster is 20 nodes in total, with the master eligible nodes -storing no data. - -[source,csharp] ----- -var masterNodes = new[] {9200, 9201, 9202}; -var totalNodesInTheCluster = 20; -// -var audit = new Auditor(() => Virtual.Elasticsearch - .BootstrapAllMasterEligableOnly(masterNodes.Length) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(s => s.SucceedAlways() - .Succeeds(Always, Virtual.Elasticsearch - .Bootstrap(totalNodesInTheCluster) - .StoresNoData(masterNodes) - .MasterEligible(masterNodes) - .ClientCalls(r => r.SucceedAlways()) - ) - ) - .SniffingConnectionPool() - .Settings(s=>s.DisablePing()) -) -{ - AssertPoolBeforeStartup = pool => <1> - { - pool.Should().NotBeNull(); - pool.Nodes.Should().HaveCount(3, "we seeded 3 master only nodes at the start of the application"); - pool.Nodes.Where(n => n.HasFeature(HoldsData)).Should().HaveCount(0, "none of which hold data"); - }, - AssertPoolAfterStartup = (pool) => <2> - { - pool.Should().NotBeNull(); - var nodes = pool.CreateView().ToList(); - nodes.Count().Should().Be(20, "Master nodes are included in the registration of nodes since we still favor sniffing on them"); - } -}; ----- -<1> Before the sniff, assert we only see three master only nodes -<2> After the sniff, assert we now know about the existence of 20 nodes. - -After the sniff has happened on 9200 before the first API call, assert that the subsequent API -call hits the first non master eligible node - -[source,csharp] ----- -audit = await audit.TraceStartup(new ClientCall -{ - { SniffSuccess, 9200}, - { HealthyResponse, 9203} <1> -}); ----- -<1> Healthy response from 9203, not a master eligible node - -To verify that the client behaves as we expect when making requests to the virtual cluster, make 1000 different -client calls and assert that each is not sent to any of the known master only nodes - -[source,csharp] ----- -var seenNodes = new HashSet(); -foreach (var _ in Enumerable.Range(0, 1000)) -{ - audit = await audit.TraceCalls( - new ClientCall {{HealthyResponse, (a) => - { - var port = a.Node.Uri.Port; - masterNodes.Should().NotContain(port); - seenNodes.Add(port); - }}} - ); -} - -seenNodes.Should().HaveCount(totalNodesInTheCluster - masterNodes.Length); <1> ----- -<1> `seenNodes` is a hash set of all the ports we hit. assert that this is equal to `known total nodes - known master only nodes` - -==== Node predicates - -A predicate can be specified on `ConnectionSettings` that can be used to determine which nodes in the cluster API calls -can be executed on. - -As an example, Let's create a Virtual cluster with a Sniffing connection pool that seeds all 20 nodes to begin. When the client -sniffs on startup, we see the cluster is still 20 nodes in total, however we are now aware of the -actual configured settings for the nodes from the cluster response. - -[source,csharp] ----- -var totalNodesInTheCluster = 20; -var setting = "node.attr.rack_id"; -var value = "rack_one"; -var nodesInRackOne = new[] {9204, 9210, 9213}; - -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(totalNodesInTheCluster) - .ClientCalls(r => r.SucceedAlways()) - .Sniff(s => s.SucceedAlways() - .Succeeds(Always, Virtual.Elasticsearch - .Bootstrap(totalNodesInTheCluster) - .HasSetting(setting, value, nodesInRackOne) - .ClientCalls(r => r.SucceedAlways()) - ) - ) - .SniffingConnectionPool() - .Settings(s=>s - .DisablePing() <1> - .NodePredicate(node => <2> - node.Settings.ContainsKey(setting) && - node.Settings[setting].ToString() == value - ) - ) -) -{ - AssertPoolAfterStartup = pool => <3> - { - pool.Should().NotBeNull(); - var nodes = pool.CreateView().ToList(); - nodes.Count(n => n.Settings.ContainsKey(setting)).Should().Be(3, "only three nodes are in rack_one"); - } -}; ----- -<1> for testing simplicity, disable pings -<2> We only want to execute API calls to nodes in rack_one -<3> After sniffing on startup, assert that the pool of nodes that the client will execute API calls against only contains the three nodes that are in `rack_one` - -With the cluster set up, assert that the sniff happens on 9200 before the first API call -and that API call hits the first node in `rack_one` - -[source,csharp] ----- -audit = await audit.TraceStartup(new ClientCall -{ - { SniffSuccess, 9200}, - { HealthyResponse, 9204} -}); ----- - -To prove that the client is working as expected, do a 1000 different client calls and -assert that each is sent to a node in `rack_one` only, -respecting the node predicate on connection settings - -[source,csharp] ----- -var seenNodes = new HashSet(); -foreach (var _ in Enumerable.Range(0, 1000)) -{ - audit = await audit.TraceCalls( - new ClientCall {{HealthyResponse, (a) => - { - var port = a.Node.Uri.Port; - nodesInRackOne.Should().Contain(port); - seenNodes.Add(port); - }}} - ); -} - -seenNodes.Should().HaveCount(nodesInRackOne.Length); ----- - -As another example of node predicates, let's set up a Virtual cluster with a _bad_ node predicate, i.e. -predicate that filters out *all* nodes from being the targets of API calls from the client - -[source,csharp] ----- -var totalNodesInTheCluster = 20; - -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(totalNodesInTheCluster) - .Sniff(s => s.SucceedAlways() - .Succeeds(Always, Virtual.Elasticsearch.Bootstrap(totalNodesInTheCluster)) - ) - .SniffingConnectionPool() - .Settings(s => s - .DisablePing() - .NodePredicate(node => false) <1> - ) -); ----- -<1> A _bad_ predicate that declines *all* nodes - -Now when making the client calls, the audit trail indicates that a sniff on startup succeeds, but the subsequent -API call fails because the node predicate filters out all nodes as targets on which to execute API calls - -[source,csharp] ----- -await audit.TraceUnexpectedTransportException(new ClientCall -{ - { SniffOnStartup }, <1> - { SniffSuccess }, <2> - { NoNodesAttempted } <3> -}, e => -{ - e.FailureReason.Should().Be(PipelineFailure.Unexpected); - - Func debug = () => e.DebugInformation; - debug.Invoking(s => s.Invoke()).Should().NotThrow(); -}); ----- -<1> The audit trail indicates a sniff for the very first time on startup -<2> The sniff succeeds because the node predicate is ignored when sniffing -<3> when trying to do an actual API call however, the predicate prevents any nodes from being attempted - diff --git a/docs/client-concepts/connection-pooling/sticky/skip-dead-nodes.asciidoc b/docs/client-concepts/connection-pooling/sticky/skip-dead-nodes.asciidoc deleted file mode 100644 index f3c2d9d8a3d..00000000000 --- a/docs/client-concepts/connection-pooling/sticky/skip-dead-nodes.asciidoc +++ /dev/null @@ -1,176 +0,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/ClientConcepts/ConnectionPooling/Sticky/SkipDeadNodes.doc.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! -//// - -[[skip-dead-nodes]] -=== Skip Dead Nodes - -Sticky - Skipping Dead Nodes -When selecting nodes the connection pool will try and skip all the nodes that are marked dead. - -[source,csharp] ----- -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -var pool = new StickyConnectionPool(seeds); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); -} - -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -seeds.First().MarkDead(DateTime.Now.AddDays(1)); -var pool = new StickyConnectionPool(seeds); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); -} ----- - -After we mark the first node alive again we expect it to be hit again - -[source,csharp] ----- -seeds.First().MarkAlive(); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9200); -} - -var dateTimeProvider = new TestableDateTimeProvider(); -var seeds = Enumerable.Range(9200, NumberOfNodes).Select(p => new Node(new Uri("http://localhost:" + p))).ToList(); -seeds.First().MarkDead(dateTimeProvider.Now().AddDays(1)); -var pool = new StickyConnectionPool(seeds, dateTimeProvider: dateTimeProvider); -for (var i = 0; i < 20; i++) -{ - var node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); - node = pool.CreateView().First(); - node.Uri.Port.Should().Be(9201); -} ----- - -If we forward our clock 2 days the node that was marked dead until tomorrow (or yesterday!) should be resurrected - -[source,csharp] ----- -dateTimeProvider.ChangeTime(d => d.AddDays(2)); -var n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9200); -n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9200); -n = pool.CreateView().First(); -n.Uri.Port.Should().Be(9200); -n.IsResurrected.Should().BeTrue(); ----- - -A cluster with 2 nodes where the second node fails on ping - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .ClientCalls(p => p.Succeeds(Always)) - .ClientCalls(p => p.OnPort(9200).FailAlways()) - .ClientCalls(p => p.OnPort(9201).FailAlways()) - .StickyConnectionPool() - .Settings(p => p.DisablePing()) -); - -await audit.TraceCalls( - /** The first call goes to 9200 which succeeds */ - new ClientCall { - { BadResponse, 9200}, - { BadResponse, 9201}, - { HealthyResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - /** The 2nd call does a ping on 9201 because its used for the first time. - * It fails so we wrap over to node 9202 */ - new ClientCall { - { HealthyResponse, 9202}, - /** Finally we assert that the connectionpool has one node that is marked as dead */ - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - }, - new ClientCall { - { HealthyResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(2) } - } -); ----- - -A cluster with 2 nodes where the second node fails on ping - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .ClientCalls(p => p.Fails(Always)) - .StickyConnectionPool() - .Settings(p => p.DisablePing()) -); - -await audit.TraceCalls( - /** All the calls fail */ - new ClientCall { - { BadResponse, 9200}, - { BadResponse, 9201}, - { BadResponse, 9202}, - { BadResponse, 9203}, - { MaxRetriesReached }, - { FailedOverAllNodes }, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - /** After all our registered nodes are marked dead we want to sample a single dead node - * each time to quickly see if the cluster is back up. We do not want to retry all 4 - * nodes - */ - new ClientCall { - { AllNodesDead }, - { Resurrection, 9200}, - { BadResponse, 9200}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9201}, - { BadResponse, 9201}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9202}, - { BadResponse, 9202}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - }, - new ClientCall { - { AllNodesDead }, - { Resurrection, 9203}, - { BadResponse, 9203}, - { pool => pool.Nodes.Where(n=>!n.IsAlive).Should().HaveCount(4) } - } -); ----- - diff --git a/docs/client-concepts/connection-pooling/sticky/sticky-sniffing-connection-pool.asciidoc b/docs/client-concepts/connection-pooling/sticky/sticky-sniffing-connection-pool.asciidoc deleted file mode 100644 index 6098d876718..00000000000 --- a/docs/client-concepts/connection-pooling/sticky/sticky-sniffing-connection-pool.asciidoc +++ /dev/null @@ -1,156 +0,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/ClientConcepts/ConnectionPooling/Sticky/StickySniffingConnectionPool.doc.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! -//// - -[[sticky-sniffing-connection-pool]] -=== Sticky Sniffing Connection Pool - -Sticky sniffing connection pool - -This pool is a is an extended StickyConnectionPool that supports sniffing and sorting -the nodes a sniff returns. - -[source,csharp] ----- -var numberOfNodes = 10; -var uris = Enumerable.Range(9200, numberOfNodes).Select(p => new Uri("http://localhost:" + p)); -var pool = new Elastic.Transport.StickySniffingConnectionPool(uris, (n)=>0f); ----- - -Here we have setup a sticky connection pool seeded with 10 nodes all weighted the same. -So what order we expect? Imagine the following: - -Thread A calls `.CreateView()` and gets returned the first live node -Thread B calls `.CreateView()` and gets returned the same node, since the first -node is still good - -[source,csharp] ----- -var startingPositions = Enumerable.Range(0, numberOfNodes) - .Select(i => pool.CreateView().First()) - .Select(n => n.Uri.Port) - .ToList(); - -var expectedOrder = Enumerable.Repeat(9200, numberOfNodes); -startingPositions.Should().ContainInOrder(expectedOrder); - -IEnumerable Nodes(int start) => Enumerable.Range(start, 4) - .Select(i => new Uri($"http://localhost:{9200 + i}")) - .Select((u, i) => new Node(u) - { - Settings = new Dictionary {{"rack", $"rack_{u.Port - 9200}"}} - }); ----- - -We set up a cluster with 4 nodes all having a different rack id - our Sticky Sniffing Connection Pool gives the most weight to rack_2 and rack_11. - We initially only seed nodes `9200-9203` in racks 0 to 3. So we should be sticky on rack_2. - We setup node 9202 to fail after two client calls in which case we sniff and find nodes - `9210-9213` in which case we should become sticky on rack_11. - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(Nodes(0)) - .ClientCalls(p => p.OnPort(9202).Succeeds(Twice)) - .ClientCalls(p => p.FailAlways()) - .Sniff(s=>s.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(Nodes(10)) - .ClientCalls(p => p.SucceedAlways())) - ) - .StickySniffingConnectionPool(n=> - (n.Settings.TryGetValue("rack", out var v) && v.ToString() == "rack_2" ? 10 : 0) - +(n.Settings.TryGetValue("rack", out var r) && r.ToString() == "rack_11" ? 10 : 0) - ) - .Settings(p => p.DisablePing().SniffOnStartup(false)) -); ----- - -Our first call happens on 9202 because we sorted that to the top as its on rack_2 -After two succesful calls our sticky node throws an exception and we sniff and failover. -Sniffing happens on the next node in order (9200) and the sniffing response returns nodes -9210 to 9213. We should now be stick on 9211 as its on rack_11 - -[source,csharp] ----- -await audit.TraceCalls( - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { - { BadResponse, 9202 }, - { SniffOnFail }, - { SniffSuccess, 9200 }, - { HealthyResponse, 9211}, - }, - /** Now we are sticky on 9211 onwards */ - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } }, - new ClientCall { { HealthyResponse, 9211 } } -); - -IEnumerable Nodes(int start) => Enumerable.Range(start, 4) - .Select(i => new Uri($"http://localhost:{9200 + i}")) - .Select((u, i) => new Node(u) - { - Settings = new Dictionary {{"rack", $"rack_{u.Port - 9200}"}} - }); ----- - -We seed a cluster with an array of 4 Uri's starting at port 9200. -Our sniffing sorted connection pool is set up to favor nodes in rack_2 - -[source,csharp] ----- -var audit = new Auditor(() => Virtual.Elasticsearch - .Bootstrap(4) - .ClientCalls(p => p.SucceedAlways()) - .Sniff(s=>s.SucceedAlways(Virtual.Elasticsearch - .Bootstrap(Nodes(0)) - .ClientCalls(p => p.SucceedAlways())) - ) - .StickySniffingConnectionPool(n=> - (n.Settings.TryGetValue("rack", out var v) && v.ToString() == "rack_2" ? 10 : 0) - ) - .Settings(p => p.DisablePing()) -); ----- - -Sniff happens on 9200 because our seed has no knowledge of rack ids -However when we reseed the nodes from the sniff response we sort 9202 to to top -because it lives in rack_2 - -[source,csharp] ----- -await audit.TraceCalls( - new ClientCall - { - { SniffOnStartup }, - { SniffSuccess, 9200 }, - { HealthyResponse, 9202}, - }, - /** We are sticky on 9202 for as long as it keeps returning valid responses */ - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} }, - new ClientCall { { HealthyResponse, 9202} } -); ----- - diff --git a/docs/client-concepts/connection-pooling/sticky/sticky.asciidoc b/docs/client-concepts/connection-pooling/sticky/sticky.asciidoc deleted file mode 100644 index 259ee0c37c6..00000000000 --- a/docs/client-concepts/connection-pooling/sticky/sticky.asciidoc +++ /dev/null @@ -1,45 +0,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/ClientConcepts/ConnectionPooling/Sticky/Sticky.doc.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! -//// - -[[sticky]] -=== Sticky - -Sticky Connection Pool -Each connection pool returns the first `live` node so that it is sticky between requests - -[source,csharp] ----- -var numberOfNodes = 10; -var uris = Enumerable.Range(9200, numberOfNodes).Select(p => new Uri("http://localhost:" + p)); -var pool = new StickyConnectionPool(uris); ----- - -Here we have setup a sticky connection pool seeded with 10 nodes. -So what order we expect? Imagine the following: - -Thread A calls `.CreateView()` and gets returned the first live node -Thread B calls `.CreateView()` and gets returned the same node, since the first -node is still good - -[source,csharp] ----- -var startingPositions = Enumerable.Range(0, numberOfNodes) - .Select(i => pool.CreateView().First()) - .Select(n => n.Uri.Port) - .ToList(); - -var expectedOrder = Enumerable.Repeat(9200, numberOfNodes); -startingPositions.Should().ContainInOrder(expectedOrder); ----- - diff --git a/docs/client-concepts/connection/configuration-options.asciidoc b/docs/client-concepts/connection/configuration-options.asciidoc deleted file mode 100644 index 39e59ae492c..00000000000 --- a/docs/client-concepts/connection/configuration-options.asciidoc +++ /dev/null @@ -1,262 +0,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/ClientConcepts/Connection/ConfigurationOptions.doc.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! -//// - -[[configuration-options]] -=== Configuration options - -Connecting to Elasticsearch with <> is easy, but -it's entirely possible that you'd like to change the default connection behaviour. There are a number of configuration options available -on `ConnectionSettings` that can be used to control how the client interact with -Elasticsearch. - -==== Options on ConnectionConfiguration - -The following is a list of available connection configuration options on `ConnectionConfiguration`; since -`ConnectionSettings` derives from `ConnectionConfiguration`, these options are available for both -the low level and high level client: - -`Authentication`:: - -An implementation of `IAuthenticationHeader` describing what http header to use to authenticate with the product. -+ - `BasicAuthentication` for basic authentication -+ - `ApiKey` for simple secret token -+ - `Base64ApiKey` for Elastic Cloud style encoded api keys - -`ClientCertificate`:: - -Use the following certificates to authenticate all HTTP requests. You can also set them on individual request using `ClientCertificates` - -`ClientCertificates`:: - -Use the following certificates to authenticate all HTTP requests. You can also set them on individual request using `ClientCertificates` - -`ConnectionLimit`:: - -Limits the number of concurrent connections that can be opened to an endpoint. Defaults to 80 (see `DefaultConnectionLimit` ). -+ -For Desktop CLR, this setting applies to the DefaultConnectionLimit property on the ServicePointManager object when creating ServicePoint objects, affecting the default `IConnection` implementation. -+ -For Core CLR, this setting applies to the MaxConnectionsPerServer property on the HttpClientHandler instances used by the HttpClient inside the default `IConnection` implementation - -`DeadTimeout`:: - -The time to put dead nodes out of rotation (this will be multiplied by the number of times they've been dead) - -`DisableAutomaticProxyDetection`:: - -Disabled proxy detection on the webrequest, in some cases this may speed up the first connection your appdomain makes, in other cases it will actually increase the time for the first connection. No silver bullet! use with care! - -`DisableDirectStreaming`:: - -When set to true will disable (de)serializing directly to the request and response stream and return a byte[] copy of the raw request and response. Defaults to false - -`DisablePing`:: - -This signals that we do not want to send initial pings to unknown/previously dead nodes and just send the call straightaway - -`DnsRefreshTimeout`:: - -DnsRefreshTimeout for the connections. Defaults to 5 minutes. - -`EnableDebugMode`:: - -Turns on settings that aid in debugging like DisableDirectStreaming() and PrettyJson() so that the original request and response JSON can be inspected. It also always asks the server for the full stack trace on errors - -`EnableHttpCompression`:: - -Enable gzip compressed requests and responses - -`EnableHttpPipelining`:: - -Whether HTTP pipelining is enabled. The default is `true` - -`EnableTcpKeepAlive`:: - -Sets the keep-alive option on a TCP connection. -+ -For Desktop CLR, sets ServicePointManager.SetTcpKeepAlive - -`EnableTcpStats`:: - -Enable statistics about TCP connections to be collected when making a request > - -`GlobalHeaders`:: - -Try to send these headers for every request - -`GlobalQueryStringParameters`:: - -Append these query string parameters automatically to every request - -`MaxDeadTimeout`:: - -The maximum amount of time a node is allowed to marked dead - -`MaximumRetries`:: - -When a retryable exception occurs or status code is returned this controls the maximum amount of times we should retry the call to Elasticsearch - -`MaxRetryTimeout`:: - -Limits the total runtime including retries separately from `RequestTimeout` When not specified defaults to `RequestTimeout` which itself defaults to 60 seconds - -`MemoryStreamFactory`:: - -Provides a memory stream factory - -`NodePredicate`:: - -Register a predicate to select which nodes that you want to execute API calls on. Note that sniffing requests omit this predicate and always execute on all nodes. When using an `IConnectionPool` implementation that supports reseeding of nodes, this will default to omitting master only node from regular API calls. When using static or single node connection pooling it is assumed the list of node you instantiate the client with should be taken verbatim. - -`OnRequestCompleted`:: - -Allows you to register a callback every time a an API call is returned - -`OnRequestDataCreated`:: - -An action to run when the `RequestData` for a request has been created. - -`PingTimeout`:: - -The timeout in milliseconds to use for ping requests, which are issued to determine whether a node is alive - -`PrettyJson`:: - -Provide hints to serializer and products to produce pretty, non minified json. -+ -Note: this is not a guarantee you will always get prettified json - -`Proxy`:: - -If your connection has to go through proxy, use this method to specify the proxy url - -`RequestTimeout`:: - -The timeout in milliseconds for each request to Elasticsearch - -`ServerCertificateValidationCallback`:: - -Register a ServerCertificateValidationCallback per request - -`SkipDeserializationForStatusCodes`:: - -Configure the client to skip deserialization of certain status codes e.g: you run Elasticsearch behind a proxy that returns an unexpected json format - -`SniffLifeSpan`:: - -Force a new sniff for the cluster when the cluster state information is older than the specified timespan - -`SniffOnConnectionFault`:: - -Force a new sniff for the cluster state every time a connection dies - -`SniffOnStartup`:: - -Sniff the cluster state immediately on startup - -`ThrowExceptions`:: - -Instead of following a c/go like error checking on response.IsValid do throw an exception (except when `SuccessOrKnownError` is false) on the client when a call resulted in an exception on either the client or the Elasticsearch server. -+ -Reasons for such exceptions could be search parser errors, index missing exceptions, etc... - -`TransferEncodingChunked`:: - -Whether the request should be sent with chunked Transfer-Encoding. - -`UserAgent`:: - -The user agent string to send with requests. Useful for debugging purposes to understand client and framework versions that initiate requests to Elasticsearch - -:xml-docs: Elastic.Transport:TransportConfigurationBase`1 - -==== ConnectionConfiguration with ElasticLowLevelClient - -Here's an example to demonstrate setting several configuration options using the low level client - -[source,csharp] ----- -var connectionConfiguration = new ConnectionConfiguration() - .DisableAutomaticProxyDetection() - .EnableHttpCompression() - .DisableDirectStreaming() - .PrettyJson() - .RequestTimeout(TimeSpan.FromMinutes(2)); - -var lowLevelClient = new ElasticLowLevelClient(connectionConfiguration); ----- - -==== Options on ConnectionSettings - -The following is a list of available connection configuration options on `ConnectionSettings`: - -`DefaultDisableIdInference`:: - -Disables automatic Id inference for given CLR types. -+ -NEST by default will use the value of a property named Id on a CLR type as the _id to send to Elasticsearch. Adding a type will disable this behaviour for that CLR type. If Id inference should be disabled for all CLR types, use `DefaultDisableIdInference` - -`DefaultFieldNameInferrer`:: - -Specifies how field names are inferred from CLR property names. -+ -By default, NEST camel cases property names. For example, CLR property EmailAddress will be inferred as "emailAddress" Elasticsearch document field name - -`DefaultIndex`:: - -The default index to use for a request when no index has been explicitly specified and no default indices are specified for the given CLR type specified for the request. - -`DefaultMappingFor`:: - -Specify how the mapping is inferred for a given CLR type. The mapping can infer the index, id and relation name for a given CLR type, as well as control serialization behaviour for CLR properties. - -:xml-docs: Nest:ConnectionSettingsBase`1 - -==== ConnectionSettings with ElasticClient - -Here's an example to demonstrate setting several configuration options using the high level client - -[source,csharp] ----- -var connectionSettings = new ConnectionSettings() - .DefaultMappingFor(i => i - .IndexName("my-projects") - .IdProperty(p => p.Name) - ) - .EnableDebugMode() - .PrettyJson() - .RequestTimeout(TimeSpan.FromMinutes(2)); - -var client = new ElasticClient(connectionSettings); ----- - -[NOTE] -==== -Basic Authentication credentials can alternatively be specified on the node URI directly - -[source,csharp] ----- -var uri = new Uri("http://username:password@localhost:9200"); -var settings = new ConnectionConfiguration(uri); ----- - -but this can be awkward when using connection pooling with multiple nodes, especially when the connection pool -used is one that is capable of reseeding itself. For this reason, we'd recommend specifying credentials -on `ConnectionSettings`. - -==== - diff --git a/docs/client-concepts/connection/function-as-a-service-environments.asciidoc b/docs/client-concepts/connection/function-as-a-service-environments.asciidoc deleted file mode 100644 index bb4979d0f1e..00000000000 --- a/docs/client-concepts/connection/function-as-a-service-environments.asciidoc +++ /dev/null @@ -1,192 +0,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/ClientConcepts/Connection/FunctionAsAServiceEnvironments.doc.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! -//// - -[[function-as-a-service-environments]] -=== Using the Client in a Function-as-a-Service Environment - -This section illustrates the best practices for leveraging the {es} client in a Function-as-a-Service (FaaS) environment. -The most influential optimization is to initialize the client outside of the function, the global scope. -This practice does not only improve performance but also enables background functionality as – for example – -https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how[sniffing]. -The following examples provide a skeleton for the best practices. - -==== Azure Functions - -Dependency injection in Azure Functions is built on the .NET Core Dependency Injection features. Azure recommends the -use of the singleton lifetime for connections and clients (such as the ElasticsearchClient). The singleton service lifetime -matches the host lifetime and is reused across function executions on that instance. - -Your project will require the latest applicable version of the following packages: - -* Microsoft.NET.Sdk.Functions - -* Microsoft.Azure.Functions.Extensions - -* Microsoft.Extensions.DependencyInjection - -* NEST - -[source,csharp] ----- -using System; -using System.Threading.Tasks; -using Elasticsearch.Net; -using ElasticsearchExampleAzure; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Azure.Functions.Extensions.DependencyInjection; -using Microsoft.Azure.WebJobs; -using Microsoft.Azure.WebJobs.Extensions.Http; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using Nest; - -[assembly: FunctionsStartup(typeof(Startup))] - -namespace ElasticsearchExampleAzure -{ - // Use the startup method to configure services into the DI container. - public class Startup : FunctionsStartup - { - public override void Configure(IFunctionsHostBuilder builder) - { - // Registering the ElasticClient as a singleton instance ensures we use the same underlying node pool for requests and - // avoid first call overhead per invocation. - builder.Services.AddSingleton(s => new ElasticClient(Environment.GetEnvironmentVariable("ELASTIC_CLOUD_ID"), - new ApiKeyAuthenticationCredentials(Environment.GetEnvironmentVariable("ELASTIC_API_KEY")))); - } - } - - public class MyHttpTrigger - { - // Store the client in a private field for use from the function - private readonly ElasticClient _client; - - // Add a constructor accepting the client which is provided by the DI container. - public MyHttpTrigger(ElasticClient client) - { - _client = client; - } - - [FunctionName("Function1")] - public async Task Run( - [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] - HttpRequest req, ILogger log) - { - var response = await _client.PingAsync(); - return new OkObjectResult(response.DebugInformation); - } - } -} ----- - -==== GCP Cloud Functions - -To ensure reuse of the client and avoid a first request penalty per invocation, define it as a static field in the Function class. Once -instantiated, it retains its value between invocations in the same execution environment. There is no guarantee that the state of a Cloud Function -will be preserved for future invocations. However, Cloud Functions often recycles the execution environment of a previous invocation. If you -declare a variable in global scope, its value can be reused in subsequent invocations without having to be recomputed. - -Your project will require the latest applicable version of the following packages: - -* Google.Cloud.Functions.Hosting - -* NEST - -[source,csharp] ----- -using Elasticsearch.Net; -using Google.Cloud.Functions.Framework; -using Microsoft.AspNetCore.Http; -using Nest; -using System; -using System.Threading.Tasks; - -namespace ElasticsearchExampleGCP -{ - public class Function : IHttpFunction - { - // Define a static client instance which is reused within the execution environment - // Environment variables need to be configured to provide the cloud ID and API key we're going to use - public static ElasticClient Client = new ElasticClient(Environment.GetEnvironmentVariable("ELASTIC_CLOUD_ID"), - new ApiKeyAuthenticationCredentials(Environment.GetEnvironmentVariable("ELASTIC_API_KEY"))); - - ///

    - /// Logic for your function goes here. - /// - /// The HTTP context, containing the request and the response. - /// A task representing the asynchronous operation. - public async Task HandleAsync(HttpContext context) - { - var response = await Client.PingAsync(); - await context.Response.WriteAsync(response.DebugInformation); - } - } -} ----- - -==== AWS Lambda - -To ensure reuse of the client and avoid a first request penalty per invocation, define it as a static field in the Function class. Once -instantiated, it retains its value between invocations in the same execution environment. - -Your project will require the latest applicable version of the following packages: - -* Amazon.Lambda.Core - -* Amazon.Lambda.Serialization.SystemTextJson - -* NEST - -[source,csharp] ----- -using System; -using Amazon.Lambda.Core; -using Amazon.Lambda.Serialization.SystemTextJson; -using Elasticsearch.Net; -using Nest; - -// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. -[assembly: LambdaSerializer(typeof(DefaultLambdaJsonSerializer))] - -namespace ElasticsearchExampleLambda -{ - public class Function - { - // Define a static client instance which is reused within the execution environment - // Environment variables need to be configured to provide the cloud ID and API key we're going to use - public static ElasticClient Client = new ElasticClient(Environment.GetEnvironmentVariable("ELASTIC_CLOUD_ID"), - new ApiKeyAuthenticationCredentials(Environment.GetEnvironmentVariable("ELASTIC_API_KEY"))); - - public void FunctionHandler(ILambdaContext context) - { - var response = Client.Ping(); - context.Logger.LogLine(response.DebugInformation); - } - } -} ----- - -Resources used to assess these recommendations: - -* https://cloud.google.com/functions/docs/bestpractices/tips#use_global_variables_to_reuse_objects_in_future_invocations[GCP Cloud Functions: Tips & Tricks] - -* https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html[Best practices for working with AWS Lambda functions] - -* https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-python?tabs=azurecli-linux%2Capplication-level#global-variables[Azure Functions Python developer guide] - -* https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection[Use dependency injection in .NET Azure Functions] - -* https://docs.aws.amazon.com/lambda/latest/operatorguide/global-scope.html[AWS Lambda: Comparing the effect of global scope] - diff --git a/docs/client-concepts/connection/modifying-default-connection.asciidoc b/docs/client-concepts/connection/modifying-default-connection.asciidoc deleted file mode 100644 index 61fe22b4ddd..00000000000 --- a/docs/client-concepts/connection/modifying-default-connection.asciidoc +++ /dev/null @@ -1,124 +0,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/ClientConcepts/Connection/ModifyingDefaultConnection.doc.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! -//// - -[[modifying-default-connection]] -=== Modifying the default connection - -The client abstracts sending the request and creating a response behind `IConnection` and the default -implementation uses https://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.118).aspx[`System.Net.Http.HttpClient`]. - -Why would you ever want to pass your own `IConnection`? Let's look at a couple of examples - -==== Using InMemoryConnection - -`InMemoryConnection` is an in-built `IConnection` that makes it easy to write unit tests against. It can be -configured to respond with default response bytes, HTTP status code and an exception when a call is made. - -`InMemoryConnection` **doesn't actually send any requests or receive any responses from Elasticsearch**; -requests are still serialized and the request bytes can be obtained on the response if `.DisableDirectStreaming` is -set to `true` on the request or globally - -[source,csharp] ----- -var connection = new InMemoryConnection(); -var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var settings = new ConnectionSettings(connectionPool, connection); -var client = new ElasticClient(settings); ----- - -Here we create a new `ConnectionSettings` by using the overload that takes a `IConnectionPool` and an `IConnection`. -We pass it an `InMemoryConnection` which, using the default parameterless constructor, -will return 200 for everything and never actually perform any IO. - -Let's see a more complex example - -[source,csharp] ----- -var response = new -{ - took = 1, - timed_out = false, - _shards = new - { - total = 2, - successful = 2, - failed = 0 - }, - hits = new - { - total = new { value = 25 }, - max_score = 1.0, - hits = Enumerable.Range(1, 25).Select(i => (object)new - { - _index = "project", - _type = "project", - _id = $"Project {i}", - _score = 1.0, - _source = new { name = $"Project {i}" } - }).ToArray() - } -}; - -var responseBytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(response)); -var connection = new InMemoryConnection(responseBytes, 200); <1> -var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var settings = new ConnectionSettings(connectionPool, connection).DefaultIndex("project"); -var client = new ElasticClient(settings); - -var searchResponse = client.Search(s => s.MatchAll()); ----- -<1> `InMemoryConnection` is configured to **always** return `responseBytes` along with a 200 HTTP status code - -We can now assert that the `searchResponse` is valid and contains documents deserialized -from our fixed `InMemoryConnection` response - -[source,csharp] ----- -searchResponse.ShouldBeValid(); -searchResponse.Documents.Count.Should().Be(25); ----- - -==== Changing HttpConnection - -There may be a need to change how the default `HttpConnection` works, for example, to add an X509 certificate -to the request, change the maximum number of connections allowed to an endpoint, etc. - -By deriving from `HttpConnection`, it is possible to change the behaviour of the connection. The following -provides some examples - -[source,csharp] ----- -public class MyCustomHttpConnection : HttpConnection -{ - protected override void SetAuthenticationIfNeeded(HttpRequestMessage requestMessage, RequestData requestData) - - { - var header = string.Empty; - requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Negotiate", header); - } -} - -public class KerberosConnection : HttpConnection -{ - protected override void SetAuthenticationIfNeeded(HttpRequestMessage requestMessage, RequestData requestData) - { - var header = string.Empty; - requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Negotiate", header); - } - -} ----- - -See <> for further details. - diff --git a/docs/client-concepts/high-level/analysis/analysis-chain.png b/docs/client-concepts/high-level/analysis/analysis-chain.png deleted file mode 100644 index 59802984fd0ccb0246f3e647ca33e28ccffdf616..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143338 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 z%0A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

    xF{o30Qgz4;QX?39)Nws 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 Uk~n|#!9L5zmn{rl|LPp`KXU+Jp#T5? diff --git a/docs/client-concepts/high-level/analysis/testing-analyzers.asciidoc b/docs/client-concepts/high-level/analysis/testing-analyzers.asciidoc deleted file mode 100644 index a86b6840090..00000000000 --- a/docs/client-concepts/high-level/analysis/testing-analyzers.asciidoc +++ /dev/null @@ -1,314 +0,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/ClientConcepts/HighLevel/Analysis/TestingAnalyzers.doc.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! -//// - -[[testing-analyzers]] -=== Testing analyzers - -When <>, it's useful to test that the analyzer -does what we expect it to. This is where the {ref_current}/indices-analyze.html[Analyze API] comes in. - -==== Testing in-built analyzers - -To get started with the Analyze API, we can test to see how a built-in analyzer will analyze -a piece of text - -[source,csharp] ----- -var analyzeResponse = client.Indices.Analyze(a => a - .Analyzer("standard") <1> - .Text("F# is THE SUPERIOR language :)") -); ----- -<1> Use the `standard` analyzer - -This returns the following response from Elasticsearch - -[source,javascript] ----- -{ - "tokens": [ - { - "token": "f", - "start_offset": 0, - "end_offset": 1, - "type": "", - "position": 0 - }, - { - "token": "is", - "start_offset": 3, - "end_offset": 5, - "type": "", - "position": 1 - }, - { - "token": "the", - "start_offset": 6, - "end_offset": 9, - "type": "", - "position": 2 - }, - { - "token": "superior", - "start_offset": 10, - "end_offset": 18, - "type": "", - "position": 3 - }, - { - "token": "language", - "start_offset": 19, - "end_offset": 27, - "type": "", - "position": 4 - } - ] -} ----- - -which is deserialized to an instance of `AnalyzeResponse` by NEST -that we can work with - -[source,csharp] ----- -foreach (var analyzeToken in analyzeResponse.Tokens) -{ - Console.WriteLine($"{analyzeToken.Token}"); -} ----- - -In testing the `standard` analyzer on our text, we've noticed that - -* `F#` is tokenized as `"f"` - -* stop word tokens `"is"` and `"the"` are included - -* `"superior"` is included but we'd also like to tokenize `"great"` as a synonym for superior - -We'll look at how we can test a combination of built-in analysis components next to -build an analyzer to fit our needs. - -==== Testing built-in analysis components - -A _transient_ analyzer can be composed from built-in analysis components to test -an analysis configuration - -[source,csharp] ----- -var analyzeResponse = client.Indices.Analyze(a => a - .Tokenizer("standard") - .Filter("lowercase", "stop") - .Text("F# is THE SUPERIOR language :)") -); ----- - -[source,javascript] ----- -{ - "tokens": [ - { - "token": "f", - "start_offset": 0, - "end_offset": 1, - "type": "", - "position": 0 - }, - { - "token": "superior", - "start_offset": 10, - "end_offset": 18, - "type": "", - "position": 3 - }, - { - "token": "language", - "start_offset": 19, - "end_offset": 27, - "type": "", - "position": 4 - } - ] -} ----- - -Great! This has removed stop words, but we still have `F#` tokenized as `"f"` -and no `"great"` synonym for `"superior"`. - -IMPORTANT: Character and Token filters are **applied in the order** in which they are specified. - -Let's build a custom analyzer with additional components to solve this. - -==== Testing a custom analyzer in an index - -A custom analyzer can be created within an index, either when creating the index or by -updating the settings on an existing index. - -IMPORTANT: When adding to an existing index, it needs to be closed first. - -In this example, we'll add a custom analyzer to an existing index. First, -we need to close the index - -[source,csharp] ----- -client.Indices.Close("analysis-index"); ----- - -Now, we can update the settings to add the analyzer - -[source,csharp] ----- -client.Indices.UpdateSettings("analysis-index", i => i - .IndexSettings(s => s - .Analysis(a => a - .CharFilters(cf => cf - .Mapping("my_char_filter", m => m - .Mappings("F# => FSharp") - ) - ) - .TokenFilters(tf => tf - .Synonym("my_synonym", sf => sf - .Synonyms("superior, great") - - ) - ) - .Analyzers(an => an - .Custom("my_analyzer", ca => ca - .Tokenizer("standard") - .CharFilters("my_char_filter") - .Filters("lowercase", "stop", "my_synonym") - ) - ) - - ) - ) -); ----- - -And open the index again. Here, we also wait up to five seconds for the -status of the index to become green - -[source,csharp] ----- -client.Indices.Open("analysis-index"); -client.Cluster.Health("analysis-index",h => h - .WaitForStatus(WaitForStatus.Green) - .Timeout(TimeSpan.FromSeconds(5)) -); ----- - -With the index open and ready, let's test the analyzer - -[source,csharp] ----- -var analyzeResponse = client.Indices.Analyze(a => a - .Index("analysis-index") <1> - .Analyzer("my_analyzer") - .Text("F# is THE SUPERIOR language :)") -); ----- -<1> Since we added the custom analyzer to the "analysis-index" index, we need to target this index to test it - -The output now looks like - -[source,javascript] ----- -{ - "tokens": [ - { - "token": "fsharp", - "start_offset": 0, - "end_offset": 2, - "type": "", - "position": 0 - }, - { - "token": "superior", - "start_offset": 10, - "end_offset": 18, - "type": "", - "position": 3 - }, - { - "token": "great", - "start_offset": 10, - "end_offset": 18, - "type": "SYNONYM", - "position": 3 - }, - { - "token": "language", - "start_offset": 19, - "end_offset": 27, - "type": "", - "position": 4 - } - ] -} ----- - -Exactly what we were after! - -==== Testing an analyzer on a field - -It's also possible to test the analyzer for a given field type mapping. -Given an index created with the following settings and mappings - -[source,csharp] ----- -client.Indices.Create("project-index", i => i - .Settings(s => s - .Analysis(a => a - .CharFilters(cf => cf - .Mapping("my_char_filter", m => m - .Mappings("F# => FSharp") - ) - ) - .TokenFilters(tf => tf - .Synonym("my_synonym", sf => sf - .Synonyms("superior, great") - - ) - ) - .Analyzers(an => an - .Custom("my_analyzer", ca => ca - .Tokenizer("standard") - .CharFilters("my_char_filter") - .Filters("lowercase", "stop", "my_synonym") - ) - ) - - ) - ) - .Map(mm => mm - .Properties(p => p - .Text(t => t - .Name(n => n.Name) - .Analyzer("my_analyzer") - ) - ) - ) -); ----- - -The analyzer on the `name` field can be tested with - -[source,csharp] ----- -var analyzeResponse = client.Indices.Analyze(a => a - .Index("project-index") - .Field(f => f.Name) - .Text("F# is THE SUPERIOR language :)") -); ----- - diff --git a/docs/client-concepts/high-level/analysis/writing-analyzers.asciidoc b/docs/client-concepts/high-level/analysis/writing-analyzers.asciidoc deleted file mode 100644 index 0e4b106a373..00000000000 --- a/docs/client-concepts/high-level/analysis/writing-analyzers.asciidoc +++ /dev/null @@ -1,280 +0,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/ClientConcepts/HighLevel/Analysis/WritingAnalyzers.doc.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! -//// - -[[writing-analyzers]] -=== Writing analyzers - -There are times when you would like to analyze text in a bespoke fashion, either by configuring -how one of Elasticsearch's built-in {ref_current}/analysis-analyzers.html[analyzers] works, or -by combining analysis components together to build a custom analyzer. - -[[analysis-chain]] -==== The analysis chain - -An analyzer is built of three components: - -* 0 or more character filters - -* exactly 1 tokenizer - -* 0 or more token filters - -image::analysis-chain.png[analysis chain] - -Check out the Elasticsearch documentation on the {ref_current}/analyzer-anatomy.html[Anatomy of an analyzer] -to understand more. - -==== Specifying an analyzer on a field mapping - -An analyzer can be specified on a `text` datatype field mapping when creating a new field on a type, usually -when creating the type mapping at index creation time, but also when adding a new field -using the Put Mapping API. - -[IMPORTANT] --- -Although you can add new types to an index, or add new fields to a type, you **can't** add new analyzers -or make changes to existing fields. If you were to do so, the data that has already been indexed would be -incorrect and your searches would no longer work as expected. - -When you need to make changes to existing fields, you should look at reindexing your data with the -{ref_current}/docs-reindex.html[Reindex API] - --- - -Here's a simple example that specifies that the `name` field in Elasticsearch, -which maps to the `Name` POCO property on the `Project` type, uses the `whitespace` analyzer at index time - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("my-index", c => c - .Map(mm => mm - .Properties(p => p - .Text(t => t - .Name(n => n.Name) - .Analyzer("whitespace") - ) - ) - ) -); ----- - -==== Configuring a built-in analyzer - -Several built-in analyzers can be configured to alter their behaviour. For example, the -`standard` analyzer can be configured to support a list of stop words with the stop word token filter -it contains. - -Configuring a built-in analyzer requires creating an analyzer based on the built-in one - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("my-index", c => c - .Settings(s => s - .Analysis(a => a - .Analyzers(aa => aa - .Standard("standard_english", sa => sa - .StopWords("_english_") <1> - ) - ) - ) - ) - .Map(mm => mm - .Properties(p => p - .Text(t => t - .Name(n => n.Name) - .Analyzer("standard_english") <2> - ) - ) - ) -); ----- -<1> Pre-defined list of English stopwords within Elasticsearch -<2> Use the `standard_english` analyzer configured - -[source,javascript] ----- -{ - "settings": { - "analysis": { - "analyzer": { - "standard_english": { - "type": "standard", - "stopwords": [ - "_english_" - ] - } - } - } - }, - "mappings": { - "properties": { - "name": { - "type": "text", - "analyzer": "standard_english" - } - } - } -} ----- - -==== Creating a custom analyzer - -A custom analyzer can be composed when none of the built-in analyzers fit your needs. A custom analyzer -is built from the components that you saw in <> and a -{ref_current}/position-increment-gap.html[position increment gap], -that determines the size of gap that Elasticsearch should insert between array elements, when a -field can hold multiple values e.g. a `List` POCO property. - -For this example, imagine we are indexing programming questions, where the question content -is HTML and contains source code - -[source,csharp] ----- -public class Question -{ - public int Id { get; set; } - public DateTimeOffset CreationDate { get; set; } - public int Score { get; set; } - public string Body { get; set; } -} ----- - -Based on our domain knowledge of programming languages, we would like to be able to search questions -that contain `"C#"`, but using the `standard` analyzer, `"C#"` will be analyzed and produce the token -`"c"`. This won't work for our use case as there will be no way to distinguish questions about -`"C#"` from questions about another popular programming language, `"C"`. - -We can solve our issue with a custom analyzer - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("questions", c => c - .Settings(s => s - .Analysis(a => a - .CharFilters(cf => cf - .Mapping("programming_language", mca => mca - .Mappings(new [] - { - "c# => csharp", - "C# => Csharp" - }) - ) - ) - .Analyzers(an => an - .Custom("question", ca => ca - .CharFilters("html_strip", "programming_language") - .Tokenizer("standard") - .Filters("lowercase", "stop") - ) - ) - ) - ) - .Map(mm => mm - .AutoMap() - .Properties(p => p - .Text(t => t - .Name(n => n.Body) - .Analyzer("question") - ) - ) - ) -); ----- - -Our custom `question` analyzer will apply the following analysis to a question body - -. strip HTML tags - -. map both `C#` and `c#` to `"CSharp"` and `"csharp"`, respectively (so the `#` is not stripped by the tokenizer) - -. tokenize using the standard tokenizer - -. filter tokens with the standard token filter - -. lowercase tokens - -. remove stop word tokens - -A <> will also apply the same analysis to the query input against the -question body at search time, meaning when someone searches including the input `"C#"`, it will also be -analyzed and produce the token `"csharp"`, matching a question body that contains `"C#"` (as well as `"csharp"` -and case invariants), because the search time analysis applied is the same as the index time analysis. - -==== Index and Search time analysis - -With the previous example, we probably don't want to apply the same analysis to the query input of a -full text query against a question body; we know for our problem domain that a query input is not going -to contain HTML tags, so we would like to apply different analysis at search time. - -An analyzer can be specified when creating the field mapping to use at search time, in addition to an analyzer to -use at query time - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("questions", c => c - .Settings(s => s - .Analysis(a => a - .CharFilters(cf => cf - .Mapping("programming_language", mca => mca - .Mappings(new[] - { - "c# => csharp", - "C# => Csharp" - }) - ) - ) - .Analyzers(an => an - .Custom("index_question", ca => ca <1> - .CharFilters("html_strip", "programming_language") - .Tokenizer("standard") - .Filters("lowercase", "stop") - ) - .Custom("search_question", ca => ca <2> - .CharFilters("programming_language") - .Tokenizer("standard") - .Filters("lowercase", "stop") - ) - ) - ) - ) - .Map(mm => mm - .AutoMap() - .Properties(p => p - .Text(t => t - .Name(n => n.Body) - .Analyzer("index_question") - .SearchAnalyzer("search_question") - ) - ) - ) -); ----- -<1> Use an analyzer at index time that strips HTML tags -<2> Use an analyzer at search time that does not strip HTML tags - -With this in place, the text of a question body will be analyzed with the `index_question` analyzer -at index time and the input to a full text query on the question body field will be analyzed with -the `search_question` analyzer that does not use the `html_strip` character filter. - -[TIP] --- -A Search analyzer can also be specified per query i.e. use a different analyzer for a particular -request from the one specified in the mapping. This can be useful when iterating on and improving -your search strategy. - -Take a look at the {ref_current}/analyzer.html[analyzer] documentation for more details around where analyzers can be specified -and the precedence for a given request. - --- - diff --git a/docs/client-concepts/high-level/covariant-hits/covariant-search-results.asciidoc b/docs/client-concepts/high-level/covariant-hits/covariant-search-results.asciidoc deleted file mode 100644 index da9b50a9acc..00000000000 --- a/docs/client-concepts/high-level/covariant-hits/covariant-search-results.asciidoc +++ /dev/null @@ -1,34 +0,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/ClientConcepts/HighLevel/CovariantHits/CovariantSearchResults.doc.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! -//// - -[[covariant-search-results]] -=== Covariant search results - -NEST used to have a feature that allowed you to map multiple types in an index back into a covariant list. - -Since types are removed in Elasticsearch 6.0 this feature is no longer supported. Because you can -now explicitly inject a serializer for user types only (_source, fields etcetera) please rely on a JsonConverter that -can do this out of the box e.g `TypeNameHandling.All` from `Json.NET` - -https://www.newtonsoft.com/json/help/html/SerializeTypeNameHandling.htm - -[source,csharp] ----- -public class C -{ - public int Id { get; set; } - public string Name { get; set; } -} ----- - diff --git a/docs/client-concepts/high-level/getting-started.asciidoc b/docs/client-concepts/high-level/getting-started.asciidoc deleted file mode 100644 index 395261ed108..00000000000 --- a/docs/client-concepts/high-level/getting-started.asciidoc +++ /dev/null @@ -1,291 +0,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/ClientConcepts/HighLevel/GettingStarted.doc.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! -//// - -[[nest-getting-started]] -== Getting started - -NEST is a high level Elasticsearch .NET client that still maps very closely to the original Elasticsearch API. -All requests and responses are exposed through types, making it ideal for getting up and running quickly. - -[float] -=== Connecting - -To connect to Elasticsearch running locally at `http://localhost:9200` is as simple as instantiating a new instance of the client - -[source,csharp] ----- -var client = new ElasticClient(); ----- - -Often you may need to pass additional configuration options to the client such as the address of Elasticsearch if it's running on -a remote machine. This is where `ConnectionSettings` come in; an instance can be instantiated to provide the client with different -configurations. - -[source,csharp] ----- -var settings = new ConnectionSettings(new Uri("http://example.com:9200")) - .DefaultIndex("people"); - -var client = new ElasticClient(settings); ----- - -In this example, a default index was also specified to use if no other index is supplied for the request or can be inferred for the -POCO generic type parameter in the request. There are many other <> on `ConnectionSettings`. - -TIP: Specifying a default index is _optional_ but NEST may throw an exception if no index can be inferred for a given request. To understand more around how -an index can be specified for a request, see <>. - -`ConnectionSettings` is not restricted to being passed a single address for Elasticsearch. There are several different -types of <> available in NEST, each with different characteristics, that can be used to -configure the client. The following example uses a <> seeded with the addresses -of three Elasticsearch nodes in the cluster, and the client will use this type of pool to maintain a list of available nodes within the -cluster to which it can send requests in a round-robin fashion. - -[source,csharp] ----- -var uris = new[] -{ - new Uri("http://localhost:9200"), - new Uri("http://localhost:9201"), - new Uri("http://localhost:9202"), -}; - -var connectionPool = new SniffingConnectionPool(uris); -var settings = new ConnectionSettings(connectionPool) - .DefaultIndex("people"); - -var client = new ElasticClient(settings); ----- - -[float] -==== Enabling the Compatibility Mode - -The Elasticsearch server version 8.0 is introducing a new compatibility mode that allows you a smoother upgrade -experience from 7 to 8. In a nutshell, you can use the latest 7.x Elasticsearch client with an 8.x Elasticsearch -server, giving more room to coordinate the upgrade of your codebase to the next major version. - -If you want to leverage this functionality, please make sure that you are using the latest 7.x client and set -the environment variable `ELASTIC_CLIENT_APIVERSIONING` to `true`. The client is handling the rest internally. -For every 8.0 and beyond client, you're all set! The compatibility mode is enabled by default. - -[float] -=== Using the Client in a Function-as-a-Service Environment - -When using the client in FaaS environments, we recommend you follow the platform recommended approach to store the client -in a global variable such that it is reused for requests where possible. See <> -for more information. - -[float] -=== Indexing - -Once a client had been configured to connect to Elasticsearch, we need to get some data into the cluster -to work with. - -Imagine we have the following http://en.wikipedia.org/wiki/Plain_Old_CLR_Object[Plain Old CLR Object (POCO)] - -[source,csharp] ----- -public class Person -{ - public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } -} ----- - -Indexing a single instance of the POCO either synchronously or asynchronously, is as simple as - -[source,csharp] ----- -var person = new Person -{ - Id = 1, - FirstName = "Martijn", - LastName = "Laarman" -}; - -var indexResponse = client.IndexDocument(person); <1> - -var asyncIndexResponse = await client.IndexDocumentAsync(person); <2> ----- -<1> synchronous method that returns an `IndexResponse` -<2> asynchronous method that returns a `Task` that can be awaited - -NOTE: All methods available within NEST are exposed as both synchronous and asynchronous versions, -with the latter using the idiomatic *Async suffix on the method name. - -This will index the document to the endpoint `/people/_doc/1`. NEST is smart enough to infer the -the id for the document by looking for an `Id` property on the POCO. Take a look -at <> to see other ways in which NEST can be configured to infer an id for a document. The default index configured -on `ConnectionSettings` has been used as the index name for the request. - -CAUTION: By default, NEST camel cases the property names on the POCO when serializing the POCO into a JSON document to send to Elasticsearch. -You can <> by using the `.DefaultFieldNameInferrer(Func)` method on `ConnectionSettings`. - -[float] -=== Searching - -Now that we have indexed some documents we can begin to search for them. - -[source,csharp] ----- -var searchResponse = client.Search(s => s - .From(0) - .Size(10) - .Query(q => q - .Match(m => m - .Field(f => f.FirstName) - .Query("Martijn") - ) - ) -); - -var people = searchResponse.Documents; ----- - -`people` now holds the first ten people whose first name matches Martijn. The search endpoint for this query is -`/people/_search` and the index (`"people"`) has been determined from - -. the default index on `ConnectionSettings` - -. the `Person` generic type parameter on the search. - -which generates a request to the search endpoint `/people/_search`, using the default index specified on `ConnectionSettings` as the index -in the search request. - -Similarly, a search can be performed in all indices with `.AllIndices()` - -[source,csharp] ----- -var searchResponse = client.Search(s => s - .AllIndices() - .From(0) - .Size(10) - .Query(q => q - .Match(m => m - .Field(f => f.FirstName) - .Query("Martijn") - ) - ) -); ----- - -which generates a request to the search endpoint `/_search`. - -Single or multiple index names can be provided in the request; -see the documentation on <> and <>, respectively. - -All of the search examples so far have used NEST's Fluent API which uses lambda expressions to construct a query with a structure -that mimics the structure of a query expressed in the Elasticsearch's JSON based {ref_current}/query-dsl.html[Query DSL]. - -NEST also exposes an Object Initializer syntax that can also be used to construct queries, -for those not keen on deeply nested lambda expressions (layout is __key__!). - -Here's the same query as the previous example, this time constructed using the Object Initializer syntax - -[source,csharp] ----- -var searchRequest = new SearchRequest(Nest.Indices.All) <1> -{ - From = 0, - Size = 10, - Query = new MatchQuery - { - Field = Infer.Field(f => f.FirstName), - Query = "Martijn" - } -}; - -var searchResponse = await client.SearchAsync(searchRequest); ----- -<1> All indices and types are specified in the constructor - -[NOTE] --- -As indicated at the start of this section, the high level client still exposes the low level client from Elasticsearch.Net -through the `.LowLevel` property on the client. The low level client can be useful in scenarios where you may already have -the JSON that represents the request that you wish to send and don't wish to translate it over to the Fluent API or Object Initializer syntax -at this point in time, or perhaps there is a bug in the client that can be worked around by sending a request as a string or anonymous type. - -Using the low level client via the `.LowLevel` property means you can get with the best of both worlds: - -. Use the high level client - -. Use the low level client where it makes sense, taking advantage of all the strong types within NEST, and its -serializer for deserialization. - -Here's an example - -[source,csharp] ----- -var searchResponse = client.LowLevel.Search>("people", PostData.Serializable(new -{ - from = 0, - size = 10, - query = new - { - match = new - { - field = "firstName", - query = "Martijn" - } - } -})); - -var responseJson = searchResponse; ----- - -Here, the query is represented as an anonymous type, but the body of the response is a concrete -implementation of the same response type returned from the high level client, NEST. - --- - -[float] -=== Aggregations - -In addition to structured and unstructured search, Elasticsearch is also able to aggregate data based on a search query - -[source,csharp] ----- -var searchResponse = await client.SearchAsync(s => s - .Size(0) - .Query(q => q - .Match(m => m - .Field(f => f.FirstName) - .Query("Martijn") - ) - ) - .Aggregations(a => a - .Terms("last_names", ta => ta - .Field(f => f.LastName) - ) - ) -); - -var termsAggregation = searchResponse.Aggregations.Terms("last_names"); ----- - -In this example, a `match` query to search for people with the first name of "Martijn" is issued as before; -this time however, - -. a size of `0` is set because we don't want the first 10 documents that match this query to be returned, -we're only interested in the aggregation results - -. a `terms` aggregation is specified to group matching documents into buckets based on last name. - -`termsAggregation` can be used to get the count of documents for each bucket, where each bucket will be -keyed by last name. - -See <> for more details. - diff --git a/docs/client-concepts/high-level/indexing/indexing-documents.asciidoc b/docs/client-concepts/high-level/indexing/indexing-documents.asciidoc deleted file mode 100644 index c6dc38c0a52..00000000000 --- a/docs/client-concepts/high-level/indexing/indexing-documents.asciidoc +++ /dev/null @@ -1,279 +0,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/ClientConcepts/HighLevel/Indexing/IndexingDocuments.doc.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! -//// - -[[indexing-documents]] -=== Indexing documents - -NEST exposes the index and bulk APIs of Elasticsearch as methods, to enable indexing of single or multiple documents. In addition to this, -the client provides some convenient shorthand methods for the typical indexing approaches. - -==== Single documents - -A single document can be indexed, either synchronously or asynchronously, -using the `IndexDocument` and `IndexDocumentAsync` methods, respectively. These methods are a simple way to index a single document -that doesn't require any additional request parameters - -[source,csharp] ----- -var person = new Person -{ - Id = 1, - FirstName = "Martijn", - LastName = "Laarman" -}; - -var indexResponse = client.IndexDocument(person); <1> -if (!indexResponse.IsValid) -{ - // If the request isn't valid, we can take action here -} - -var indexResponseAsync = await client.IndexDocumentAsync(person); <2> ----- -<1> synchronous method that returns an `IndexResponse` -<2> asynchronous method that returns a `Task` that can be awaited - -==== Single documents with parameters - -If you need to set additional parameters when indexing, you can use the `Index` method with either the fluent or object initializer syntax. -The `Index` method exposes a way to set additional parameters such as the name of the index in which to index, the id to assign to the -document, routing parameters, etc., allowing more control over indexing. - -[source,csharp] ----- -var person = new Person -{ - Id = 1, - FirstName = "Martijn", - LastName = "Laarman" -}; - -var indexResponse1 = client.Index(person, i => i.Index("people")); <1> - -var indexResponse2 = client.Index(new IndexRequest(person, "people")); <2> ----- -<1> fluent syntax -<2> object initializer syntax - -==== Multiple documents with `IndexMany` - -Multiple documents can be indexed using the `IndexMany` and `IndexManyAsync` methods, again either synchronously or asynchronously, respectively. -These methods are specific to the NEST client to provide a convenient shortcut to indexing -multiple documents using the `_bulk` endpoint. - -NOTE: `IndexMany` all documents in a single HTTP request, so for very large document collections it is not a recommended approach -- consider using the `BulkAllObservable` helper instead. - -[source,csharp] ----- -var people = new [] -{ - new Person - { - Id = 1, - FirstName = "Martijn", - LastName = "Laarman" - }, - new Person - { - Id = 2, - FirstName = "Stuart", - LastName = "Cam" - }, - new Person - { - Id = 3, - FirstName = "Russ", - LastName = "Cam" - } -}; - -var indexManyResponse = client.IndexMany(people); <1> - -if (indexManyResponse.Errors) <2> -{ - foreach (var itemWithError in indexManyResponse.ItemsWithErrors) <3> - { - Console.WriteLine($"Failed to index document {itemWithError.Id}: {itemWithError.Error}"); - } -} - -// Alternatively, documents can be indexed asynchronously -var indexManyAsyncResponse = await client.IndexManyAsync(people); <4> ----- -<1> synchronous method that returns an IBulkResponse -<2> the response can be inspected to see if any of the bulk operations resulted in an error -<3> If there are errors, they can be enumerated and inspected -<4> asynchronous method that returns a Task that can be awaited - -==== Multiple documents with `Bulk` - -If you require more control over indexing many documents, you can use the `Bulk` and `BulkAsync` methods and use the descriptors to -customise the bulk calls. - -As with the `IndexMany` methods, documents are sent using the bulk API in a single HTTP request. -This does mean that consideration should be given to the overall size of the HTTP request. For indexing a large number -of documents, it may be sensible to perform multiple separate `Bulk` calls, or use <>, -which takes care of a lot of the complexity. - -[source,csharp] ----- -var bulkIndexResponse = client.Bulk(b => b - .Index("people") - .IndexMany(people) -); <1> - -// Alternatively, documents can be indexed asynchronously similar to IndexManyAsync -var asyncBulkIndexResponse = await client.BulkAsync(b => b - .Index("people") - .IndexMany(people) -); <2> ----- -<1> synchronous method that returns an IBulkResponse, the same as IndexMany and can be inspected in the same way for errors -<2> asynchronous method that returns a Task that can be awaited - -Control over how each bulk index operation is configured can be achieved by passing a descriptor to the `IndexMany` -method on `Bulk`. Here's an example of specifying a different index and pipeline for each document, based on properties of -the document to be indexed - -[source,csharp] ----- -var bulkIndexResponse = client.Bulk(b => b - .Index("people") - .IndexMany(people, (descriptor, person) => descriptor - .Index(person.Id % 2 == 0 - ? "even-index" - : "odd-index") <1> - .Pipeline(person.FirstName.StartsWith("M") - ? "startswith_m_pipeline" - : "does_not_start_with_m_pipeline") <2> - ) -); ----- -<1> configure an explicit index for a document, based on its `Id` -<2> specify an <> to use when indexing the document - -[[bulkall-observable]] -==== Multiple documents with `BulkAllObservable` helper - -Using the `BulkAllObservable` helper allows you to focus on the overall objective of indexing, without having to -concern yourself with retry, backoff or chunking mechanics. -Multiple documents can be indexed using the `BulkAll` method and `Wait()` extension method. - -This helper exposes functionality to automatically retry / backoff in the event of an indexing failure, -and to control the number of documents indexed in a single HTTP request. In the example below each request will contain 1000 documents, -chunked from the original input. In the event of a large number of documents this could result in many HTTP requests, each containing -1000 documents (the last request may contain less, depending on the total number). - -The helper lazily enumerates the provided `IEnumerable` of documents, allowing you to index a large number of documents easily - -[source,csharp] ----- -var bulkAllObservable = client.BulkAll(people, b => b - .Index("people") - .BackOffTime("30s") <1> - .BackOffRetries(2) <2> - .RefreshOnCompleted() - .MaxDegreeOfParallelism(Environment.ProcessorCount) - .Size(1000) <3> -) -.Wait(TimeSpan.FromMinutes(15), next => <4> -{ - // do something e.g. write number of pages to console -}); ----- -<1> how long to wait between retries -<2> how many retries are attempted if a failure occurs -<3> items per bulk request -<4> perform the indexing and wait up to 15 minutes, whilst the BulkAll calls are asynchronous this is a blocking operation - -The internal implementation of `BulkAllObservable` is asynchronous, using the -https://docs.microsoft.com/en-us/dotnet/standard/events/observer-design-pattern[Observer Design Pattern] to enable observers to -be registered to take action when each bulk response is returned, an error has occurred, and when the `BulkAllObservable` has -finished. Whilst the internal implementation is asynchronous, you typically want to wait until all bulk indexing has finished before -continuing. The `Wait` method is a convenient shorthand to use for this, using a `ManualResetEvent` to block the current thread until -bulk indexing has finished or an error has occurred. - -==== Advanced bulk indexing - -The `BulkAllObservable` helper exposes a number of methods to further control the process, such as - -* `BufferToBulk` to customize individual operations within the bulk request before it is dispatched to the server - -* `RetryDocumentPredicate` to decide if a document that failed to be indexed should be retried - -* `DroppedDocumentCallback` to determine what to do in the event a document is not indexed, even after retrying - -The following example demonstrates some of these methods, in addition to using a `BulkAllObserver` to subscribe to -the bulk indexing process and take some action on each successful bulk response, when an error occurs, and when -the process has finished. - -IMPORTANT: An observer such as `BulkAllObserver` should not throw exceptions from its interface implementations, such -as `OnNext` and `OnError`. Any exceptions thrown should be expected to go unhandled. In light of this, any exception -that occurs during the bulk indexing process should be captured and thrown outside of the observer, as demonstrated in the -example below. Take a look at the -https://docs.microsoft.com/en-us/dotnet/standard/events/observer-design-pattern-best-practices#handling-exceptions[Observer Design Pattern best practices] -on handling exceptions. - -[source,csharp] ----- -var bulkAllObservable = client.BulkAll(people, b => b - .BufferToBulk((descriptor, buffer) => <1> - { - foreach (var person in buffer) - { - descriptor.Index(bi => bi - .Index(person.Id % 2 == 0 ? "even-index" : "odd-index") <2> - .Document(person) - ); - } - }) - .RetryDocumentPredicate((bulkResponseItem, person) => <3> - { - return bulkResponseItem.Error.Index == "even-index" && person.FirstName == "Martijn"; - }) - .DroppedDocumentCallback((bulkResponseItem, person) => <4> - { - Console.WriteLine($"Unable to index: {bulkResponseItem} {person}"); - })); - -var waitHandle = new ManualResetEvent(false); -ExceptionDispatchInfo exceptionDispatchInfo = null; - -var observer = new BulkAllObserver( - onNext: response => - { - // do something e.g. write number of pages to console - }, - onError: exception => - { - exceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception); - waitHandle.Set(); - }, - onCompleted: () => waitHandle.Set()); - -bulkAllObservable.Subscribe(observer); <5> - -waitHandle.WaitOne(); <6> - -exceptionDispatchInfo?.Throw(); <7> ----- -<1> Customise each bulk operation before it is dispatched -<2> Index each document into either even-index or odd-index -<3> Decide if a document should be retried in the event of a failure -<4> If a document cannot be indexed this delegate is called -<5> Subscribe to the observable, which will initiate the bulk indexing process -<6> Block the current thread until a signal is received -<7> If an exception was captured during the bulk indexing process, throw it - diff --git a/docs/client-concepts/high-level/indexing/ingest-nodes.asciidoc b/docs/client-concepts/high-level/indexing/ingest-nodes.asciidoc deleted file mode 100644 index 2b1a11a7b85..00000000000 --- a/docs/client-concepts/high-level/indexing/ingest-nodes.asciidoc +++ /dev/null @@ -1,61 +0,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/ClientConcepts/HighLevel/Indexing/IngestNodes.doc.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! -//// - -[[ingest-nodes]] -=== Ingest Node - -Elasticsearch will automatically re-route index requests to ingest nodes, -however with some careful consideration you can optimise this path. - -==== Custom indexing client - -Since Elasticsearch will automatically reroute ingest requests to ingest nodes, you don't have to specify or configure any routing -information. However, if you're doing heavy ingestion and have dedicated ingest nodes, it makes sense to send index requests to -these nodes directly, to avoid any extra hops in the cluster. - -The simplest way to achieve this is to create a dedicated "indexing" client instance, and use it for indexing requests. - -[source,csharp] ----- -var pool = new StaticConnectionPool(new [] <1> -{ - new Uri("http://ingestnode1:9200"), - new Uri("http://ingestnode2:9200"), - new Uri("http://ingestnode3:9200") -}); -var settings = new ConnectionSettings(pool); -var indexingClient = new ElasticClient(settings); ----- -<1> list of ingest nodes - -==== Determining ingest capability - -In complex cluster configurations it can be easier to use a sniffing connection pool along with a node predicate to -filter out the nodes that have ingest capabilities. This allows you to customise the cluster and not have to reconfigure -the client. - -[source,csharp] ----- -var pool = new SniffingConnectionPool(new [] <1> -{ - new Uri("http://node1:9200"), - new Uri("http://node2:9200"), - new Uri("http://node3:9200") -}); -var settings = new ConnectionSettings(pool).NodePredicate(n => n.HasFeature(IngestEnabled)); <2> -var indexingClient = new ElasticClient(settings); ----- -<1> list of cluster nodes -<2> predicate to select only nodes with ingest capabilities - diff --git a/docs/client-concepts/high-level/indexing/pipelines.asciidoc b/docs/client-concepts/high-level/indexing/pipelines.asciidoc deleted file mode 100644 index 26fc88a3b20..00000000000 --- a/docs/client-concepts/high-level/indexing/pipelines.asciidoc +++ /dev/null @@ -1,126 +0,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/ClientConcepts/HighLevel/Indexing/Pipelines.doc.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! -//// - -[[pipelines]] -=== Ingest Pipelines - -An ingest pipeline is a series of processors that are to be executed in the same order as they are declared. - -Let's work with the following POCOs - -[source,csharp] ----- -public class Person -{ - public int Id { get; set; } - public string FirstName { get; set; } - public string LastName { get; set; } - public string IpAddress { get; set; } - public GeoIp GeoIp { get; set; } -} - -public class GeoIp -{ - public string CityName { get; set; } - public string ContinentName { get; set; } - public string CountryIsoCode { get; set; } - public GeoLocation Location { get; set; } - public string RegionName { get; set; } -} ----- - -==== Create an ingestion pipeline - -Assuming we are indexing Person documents, we can create an ingestion pipeline that manipulates the -incoming values before they are indexed. - -Lets assume that our application always expects surnames to be capitalised, and for initials to -be indexed into their own field. We also have an IP address that we'd like to convert into -a human-readable location. - -We could achieve this requirement by creating a custom mapping and creating an ingest pipeline. -The Person type can then be used as-is, without making any changes. - -[source,csharp] ----- -client.Indices.Create("people", c => c - .Map(p => p - .AutoMap() <1> - .Properties(props => props - .Keyword(t => t.Name("initials")) <2> - .Ip(t => t.Name(dv => dv.IpAddress)) <3> - .Object(t => t.Name(dv => dv.GeoIp)) <4> - ) - ) -); - -client.Ingest.PutPipeline("person-pipeline", p => p - .Processors(ps => ps - .Uppercase(s => s - .Field(t => t.LastName) <5> - ) - .Script(s => s - .Lang("painless") <6> - .Source("ctx.initials = ctx.firstName.substring(0,1) + ctx.lastName.substring(0,1)") - ) - .GeoIp(s => s <7> - .Field(i => i.IpAddress) - .TargetField(i => i.GeoIp) - ) - ) -); - -var person = new Person -{ - Id = 1, - FirstName = "Martijn", - LastName = "Laarman", - IpAddress = "139.130.4.5" -}; - -var indexResponse = client.Index(person, p => p.Index("people").Pipeline("person-pipeline")); <8> ----- -<1> automatically create the mapping from the type -<2> create an additional field to store the initials -<3> map field as IP Address type -<4> map GeoIp as object -<5> uppercase the lastname -<6> use a painless script to populate the new field -<7> use ingest-geoip plugin to enrich the GeoIp object from the supplied IP Address -<8> index the document using the created pipeline - -==== Increasing timeouts - -When a pipeline is specified, there will be the added overhead of document enrichment when indexing, the example given above, the execution -of the uppercasing and the Painless script. - -For large bulk requests, it could be prudent to increase the default indexing timeout to avoid exceptions. - -[source,csharp] ----- -client.Bulk(b => b - .Index("people") - .Pipeline("person-pipeline") - .Timeout("5m") <1> - .Index(/*snip*/) - .Index(/*snip*/) - .Index(/*snip*/) - .RequestConfiguration(rc => rc - .RequestTimeout(TimeSpan.FromMinutes(5)) <2> - ) -); ----- -<1> increases the server-side bulk timeout -<2> increases the HTTP request timeout - diff --git a/docs/client-concepts/high-level/indexing/reindexing-documents.asciidoc b/docs/client-concepts/high-level/indexing/reindexing-documents.asciidoc deleted file mode 100644 index 525d6c4f749..00000000000 --- a/docs/client-concepts/high-level/indexing/reindexing-documents.asciidoc +++ /dev/null @@ -1,265 +0,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/ClientConcepts/HighLevel/Indexing/ReindexingDocuments.doc.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! -//// - -[[reindexing-documents]] -=== Reindexing documents - -Sometimes there is a need to reindex documents from one index to another. The client provides two different methods for -reindexing documents, `ReindexOnServer` and `Reindex`. - -[[reindex]] -==== Reindex - -The reindex API of Elasticsearch is exposed as the `ReindexOnServer` method (and its asynchronous counterpart, `ReindexOnServerAsync`) on -the client. Simple usage is to define a source index and destination index and wait for the operation to complete - -NOTE: The destination index **must** exist before starting the reindex process - -[source,csharp] ----- -var reindexResponse = client.ReindexOnServer(r => r - .Source(s => s - .Index("source_index") - ) - .Destination(d => d - .Index("destination_index") - ) - .WaitForCompletion() <1> -); ----- -<1> Wait for the reindex process to complete before returning a response. - -In the example above, Elasticsearch will wait for the reindex process to complete before returning a response to the client. As such, -ensure that the client is configured with a sufficient request timeout when using `WaitForCompletion`. - -Instead of waiting for the reindex process to complete, reindex can be run asynchronously on Elasticsearch, returning a task that -can be used with the task APIs, to get the status of the process or cancel it. The following example demonstrates this approach - -[source,csharp] ----- -var reindexResponse = client.ReindexOnServer(r => r - .Source(s => s - .Index("source_index") - ) - .Destination(d => d - .Index("destination_index") - ) - .WaitForCompletion(false) <1> -); - -var taskId = reindexResponse.Task; <2> -var taskResponse = client.Tasks.GetTask(taskId); - -while (!taskResponse.Completed) <3> -{ - Thread.Sleep(TimeSpan.FromSeconds(20)); <4> - taskResponse = client.Tasks.GetTask(taskId); -} - -var completedReindexResponse = taskResponse.GetResponse(); <5> ----- -<1> Don't wait for the reindex process to complete before returning a response -<2> Get the task id from the response to use to check its progress -<3> Whilst the task isn't completed, keep checking -<4> Wait some time before fetching and checking the task again -<5> Get the completed reindex response from the task response and take some action - -[[reindex-with-parameters]] -==== Reindex with parameters - -The reindex API exposes additional parameters to control the reindex process, such as - -* A query to run on the source index to reindex only a subset of the documents that match a query - -* Selecting only a subset of fields from the source documents to reindex into the destination index - -* Running an <> on documents to be indexed into the destination index - -The following example demonstrates some of these parameters - -[source,csharp] ----- -var reindexResponse = client.ReindexOnServer(r => r - .Source(s => s - .Index("source_index") - .Query(q => q <1> - .Term(m => m - .Field(f => f.FirstName) - .Value("Russ") - ) - ) - .Source(so => so <2> - .Field(f => f.FirstName) - .Field(f => f.LastName) - ) - ) - .Destination(d => d - .Index("destination_index") - .Pipeline("my_reindex_pipeline") <3> - ) -); ----- -<1> Select only a subset of documents to reindex, from the source index -<2> Reindex only the first name and last name fields -<3> Run an ingest pipeline on documents when they are indexed into the destination index - -[[reindex-observable]] -==== Reindex observable - -In addition to `ReindexOnServer`, the client also exposes a `Reindex` method that uses the -https://docs.microsoft.com/en-us/dotnet/standard/events/observer-design-pattern[Observer Design Pattern] to set up a reindex operation -and allows observers to be registered to take action during the reindex process. - -[IMPORTANT] --- -In contrast to the `ReindexOnServer` method, which uses the reindex API of Elasticsearch to perform the reindex process -entirely on the server, the `Reindex` method - -1. retrieves batches of documents over the network from the source index on the server - -2. allows modifications to be performed on the client side - -3. makes requests to bulk index the modified documents to the destination index - -Such an approach can be more flexible than what is provided by the reindex API, at the cost of many more requests to Elasticsearch and -higher network traffic. Both approaches have their usages so you should choose the one that best suits your requirements. - -You might be wondering why `ReindexOnServer` that uses the reindex API, and `Reindex` that uses an observable approach, are called as such. -The `Reindex` method existed on the client long before the reindex API existed in Elasticsearch. Since the -APIs are quite different on the client, when the reindex API was introduced, it was decided to name it `ReindexOnServer` to not conflict -with the existing method that is still popularly used. - --- - -`Reindex` builds on top of <> and <> to fetch -documents from, and index documents into Elasticsearch, respectively. The following example demonstrates a simple use of `Reindex` - -[source,csharp] ----- -var slices = Environment.ProcessorCount; <1> - -var reindexObserver = client.Reindex(r => r - .ScrollAll("5s", slices, s => s <2> - .Search(ss => ss - .Index("source_index") - ) - ) - .BulkAll(b => b <3> - .Index("destination_index") - ) -) -.Wait(TimeSpan.FromMinutes(15), response => <4> -{ - // do something with each bulk response e.g. accumulate number of indexed documents -}); ----- -<1> Number of slices to split each scroll into -<2> How to fetch documents to be reindexed -<3> How to index fetched documents -<4> Wait up to 15 minutes for the reindex process to complete - -An index can be created when using `Reindex`. For example, the source index settings can be retrieved and used -as the basis for index settings of the destination index - -[source,csharp] ----- -var getIndexResponse = client.Indices.Get("source_index"); <1> -var indexSettings = getIndexResponse.Indices["source_index"]; - -var lastNameProperty = indexSettings.Mappings.Properties["lastName"]; <2> - -if (lastNameProperty is TextProperty textProperty) <3> -{ - if (textProperty.Fields == null) - textProperty.Fields = new Properties(); - - textProperty.Fields.Add("keyword", new KeywordProperty()); -} - -var reindexObserver = client.Reindex(r => r - .CreateIndex(c => c - .InitializeUsing(indexSettings) <4> - ) - .ScrollAll("5s", Environment.ProcessorCount, s => s - .Search(ss => ss - .Index("source_index") - ) - ) - .BulkAll(b => b - .Index("destination_index") - ) -) -.Wait(TimeSpan.FromMinutes(15), response => -{ - // do something with each bulk response e.g. accumulate number of indexed documents -}); ----- -<1> Get the settings for the source index -<2> Get the mapping for the `lastName` property -<3> If the `lastName` property is a `text` datatype, add a `keyword` <> -<4> Use the index settings to create the destination index - -`Reindex` has an overload that accepts a function for how source documents should be mapped to destination documents. In addition, -further control over reindexing can be achieved by using an observer to subscribe to the reindexing process to take some action on -each successful bulk response, when an error occurs, and when the process has finished. The following example demonstrates these -features. - -IMPORTANT: An observer should not throw exceptions from its interface implementations, such -as `OnNext` and `OnError`. Any exceptions thrown should be expected to go unhandled. In light of this, any exception -that occurs during the reindex process should be captured and thrown outside of the observer, as demonstrated in the -example below. Take a look at the -https://docs.microsoft.com/en-us/dotnet/standard/events/observer-design-pattern-best-practices#handling-exceptions[Observer Design Pattern best practices] -on handling exceptions. - -[source,csharp] ----- -var reindexObservable = client.Reindex( - person => person, <1> - r => r - .ScrollAll("5s", Environment.ProcessorCount, s => s - .Search(ss => ss - .Index("source_index") - ) - ) - .BulkAll(b => b - .Index("destination_index") - ) -); - -var waitHandle = new ManualResetEvent(false); -ExceptionDispatchInfo exceptionDispatchInfo = null; - -var observer = new ReindexObserver( - onNext: response => - { - // do something e.g. write number of pages to console - }, - onError: exception => - { - exceptionDispatchInfo = ExceptionDispatchInfo.Capture(exception); - waitHandle.Set(); - }, - onCompleted: () => waitHandle.Set()); - -reindexObservable.Subscribe(observer); <2> - -waitHandle.WaitOne(); <3> - -exceptionDispatchInfo?.Throw(); <4> ----- -<1> a function to define how source documents are mapped to destination documents -<2> Subscribe to the observable, which will initiate the reindex process -<3> Block the current thread until a signal is received -<4> If an exception was captured during the reindex process, throw it - diff --git a/docs/client-concepts/high-level/inference/document-paths.asciidoc b/docs/client-concepts/high-level/inference/document-paths.asciidoc deleted file mode 100644 index ab9b10b9a0b..00000000000 --- a/docs/client-concepts/high-level/inference/document-paths.asciidoc +++ /dev/null @@ -1,114 +0,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/ClientConcepts/HighLevel/Inference/DocumentPaths.doc.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! -//// - -[[document-paths]] -=== Document paths - -Many APIs in Elasticsearch describe a path to a document. In NEST, besides generating a constructor that takes -an Index and Id separately, we also generate a constructor that allows you to describe the path -to your document more succinctly using a an instance of the `DocumentPath` type. - -==== Creating new instances - -here we create a new document path based on Project with the id 1 - -[source,csharp] ----- -IDocumentPath path = new DocumentPath(1); -Expect("project").WhenSerializing(path.Index); -Expect(1).WhenSerializing(path.Id); ----- - -You can still override the inferred index name - -[source,csharp] ----- -path = new DocumentPath(1).Index("project1"); -Expect("project1").WhenSerializing(path.Index); ----- - -and there is also a static way to describe such paths - -[source,csharp] ----- -path = DocumentPath.Id(1); -Expect("project").WhenSerializing(path.Index); -Expect(1).WhenSerializing(path.Id); ----- - -==== Creating from a document type instance - -if you have an instance of your document you can use it as well generate document paths - -[source,csharp] ----- -var project = new Project { Name = "hello-world" }; ----- - -here we create a new document path based on the instance of `Project`, project - -[source,csharp] ----- -IDocumentPath path = new DocumentPath(project); -Expect("project").WhenSerializing(path.Index); -Expect("hello-world").WhenSerializing(path.Id); ----- - -You can still override the inferred index name - -[source,csharp] ----- -path = new DocumentPath(project).Index("project1"); -Expect("project1").WhenSerializing(path.Index); ----- - -and again, there is also a static way to describe such paths - -[source,csharp] ----- -path = DocumentPath.Id(project); -Expect("project").WhenSerializing(path.Index); - -DocumentPath p = project; ----- - -==== An example with requests - -[source,csharp] ----- -var project = new Project { Name = "hello-world" }; ----- - -we can see an example of how `DocumentPath` helps your describe your requests more tersely - -[source,csharp] ----- -var request = new IndexRequest(2) { Document = project }; -request = new IndexRequest(project); ----- - -when comparing with the full blown constructor and passing document manually, -`DocumentPath`'s benefits become apparent. Compare the following request that doesn't -use `DocumentPath` with the former examples - -[source,csharp] ----- -request = new IndexRequest(IndexName.From(), 2) -{ - Document = project -}; ----- - -Much more verbose, wouldn't you agree? - diff --git a/docs/client-concepts/high-level/inference/field-inference.asciidoc b/docs/client-concepts/high-level/inference/field-inference.asciidoc deleted file mode 100644 index b0928ffbd66..00000000000 --- a/docs/client-concepts/high-level/inference/field-inference.asciidoc +++ /dev/null @@ -1,658 +0,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/ClientConcepts/HighLevel/Inference/FieldInference.doc.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! -//// - -[[field-inference]] -=== Field inference - -Several places in the Elasticsearch API expect the path to a field from your original source document, as a string value. -NEST allows you to use C# expressions to strongly type these field path strings. - -These expressions are assigned to a type called `Field`, and there are several ways to create an instance of one - -==== Constructor - -Using the constructor directly is possible _but_ can get rather involved when resolving from a member access lambda expression - -[source,csharp] ----- -var fieldString = new Field("name"); - -var fieldProperty = new Field(typeof(Project).GetProperty(nameof(Project.Name))); - -Expression> expression = p => p.Name; -var fieldExpression = new Field(expression); - -Expect("name") - .WhenSerializing(fieldExpression) - .WhenSerializing(fieldString) - .WhenSerializing(fieldProperty); ----- - -When using the constructor and passing a value for `Name`, `Property` or `Expression`, -`ComparisonValue` is also set on the `Field` instance; this is used when - -* determining `Field` equality - -* getting the hash code for a `Field` instance - -[source,csharp] ----- -var fieldStringWithBoostTwo = new Field("name^2"); -var fieldStringWithBoostThree = new Field("name^3"); - -Expression> expression = p => p.Name; -var fieldExpression = new Field(expression); - -var fieldProperty = new Field(typeof(Project).GetProperty(nameof(Project.Name))); - -fieldStringWithBoostTwo.GetHashCode().Should().NotBe(0); -fieldStringWithBoostThree.GetHashCode().Should().NotBe(0); -fieldExpression.GetHashCode().Should().NotBe(0); -fieldProperty.GetHashCode().Should().NotBe(0); - -fieldStringWithBoostTwo.Should().Be(fieldStringWithBoostTwo); <1> ----- -<1> <> - -[[field-name-with-boost]] -==== Field Names with Boost - -When specifying a `Field` name, the name can include a boost value; NEST will split the name and boost -value and set the `Boost` property; a boost value as part of the string takes precedence over a boost -value that may also be passed as the second constructor argument - -[source,csharp] ----- -Field fieldString = "name^2"; -var fieldStringConstructor = new Field("name^2"); -var fieldStringCreate = new Field("name^2", 3); <1> - -fieldString.Name.Should().Be("name"); -fieldStringConstructor.Name.Should().Be("name"); -fieldStringCreate.Name.Should().Be("name"); -fieldString.Boost.Should().Be(2); -fieldStringConstructor.Boost.Should().Be(2); -fieldStringCreate.Boost.Should().Be(2); ----- -<1> NEST will take the boost from the name - -==== Implicit Conversion - -As well as using the constructor, you can also implicitly convert `string`, `PropertyInfo` and member access lambda expressions to a `Field`. -For expressions however, this is _still_ rather involved as the expression first needs to be assigned to a variable that explicitly specifies -the expression delegate type. - -[source,csharp] ----- -Field fieldString = "name"; - -Field fieldProperty = typeof(Project).GetProperty(nameof(Project.Name)); - -Expression> expression = p => p.Name; -Field fieldExpression = expression; - -Expect("name") - .WhenSerializing(fieldString) - .WhenSerializing(fieldProperty) - .WhenSerializing(fieldExpression); ----- - -[[nest-infer]] -==== Using Nest.Infer methods - -To ease creating a `Field` instance from expressions, there is a static `Infer` class you can use - -[TIP] -This example uses the https://msdn.microsoft.com/en-us/library/sf0df423.aspx#Anchor_0[static import] `using static Nest.Infer;` -in the using directives to shorthand `Nest.Infer.Field()` -to simply `Field()`. Be sure to include this static import if copying any of these examples. - -[source,csharp] ----- -Field fieldString = "name"; ----- - -but for expressions this is still rather involved - -[source,csharp] ----- -var fieldExpression = Field(p => p.Name); ----- - -this can be even shortened even further using a static import. -Now that is much terser than our first example using the constructor! - -[source,csharp] ----- -fieldExpression = Field(p => p.Name); - -Expect("name") - .WhenSerializing(fieldString) - .WhenSerializing(fieldExpression); ----- - -You can specify boosts in the field using a string, as well as using `Nest.Infer.Field` - -[source,csharp] ----- -fieldString = "name^2.1"; -fieldString.Boost.Should().Be(2.1); - -fieldExpression = Field(p => p.Name, 2.1); -fieldExpression.Boost.Should().Be(2.1); - -Expect("name^2.1") - .WhenSerializing(fieldString) - .WhenSerializing(fieldExpression); ----- - -[[camel-casing]] -==== Field name casing - -By default, NEST https://en.wikipedia.org/wiki/Camel_case[camelcases] **all** field names to better align with typical -JavaScript and JSON conventions - -using `DefaultFieldNameInferrer()` on ConnectionSettings you can change this behavior - -[source,csharp] ----- -var setup = WithConnectionSettings(s => s.DefaultFieldNameInferrer(p => p.ToUpper())); - -setup.Expect("NAME").WhenSerializing(Field(p => p.Name)); ----- - -A `Field` constructed from a `string` however is *always* passed along verbatim - -[source,csharp] ----- -setup.Expect("NaMe").WhenSerializing("NaMe"); ----- - -If you'd like NEST to not change the casing of field names at all, -simply pass a Func to `DefaultFieldNameInferrer` that simply returns the -input string - -[source,csharp] ----- -setup = WithConnectionSettings(s => s.DefaultFieldNameInferrer(p => p)); -setup.Expect("Name").WhenSerializing(Field(p => p.Name)); ----- - -==== Complex field name expressions - -You can follow your property expression to any depth. Here we are traversing to the `LeadDeveloper` `FirstName` - -[source,csharp] ----- -Expect("leadDeveloper.firstName").WhenSerializing(Field(p => p.LeadDeveloper.FirstName)); ----- - -When dealing with collection indexers, the indexer access is ignored allowing you to traverse into properties of collections - -[source,csharp] ----- -Expect("curatedTags").WhenSerializing(Field(p => p.CuratedTags[0])); ----- - -Similarly, LINQ's `.First()` method also works - -[source,csharp] ----- -Expect("curatedTags").WhenSerializing(Field(p => p.CuratedTags.First())); -Expect("curatedTags.added").WhenSerializing(Field(p => p.CuratedTags[0].Added)); -Expect("curatedTags.name").WhenSerializing(Field(p => p.CuratedTags.First().Name)); ----- - -NOTE: Remember, these are _expressions_ to access members, and not actual code that will be executed - -An indexer on a dictionary is assumed to describe a property name - -[source,csharp] ----- -Expect("metadata.hardcoded").WhenSerializing(Field(p => p.Metadata["hardcoded"])); -Expect("metadata.hardcoded.created").WhenSerializing(Field(p => p.Metadata["hardcoded"].Created)); ----- - -A cool feature here is that NEST will evaluate variables passed to an indexer - -[source,csharp] ----- -var variable = "var"; -Expect("metadata.var").WhenSerializing(Field(p => p.Metadata[variable])); -Expect("metadata.var.created").WhenSerializing(Field(p => p.Metadata[variable].Created)); ----- - -If you are using Elasticearch's multi-fields, which you really should as they allow -you to analyze a string in a number of different ways, these __"virtual"__ sub fields -do not always map back on to your POCO. By calling `.Suffix()` on expressions, you describe the sub fields that -should be mapped and <> - -[source,csharp] ----- -Expect("leadDeveloper.firstName.raw").WhenSerializing( - Field(p => p.LeadDeveloper.FirstName.Suffix("raw"))); - -Expect("curatedTags.raw").WhenSerializing( - Field(p => p.CuratedTags[0].Suffix("raw"))); - -Expect("curatedTags.raw").WhenSerializing( - Field(p => p.CuratedTags.First().Suffix("raw"))); - -Expect("curatedTags.added.raw").WhenSerializing( - Field(p => p.CuratedTags[0].Added.Suffix("raw"))); - -Expect("metadata.hardcoded.raw").WhenSerializing( - Field(p => p.Metadata["hardcoded"].Suffix("raw"))); - -Expect("metadata.hardcoded.created.raw").WhenSerializing( - Field(p => p.Metadata["hardcoded"].Created.Suffix("raw"))); ----- - -You can even chain `.Suffix()` calls to any depth! - -[source,csharp] ----- -Expect("curatedTags.name.raw.evendeeper").WhenSerializing( - Field(p => p.CuratedTags.First().Name.Suffix("raw").Suffix("evendeeper"))); ----- - -Variables passed to suffix will be evaluated as well - -[source,csharp] ----- -var suffix = "unanalyzed"; -Expect("metadata.var.unanalyzed").WhenSerializing( - Field(p => p.Metadata[variable].Suffix(suffix))); - -Expect("metadata.var.created.unanalyzed").WhenSerializing( - Field(p => p.Metadata[variable].Created.Suffix(suffix))); ----- - -Suffixes can also be appended to expressions using `.AppendSuffix()`. This is useful in cases where you want to apply the same suffix -to a list of fields. - -Here we have a list of expressions - -[source,csharp] ----- -var expressions = new List>> -{ - p => p.Name, - p => p.Description, - p => p.CuratedTags.First().Name, - p => p.LeadDeveloper.FirstName, - p => p.Metadata["hardcoded"] -}; ----- - -and we want to append the suffix "raw" to each - -[source,csharp] ----- -var fieldExpressions = - expressions.Select>, Field>(e => e.AppendSuffix("raw")).ToList(); - -Expect("name.raw").WhenSerializing(fieldExpressions[0]); -Expect("description.raw").WhenSerializing(fieldExpressions[1]); -Expect("curatedTags.name.raw").WhenSerializing(fieldExpressions[2]); -Expect("leadDeveloper.firstName.raw").WhenSerializing(fieldExpressions[3]); -Expect("metadata.hardcoded.raw").WhenSerializing(fieldExpressions[4]); ----- - -or we might even want to chain multiple `.AppendSuffix()` calls - -[source,csharp] ----- -var multiSuffixFieldExpressions = - expressions.Select>, Field>(e => e.AppendSuffix("raw").AppendSuffix("evendeeper")).ToList(); - -Expect("name.raw.evendeeper").WhenSerializing(multiSuffixFieldExpressions[0]); -Expect("description.raw.evendeeper").WhenSerializing(multiSuffixFieldExpressions[1]); -Expect("curatedTags.name.raw.evendeeper").WhenSerializing(multiSuffixFieldExpressions[2]); -Expect("leadDeveloper.firstName.raw.evendeeper").WhenSerializing(multiSuffixFieldExpressions[3]); -Expect("metadata.hardcoded.raw.evendeeper").WhenSerializing(multiSuffixFieldExpressions[4]); ----- - -[[member-expressions-only]] -==== Member Expressions only - -The expression passed to Field should only be a MemberExpression -https://docs.microsoft.com/en-us/dotnet/api/system.linq.expressions.memberexpression?view=netframework-4.7.2 - -[source,csharp] ----- -var fieldExpression = Field(p => p.Name + 2); ----- - -[[field-name-attribute]] -==== Attribute based naming - -Using NEST's property attributes you can specify a new name for the properties - -[source,csharp] ----- -public class BuiltIn -{ - [Text(Name = "naam")] - public string Name { get; set; } -} - -Expect("naam").WhenSerializing(Field(p => p.Name)); ----- - -[[data-member-field-attribute]] -==== DataMember attributes - -If a property has a `System.Runtime.Serialization.DataMemberAttribute` applied, this can be used to resolve -a field value for a property - -[source,csharp] ----- -public class DataMember -{ - [DataMember(Name = "nameFromDataMember")] - public string Name { get; set; } -} - -Expect("nameFromDataMember").WhenSerializing(Field(p => p.Name)); ----- - -[[serializer-specific-field-attribute]] -==== Serializer specific attributes - -NEST can also use a serializer specific attribute to resolve a field value for a property. -In this example, the {nuget}/NEST.JsonNetSerializer[`JsonNetSerializer`] is hooked up as the -<> for the client and we use the `JsonPropertyAttribute` to resolve a field - -[source,csharp] ----- -public class SerializerSpecific -{ - [PropertyName("nameInJson"), JsonProperty("nameInJson")] - public string Name { get; set; } -} - -Expect("nameInJson").WhenSerializing(Field(p => p.Name)); ----- - -If both a NEST property attribute and a serializer specific attribute are present on a property, -**NEST attributes take precedence** - -[source,csharp] ----- -public class Both -{ - [Text(Name = "naam")] - [PropertyName("nameInJson"), DataMember(Name = "nameInJson")] - public string Name { get; set; } -} - -Expect("naam").WhenSerializing(Field(p => p.Name)); -Expect(new - { - naam = "Martijn Laarman" - }).WhenSerializing(new Both { Name = "Martijn Laarman" }); ----- - -[[field-inference-caching]] -==== Field Inference Caching - -Resolution of field names is cached _per_ `ConnectionSettings` instance. To demonstrate, -take the following simple POCOs - -[source,csharp] ----- -class A { public C C { get; set; } } - -class B { public C C { get; set; } } - -class C -{ - public string Name { get; set; } -} - -var client = TestClient.Default; - -var fieldNameOnA = client.Infer.Field(Field(p => p.C.Name)); -var fieldNameOnB = client.Infer.Field(Field(p => p.C.Name)); ----- - -Here we have two similarly shaped expressions, one coming from A and one from B -that will resolve to the same field name, as expected - -[source,csharp] ----- -fieldNameOnA.Should().Be("c.name"); -fieldNameOnB.Should().Be("c.name"); ----- - -now we create a new connection settings with a re-map for `C` on class `A` to `"d"` -now when we resolve the field path for property `C` on `A`, it will be different than -for property `C` on `B` - -[source,csharp] ----- -var newConnectionSettings = new TestConnectionSettings() - .DefaultMappingFor(m => m - .PropertyName(p => p.C, "d") - ); - -var newClient = new ElasticClient(newConnectionSettings); - -fieldNameOnA = newClient.Infer.Field(Field(p => p.C.Name)); -fieldNameOnB = newClient.Infer.Field(Field(p => p.C.Name)); - -fieldNameOnA.Should().Be("d.name"); -fieldNameOnB.Should().Be("c.name"); ----- - -however we didn't break inference on the first client instance using its separate connection settings - -[source,csharp] ----- -fieldNameOnA = client.Infer.Field(Field(p => p.C.Name)); -fieldNameOnB = client.Infer.Field(Field(p => p.C.Name)); - -fieldNameOnA.Should().Be("c.name"); -fieldNameOnB.Should().Be("c.name"); ----- - -[[field-inference-precedence]] -==== Inference Precedence - -To wrap up, the precedence in which field names are inferred is: - -. A naming of the property on `ConnectionSettings` using `.PropertyName()` - -. A NEST `PropertyNameAttribute` - -. Ask the serializer if the property has a verbatim value, e.g. it has a `JsonPropertyAttribute` if using {nuget}/NEST.JsonNetSerializer[`JsonNetSerializer`] - -. See if the `MemberInfo` has a `DataMemberAttribute` applied - -. Pass the `MemberInfo` to the `DefaultFieldNameInferrer`, which by default will camel case the `Name` property - -The following example class will demonstrate this precedence - -[source,csharp] ----- -private class Precedence -{ - [Text(Name = "renamedIgnoresNest")] - [PropertyName("renamedIgnoresJsonProperty"),JsonProperty("renamedIgnoresJsonProperty")] - public string RenamedOnConnectionSettings { get; set; } <1> - - [Text(Name = "nestAtt")] - [PropertyName("nestProp"),JsonProperty("jsonProp")] - public string NestAttribute { get; set; } <2> - - [PropertyName("nestProp"),JsonProperty("jsonProp")] - public string NestProperty { get; set; } <3> - - [DataMember(Name ="jsonProp")] - public string JsonProperty { get; set; } <4> - - [PropertyName("dontaskme"),JsonProperty("dontaskme")] - public string AskSerializer { get; set; } <5> - - [DataMember(Name = "data")] - public string DataMember { get; set; } - - public string DefaultFieldNameInferrer { get; set; } <6> -} ----- -<1> Even though this property has various attributes applied we provide an override on ConnectionSettings later that takes precedence. -<2> Has a `TextAttribute`, `PropertyNameAttribute` and a `JsonPropertyAttribute` - the `TextAttribute` takes precedence. -<3> Has both a `PropertyNameAttribute` and a `JsonPropertyAttribute` - the `PropertyNameAttribute` takes precedence. -<4> `JsonPropertyAttribute` takes precedence. -<5> This property we are going to hard code in our custom serializer to resolve to ask. -<6> We are going to register a DefaultFieldNameInferrer on ConnectionSettings that will uppercase all properties. - -We'll create a custom `IPropertyMappingProvider` that renames any property named `AskSerializer` to `ask`. -and hook it up when creating the Connection Settings in the following section. - -[source,csharp] ----- -private class CustomPropertyMappingProvider : PropertyMappingProvider -{ - public override IPropertyMapping CreatePropertyMapping(MemberInfo memberInfo) - { - return memberInfo.Name == nameof(Precedence.AskSerializer) - ? new PropertyMapping { Name = "ask" } - : base.CreatePropertyMapping(memberInfo); - } -} ----- - -Now, when we create the Connection Settings to use to configure the client, we'll add - -* a default mapping for the `Precedence` type - -* our `CustomPropertyMappingProvider` - -* a delegate to perform default field name inference - -[source,csharp] ----- -var usingSettings = WithConnectionSettings(s => s - - .DefaultMappingFor(m => m - .PropertyName(p => p.RenamedOnConnectionSettings, "renamed") <1> - ) - .DefaultFieldNameInferrer(p => p.ToUpperInvariant()) <2> -).WithPropertyMappingProvider(new CustomPropertyMappingProvider()); <3> - -usingSettings.Expect("renamed").ForField(Field(p => p.RenamedOnConnectionSettings)); -usingSettings.Expect("nestAtt").ForField(Field(p => p.NestAttribute)); -usingSettings.Expect("nestProp").ForField(Field(p => p.NestProperty)); -usingSettings.Expect("jsonProp").ForField(Field(p => p.JsonProperty)); -usingSettings.Expect("ask").ForField(Field(p => p.AskSerializer)); -usingSettings.Expect("data").ForField(Field(p => p.DataMember)); -usingSettings.Expect("DEFAULTFIELDNAMEINFERRER").ForField(Field(p => p.DefaultFieldNameInferrer)); ----- -<1> Rename on the mapping for the `Precedence` type -<2> Default inference for a field, if no other rules apply or are specified for a given field -<3> Hook up the custom `IPropertyMappingProvider` - -The same naming rules also apply when indexing a document - -[source,csharp] ----- -usingSettings.Expect(new [] -{ - "ask", - "DEFAULTFIELDNAMEINFERRER", - "jsonProp", - "nestProp", - "nestAtt", - "renamed", - "data" -}).AsPropertiesOf(new Precedence -{ - RenamedOnConnectionSettings = "renamed on connection settings", - NestAttribute = "using a nest attribute", - NestProperty = "using a nest property", - JsonProperty = "the default serializer resolves json property attributes", - AskSerializer = "serializer fiddled with this one", - DefaultFieldNameInferrer = "shouting much?", - DataMember = "using a DataMember attribute" -}); ----- - -[[inherited-field-inference]] -==== Overriding inherited field inference - -Properties inherited from a base type can be ignored and renamed using `DefaultMappingFor` for -a given type, on Connection Settings. - -To demonstrate, the `IgnoreMe` property on `Parent` can be ignored on the `Child` type, and the -`Description` property renamed, using `DefaultMappingFor(...)` - -[source,csharp] ----- -public class Parent -{ - public int Id { get; set; } - public string Description { get; set; } - public string IgnoreMe { get; set; } -} - -public class Child : Parent { } - -var usingSettings = WithConnectionSettings(s => s - .DefaultMappingFor(m => m - .PropertyName(p => p.Description, "desc") - .Ignore(p => p.IgnoreMe) - ) - ); -usingSettings.Expect(new [] - { - "id", - "desc", - }).AsPropertiesOf(new Child - { - Id = 1, - Description = "this property will be renamed for Child", - IgnoreMe = "this property will be ignored (won't be serialized) for Child", - }); - -public class SourceModel -{ - [PropertyName("gexo")] - public GeoModel Geo { get; set; } -} - -public class GeoModel -{ - [DataMember(Name = "country_iso_code")] - public string CountryIsoCode { get; set; } -} - -var usingSettings = WithConnectionSettings(s => s) - .WithSourceSerializer(JsonNetSerializer.Default); - -usingSettings.Expect("gexo").ForField(Field(p=>p.Geo)); -usingSettings.Expect("country_iso_code").ForField(Field(p=>p.CountryIsoCode)); -usingSettings.Expect(new [] - { - "country_iso_code", - }).AsPropertiesOf(new GeoModel { CountryIsoCode = "nl" }); -usingSettings.Expect(new [] - { - "gexo", - }).AsPropertiesOf(new SourceModel { Geo = new GeoModel { CountryIsoCode = "nl" } }); - -usingSettings.Expect("gexo.country_iso_code").ForField(Field(p=>p.Geo.CountryIsoCode)); ----- - diff --git a/docs/client-concepts/high-level/inference/ids-inference.asciidoc b/docs/client-concepts/high-level/inference/ids-inference.asciidoc deleted file mode 100644 index 70c6ceb07e3..00000000000 --- a/docs/client-concepts/high-level/inference/ids-inference.asciidoc +++ /dev/null @@ -1,195 +0,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/ClientConcepts/HighLevel/Inference/IdsInference.doc.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! -//// - -[[ids-inference]] -=== Ids inference - -==== Implicit conversion - -Several places in the Elasticsearch API expect an instance of the `Id` type to be passed. -This is a special type that you can implicitly convert to from the following types - -* `Int32` - -* `Int64` - -* `String` - -* `Guid` - -Methods that take an `Id` can be passed any of these types and they will be implicitly converted to an instance of `Id` - -[source,csharp] ----- -Id idFromInt = 1; -Id idFromLong = 2L; -Id idFromString = "hello-world"; -Id idFromGuid = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"); - -Expect(1).WhenSerializing(idFromInt); -Expect(2).WhenSerializing(idFromLong); -Expect("hello-world").WhenSerializing(idFromString); -Expect("d70bd3cf-4e38-46f3-91ca-fcbef29b148e").WhenSerializing(idFromGuid); ----- - -==== Inferring Id from a type - -Sometimes a method takes an object instance and the client requires an `Id` from that -instance to build up a path. -There is no implicit conversion from any object to `Id`, but we can call `Id.From`. - -Imagine your codebase has the following type that we want to index into Elasticsearch - -[source,csharp] ----- -class MyDTO -{ - public Guid Id { get; set; } - public string Name { get; set; } - public string OtherName { get; set; } -} ----- - -By default NEST will try to find a property called `Id` on the class using reflection -and create a cached delegate based on the property getter - -[source,csharp] ----- -var dto = new MyDTO -{ - Id = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"), - Name = "x", - OtherName = "y" -}; - -Expect("d70bd3cf-4e38-46f3-91ca-fcbef29b148e").WhenInferringIdOn(dto); ----- - -Using connection settings, you can specify a different property that NEST should use to infer Id for the document. -Here we instruct NEST to infer the Id for `MyDTO` based on its `Name` property - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .IdProperty(p => p.Name) - ) -).Expect("x").WhenInferringIdOn(dto); ----- - -IMPORTANT: Inference rules are cached __per__ `ConnectionSettings` instance. - -Because the cache is per `ConnectionSettings` instance, we can create another `ConnectionSettings` instance -with different inference rules - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .IdProperty(p => p.OtherName) - ) -).Expect("y").WhenInferringIdOn(dto); ----- - -DefaultMappingFor also has a non generic overload for the more dynamic use-cases. - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(typeof(MyDTO), m => m - .IdProperty(typeof(MyDTO).GetProperty(nameof(MyDTO.Name)).Name) - ) -).Expect("x").WhenInferringIdOn(dto); ----- - -==== Using the ElasticsearchType attribute - -Another way to control Id inference is to mark the type with an `ElasticsearchType` attribute, setting `IdProperty` -to the name of the property that should be used for the document id - -[source,csharp] ----- -[ElasticsearchType(IdProperty = nameof(Name))] -class MyOtherDTO -{ - public Guid Id { get; set; } - public string Name { get; set; } - public string OtherName { get; set; } -} ----- - -Now when we infer the id we expect it to be the value of the `Name` property without doing any configuration on the `ConnectionSettings` - -[source,csharp] ----- -var dto = new MyOtherDTO -{ - Id = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"), - Name = "x", - OtherName = "y" -}; - -Expect("x").WhenInferringIdOn(dto); ----- - -==== Using Mapping inference on ConnectionSettings - -This attribute *is* cached statically/globally, however an inference rule on `ConnectionSettings` for the type will -still win over the attribute. - -Here we demonstrate this by creating a different `ConnectionSettings` instance -that will infer the document id from the property `OtherName`: - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .IdProperty(p => p.OtherName) - ) -).Expect("y").WhenInferringIdOn(dto); ----- - -==== Disabling Id inference - -You can configure the client to disable Id inference on a CLR type basis - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .DisableIdInference() - ) -).Expect(null).WhenInferringIdOn(dto); ----- - -or globally for all types - -[source,csharp] ----- -WithConnectionSettings(x => x.DefaultDisableIdInference()) - .Expect(null).WhenInferringIdOn(dto); ----- - -Once disabled globally, Id inference cannot be enabled per type - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultDisableIdInference() - .DefaultMappingFor(m => m - .DisableIdInference(disable: false) - ) -).Expect(null).WhenInferringIdOn(dto); ----- - diff --git a/docs/client-concepts/high-level/inference/index-name-inference.asciidoc b/docs/client-concepts/high-level/inference/index-name-inference.asciidoc deleted file mode 100644 index b8bebad3585..00000000000 --- a/docs/client-concepts/high-level/inference/index-name-inference.asciidoc +++ /dev/null @@ -1,168 +0,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/ClientConcepts/HighLevel/Inference/IndexNameInference.doc.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! -//// - -[[index-name-inference]] -=== Index name inference - -Many endpoints within the Elasticsearch API expect to receive one or more index names -as part of the request, in order to know what index/indices a request should operate on. - -NEST has a number of ways in which the index name(s) can be specified - -==== Default Index name on Connection Settings - -A default index name can be specified on `ConnectionSettings` using `.DefaultIndex()`. -This is the default index name to use, when no other index name can be resolved for a request - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultIndex("defaultindex"); <1> - -var client = new ElasticClient(settings); -var searchResponse = client.Search(); ----- -<1> set the default index - -will send a search request to the API endpoint - -[source,javascript] ----- -"http://localhost:9200/defaultindex/_search" ----- - -[[index-name-type-mapping]] -==== Index name for a .NET type - -An index name can be mapped for a _Plain Old CLR Object_ (POCO) using `.DefaultMappingFor()` on `ConnectionSettings` - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultMappingFor(m => m - .IndexName("projects") - ); - -var client = new ElasticClient(settings); -var searchResponse = client.Search(); ----- - -will send a search request to the API endpoint - -[source,javascript] ----- -"http://localhost:9200/projects/_search" ----- - -`.DefaultMappingFor()` can also be used to specify other defaults for a POCO, including -property names, property to use for the document id, amongst others. - -An index name for a POCO provided using `.DefaultMappingFor()` **will take precedence** over -the default index name set on `ConnectionSettings`. This way, the client can be configured with a default index to use if no -index is specified, and a specific index to use for different POCO types. - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultIndex("defaultindex") <1> - .DefaultMappingFor(m => m - .IndexName("projects") <2> - ); - -var client = new ElasticClient(settings); - -var projectSearchResponse = client.Search(); ----- -<1> a default index to use, when no other index can be inferred -<2> a index to use when `Project` is the target POCO type - -will send a search request to the API endpoint - -[source,javascript] ----- -"http://localhost:9200/projects/_search" ----- - -but - -[source,csharp] ----- -var objectSearchResponse = client.Search(); ----- - -will send a search request to the API endpoint - -[source,javascript] ----- -"http://localhost:9200/defaultindex/_search" ----- - -==== Explicitly specifying Index name on the request - -For API calls that expect an index name, an index name can be explicitly provided -on the request - -[source,csharp] ----- -var settings = new ConnectionSettings(); -var client = new ElasticClient(settings); - -var response = client.Search(s => s - .Index("some-other-index") <1> -); ----- -<1> Provide the index name on the request - -will send a search request to the API endpoint - -[source,javascript] ----- -"http://localhost:9200/some-other-index/_search" ----- - -When an index name is provided on a request, it **will take precedence** over the default -index name specified on `ConnectionSettings`, _and_ any index name specified for the POCO -using `.DefaultMappingFor()`. The following example will send a search request -to the same API endpoint as the previous example - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultIndex("defaultindex") - .DefaultMappingFor(m => m - .IndexName("projects") - ); - -var client = new ElasticClient(settings); - -var response = client.Search(s => s - .Index("some-other-index") -); ----- - -In summary, the order of precedence for determining the index name for a request is - -. Index name specified on the request - -. Index name specified for the generic type parameter in the request using `.DefaultMappingFor()` - -. Default index name specified on `ConnectionSettings` - -[IMPORTANT] --- -If no index can be determined for a request that requires an index, the client will throw -an exception to indicate that this is the case. - --- - diff --git a/docs/client-concepts/high-level/inference/indices-paths.asciidoc b/docs/client-concepts/high-level/inference/indices-paths.asciidoc deleted file mode 100644 index 69c15dc6a26..00000000000 --- a/docs/client-concepts/high-level/inference/indices-paths.asciidoc +++ /dev/null @@ -1,169 +0,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/ClientConcepts/HighLevel/Inference/IndicesPaths.doc.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! -//// - -[[indices-paths]] -=== Indices paths - -Some APIs in Elasticsearch take an index name, a collection of index names, -or the special `_all` marker (used to specify all indices), in the URI path of the request, to specify the indices that -the request should execute against. - -In NEST, these index names can be specified using the `Indices` type. - -==== Implicit Conversion - -To make working with `Indices` easier, several types implicitly convert to it: - -* `string` - -* comma separated `string` - -* `string` array - -* a CLR type, <> - -* `IndexName` - -* `IndexName` array - -Here are some examples of how implicit conversions can be used to specify index names - -[source,csharp] ----- -Nest.Indices singleIndexFromString = "name"; -Nest.Indices multipleIndicesFromString = "name1, name2"; -Nest.Indices multipleIndicesFromStringArray = new [] { "name1", "name2" }; -Nest.Indices allFromString = "_all"; - -Nest.Indices allWithOthersFromString = "_all, name2"; <1> - -Nest.Indices singleIndexFromType = typeof(Project); <2> - -Nest.Indices singleIndexFromIndexName = IndexName.From(); - -singleIndexFromString.Match( - all => all.Should().BeNull(), - many => many.Indices.Should().HaveCount(1).And.Contain("name") -); - -multipleIndicesFromString.Match( - all => all.Should().BeNull(), - many => many.Indices.Should().HaveCount(2).And.Contain("name2") -); - -allFromString.Match( - all => all.Should().NotBeNull(), - many => many.Indices.Should().BeNull() -); - -allWithOthersFromString.Match( - all => all.Should().NotBeNull(), - many => many.Indices.Should().BeNull() -); - -multipleIndicesFromStringArray.Match( - all => all.Should().BeNull(), - many => many.Indices.Should().HaveCount(2).And.Contain("name2") -); - -singleIndexFromType.Match( - all => all.Should().BeNull(), - many => many.Indices.Should().HaveCount(1).And.Contain(typeof(Project)) -); - -singleIndexFromIndexName.Match( - all => all.Should().BeNull(), - many => many.Indices.Should().HaveCount(1).And.Contain(typeof(Project)) -); ----- -<1> `_all` will override any specific index names here -<2> The `Project` type has been mapped to a specific index name using <`>> - -[[nest-indices]] -==== Using Nest.Indices methods - -To make creating `IndexName` or `Indices` instances easier, `Nest.Indices` also contains several static methods -that can be used to construct them. - -===== Single index - -A single index can be specified using a CLR type or a string, and the `.Index()` method. - -[TIP] -This example uses the static import `using static Nest.Indices;` in the using directives to shorthand `Nest.Indices.Index()` -to simply `Index()`. Be sure to include this static import if copying any of these examples. - -[source,csharp] ----- -var client = TestClient.Default; - -var singleString = Index("name1"); <1> -var singleTyped = Index(); <2> - -ISearchRequest singleStringRequest = new SearchDescriptor().Index(singleString); -ISearchRequest singleTypedRequest = new SearchDescriptor().Index(singleTyped); - -((IUrlParameter)singleStringRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("name1"); -((IUrlParameter)singleTypedRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("project"); - -var invalidSingleString = Index("name1, name2"); <3> ----- -<1> specifying a single index using a string -<2> specifying a single index using a type -<3> an **invalid** single index name - -===== Multiple indices - -Similarly to a single index, multiple indices can be specified using multiple CLR types or multiple strings - -[source,csharp] ----- -var manyStrings = Index("name1", "name2"); <1> -var manyTypes = Index().And(); <2> -var client = TestClient.Default; - -ISearchRequest manyStringRequest = new SearchDescriptor().Index(manyStrings); -ISearchRequest manyTypedRequest = new SearchDescriptor().Index(manyTypes); - -((IUrlParameter)manyStringRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("name1,name2"); -((IUrlParameter)manyTypedRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("project,devs"); <3> - -manyStringRequest = new SearchDescriptor().Index(new[] { "name1", "name2" }); -((IUrlParameter)manyStringRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("name1,name2"); ----- -<1> specifying multiple indices using strings -<2> specifying multiple indices using types -<3> The index names here come from the Connection Settings passed to `TestClient`. See the documentation on <> for more details. - -===== All Indices - -Elasticsearch allows searching across multiple indices using the special `_all` marker. - -NEST exposes the `_all` marker with `Indices.All` and `Indices.AllIndices`. Why expose it in two ways, you ask? -Well, you may be using both `Nest.Indices` and `Nest.Types` in the same file and you may also be using C#6 -static imports too; in this scenario, the `All` property becomes ambiguous between `Indices.All` and `Types.All`, so the -`_all` marker for indices is exposed as `Indices.AllIndices`, to alleviate this ambiguity - -[source,csharp] ----- -var indicesAll = All; -var allIndices = AllIndices; - -ISearchRequest indicesAllRequest = new SearchDescriptor().Index(indicesAll); -ISearchRequest allIndicesRequest = new SearchDescriptor().Index(allIndices); - -((IUrlParameter)indicesAllRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("_all"); -((IUrlParameter)allIndicesRequest.Index).GetString(this.Client.ConnectionSettings).Should().Be("_all"); ----- - diff --git a/docs/client-concepts/high-level/inference/property-inference.asciidoc b/docs/client-concepts/high-level/inference/property-inference.asciidoc deleted file mode 100644 index ad5ff5849bf..00000000000 --- a/docs/client-concepts/high-level/inference/property-inference.asciidoc +++ /dev/null @@ -1,46 +0,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/ClientConcepts/HighLevel/Inference/PropertyInference.doc.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! -//// - -[[property-inference]] -=== Property name inference - -==== Appending suffixes to a lambda expression body - -Suffixes can be appended to the body of a lambda expression, which is useful in cases where -you have a POCO property mapped as a <> -and want to use strongly typed access with a lambda expression, yet append a suffix to the -generated field name, in order to access a particular sub field of the multi-field. - -The `.Suffix()` extension method can be used for this purpose and when serializing expressions suffixed -in this way, the serialized property name resolves to the last token - -[source,csharp] ----- -Expression> expression = p => p.Name.Suffix("raw"); -Expect("raw").WhenSerializing(expression); ----- - -==== Appending suffixes to a Lambda expression - -Alternatively, suffixes can be applied to a lambda expression directly using -the `.ApplySuffix()` extension method. Again, the serialized field name -resolves to the last token - -[source,csharp] ----- -Expression> expression = p => p.Name; -expression = expression.AppendSuffix("raw"); -Expect("raw").WhenSerializing(expression); ----- - diff --git a/docs/client-concepts/high-level/inference/routing-inference.asciidoc b/docs/client-concepts/high-level/inference/routing-inference.asciidoc deleted file mode 100644 index 0174588a703..00000000000 --- a/docs/client-concepts/high-level/inference/routing-inference.asciidoc +++ /dev/null @@ -1,192 +0,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/ClientConcepts/HighLevel/Inference/RoutingInference.doc.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! -//// - -[[routing-inference]] -=== Routing inference - -==== Implicit conversion - -You can always create a routing explicitly by relying on the implicit conversion from the following types - -* `Int32` - -* `Int64` - -* `String` - -* `Guid` - -Methods and Properties that take an `Routing` can be passed any of these types and it will be implicitly -converted to an instance of `Routing` - -[source,csharp] ----- -Routing routingFromInt = 1; -Routing routingFromLong = 2L; -Routing routingFromString = "hello-world"; -Routing routingFromGuid = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"); - -Expect(1).WhenSerializing(routingFromInt); -Expect(2).WhenSerializing(routingFromLong); -Expect("hello-world").WhenSerializing(routingFromString); -Expect("d70bd3cf-4e38-46f3-91ca-fcbef29b148e").WhenSerializing(routingFromGuid); ----- - -==== Inferring from a type - -The real power of the `Routing` is in the inference rules (the default inferred routing for an object will be null). -Lets look at an example of this given the following POCO: - -[source,csharp] ----- -class MyDTO -{ - public Guid Routing { get; set; } - public string Name { get; set; } - public string OtherName { get; set; } -} ----- - -By default NEST will try to find a property called `Routing` on the class using reflection -and create a cached delegate based on the property getter - -[source,csharp] ----- -var dto = new MyDTO -{ - Routing = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"), - Name = "x", - OtherName = "y" -}; -Expect(null).WhenInferringRoutingOn(dto); ----- - -Using connection settings, you can specify a property that NEST should use to infer Routing for the document. -Here we instruct NEST to infer the Routing for `MyDTO` based on its `Name` property - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .RoutingProperty(p => p.Name) - ) -).Expect("x").WhenInferringRoutingOn(dto); ----- - -IMPORTANT: Inference rules are cached __per__ `ConnectionSettings` instance. - -Because the cache is per `ConnectionSettings` instance, we can create another `ConnectionSettings` instance -with different inference rules - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .RoutingProperty(p => p.OtherName) - ) -).Expect("y").WhenInferringRoutingOn(dto); ----- - -==== JoinField - -If your class has a property of type JoinField, NEST will automatically infer the parentid as the routing value. - -The name of this property can be anything. Be sure the read the <> to get a complete -walkthrough on using Parent Child joins with NEST. - -[source,csharp] ----- -class MyOtherDTO -{ - public JoinField SomeJoinField { get; set; } - public Guid Id { get; set; } - public string Name { get; set; } - public string OtherName { get; set; } -} ----- - -here we link this instance of `MyOtherDTO` with its parent id `"8080"` - -[source,csharp] ----- -var dto = new MyOtherDTO -{ - SomeJoinField = JoinField.Link("8080"), - Id = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"), - Name = "x", - OtherName = "y" -}; -Expect("8080").WhenInferringRoutingOn(dto); ----- - -Here we link this instance as the root (parent) of the relation. NEST infers that the default routing for this instance -should be the Id of the document itself. - -[source,csharp] ----- -dto = new MyOtherDTO -{ - SomeJoinField = JoinField.Root(), - Id = new Guid("D70BD3CF-4E38-46F3-91CA-FCBEF29B148E"), - Name = "x", - OtherName = "y" -}; -Expect("d70bd3cf-4e38-46f3-91ca-fcbef29b148e").WhenInferringRoutingOn(dto); ----- - -==== Precedence of ConnectionSettings - -The routing property configured on `ConnectionSettings` always takes precedence. - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .RoutingProperty(p => p.OtherName) - ) -).Expect("y").WhenInferringRoutingOn(dto); - -class BadDTO - { -public JoinField SomeJoinField { get; set; } -public JoinField AnotherJoinField { get; set; } -public string ParentName { get; set; } - } ----- - -A class cannot contain more than one property of type JoinField, an exception is thrown in this case - -[source,csharp] ----- -var dto = new BadDTO -{ - SomeJoinField = JoinField.Link("8080"), - AnotherJoinField = JoinField.Link("8081"), - ParentName = "my-parent" -}; -Action resolve = () => Expect("8080").WhenInferringRoutingOn(dto); -resolve.Should().Throw().WithMessage("BadDTO has more than one JoinField property"); ----- - -unless you configure the ConnectionSettings to use an alternate property: - -[source,csharp] ----- -WithConnectionSettings(x => x - .DefaultMappingFor(m => m - .RoutingProperty(p => p.ParentName) - ) -).Expect("my-parent").WhenInferringRoutingOn(dto); ----- - diff --git a/docs/client-concepts/high-level/inference/types-and-relations-inference.asciidoc b/docs/client-concepts/high-level/inference/types-and-relations-inference.asciidoc deleted file mode 100644 index 28478fa7085..00000000000 --- a/docs/client-concepts/high-level/inference/types-and-relations-inference.asciidoc +++ /dev/null @@ -1,69 +0,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/ClientConcepts/HighLevel/Inference/TypesAndRelationsInference.doc.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! -//// - -[[types-and-relations-inference]] -=== Relation names inference - -[[relation-names]] -[float] -=== Relation names - -Prior to Elasticsearch 6.x you could have multiple types per index. They acted as a discrimatory column but were often -confused with tables. The fact that the mapping API's treated them as seperate entities did not help. - -The general guideline has always been to use a single type per index. Starting from 6.x this is also enforced. -Some features still need to store multiple types in a single index such as Parent/Child join relations. - -Both `Parent` and `Child` will need to have resolve to the same typename to be indexed into the same index. - -Therefore in 6.x we need a different type that translates a CLR type to a join relation. This can be configured seperately -using `.RelationName()` - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultMappingFor(m => m - .IndexName("projects-and-commits") - .RelationName("commits") - ) - .DefaultMappingFor(m => m - .IndexName("projects-and-commits") - .RelationName("projects") - ); - -var resolver = new RelationNameResolver(settings); -var relation = resolver.Resolve(); -relation.Should().Be("projects"); - -relation = resolver.Resolve(); -relation.Should().Be("commits"); ----- - -`RelationName` uses the `DefaultTypeNameInferrer` to translate CLR types to a string representation. - -Explicit `TypeName` configuration does not affect how the default relation for the CLR type -is represented though - -[source,csharp] ----- -var settings = new ConnectionSettings() - .DefaultMappingFor(m => m - .IndexName("projects-and-commits") - ); - -var resolver = new RelationNameResolver(settings); -var relation = resolver.Resolve(); -relation.Should().Be("project"); ----- - diff --git a/docs/client-concepts/high-level/mapping/attribute-mapping.asciidoc b/docs/client-concepts/high-level/mapping/attribute-mapping.asciidoc deleted file mode 100644 index cea9859da88..00000000000 --- a/docs/client-concepts/high-level/mapping/attribute-mapping.asciidoc +++ /dev/null @@ -1,139 +0,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/ClientConcepts/HighLevel/Mapping/AttributeMapping.doc.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! -//// - -[[attribute-mapping]] -=== Attribute mapping - -In <>, you saw that the type mapping for a POCO can be inferred from the -properties of the POCO, using `.AutoMap()`. But what do you do when you want to map differently -to the inferred mapping? This is where attribute mapping can help. - -It is possible to define your mappings using attributes on your POCO type and properties. With -attributes on properties and calling `.AutoMap()`, NEST will infer the mappings from the POCO property -types **and** take into account the mapping attributes. - -[IMPORTANT] --- -When you use attributes, you *must* also call `.AutoMap()` for the attributes to be applied. - --- - -Here we define an `Employee` type and use attributes to define the mappings. - -[source,csharp] ----- -[ElasticsearchType(RelationName = "employee")] -public class Employee -{ - [Text(Name = "first_name", Norms = false, Similarity = "LMDirichlet")] - public string FirstName { get; set; } - - [Text(Name = "last_name")] - public string LastName { get; set; } - - [Number(DocValues = false, IgnoreMalformed = true, Coerce = true)] - public int Salary { get; set; } - - [Date(Format = "MMddyyyy")] - public DateTime Birthday { get; set; } - - [Boolean(NullValue = false, Store = true)] - public bool IsManager { get; set; } - - [Nested] - [PropertyName("empl")] - public List Employees { get; set; } - - [Text(Name = "office_hours")] - public TimeSpan? OfficeHours { get; set; } - - [Object] - public List Skills { get; set; } -} - -public class Skill -{ - [Text] - public string Name { get; set; } - - [Number(NumberType.Byte, Name = "level")] - public int Proficiency { get; set; } -} ----- - -Then we map the types by calling `.AutoMap()` - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap()) -); ----- - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "birthday": { - "format": "MMddyyyy", - "type": "date" - }, - "empl": { - "properties": {}, - "type": "nested" - }, - "first_name": { - "type": "text", - "norms": false, - "similarity": "LMDirichlet" - }, - "isManager": { - "null_value": false, - "store": true, - "type": "boolean" - }, - "last_name": { - "type": "text" - }, - "office_hours": { - "type": "text" - }, - "salary": { - "coerce": true, - "doc_values": false, - "ignore_malformed": true, - "type": "float" - }, - "skills": { - "properties": { - "level": { - "type": "byte" - }, - "name": { - "type": "text" - } - }, - "type": "object" - } - } - } -} ----- - -Attribute mapping can be a convenient way to control how POCOs are mapped with minimal code, however -there are some mapping features that cannot be expressed with attributes, for example, <>. -In order to have the full power of mapping in NEST at your disposal, -take a look at <> next. - diff --git a/docs/client-concepts/high-level/mapping/auto-map.asciidoc b/docs/client-concepts/high-level/mapping/auto-map.asciidoc deleted file mode 100644 index aaad707399b..00000000000 --- a/docs/client-concepts/high-level/mapping/auto-map.asciidoc +++ /dev/null @@ -1,394 +0,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/ClientConcepts/HighLevel/Mapping/AutoMap.doc.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! -//// - -[[auto-map]] -=== Auto mapping - -When creating a mapping either when creating an index or through the Put Mapping API, -NEST offers a feature called auto mapping that can automagically infer the correct -Elasticsearch field datatypes from the CLR POCO property types you are mapping. - -We'll look at the features of auto mapping with a number of examples. For this, -we'll define two POCOs, `Company`, which has a name -and a collection of Employees, and `Employee` which has various properties of -different types, and itself has a collection of `Employee` types. - -[source,csharp] ----- -public abstract class Document -{ - public JoinField Join { get; set; } -} - -public class Company : Document -{ - public string Name { get; set; } - public List Employees { get; set; } -} - -public class Employee : Document -{ - public string LastName { get; set; } - public int Salary { get; set; } - public DateTime Birthday { get; set; } - public bool IsManager { get; set; } - public List Employees { get; set; } - public TimeSpan Hours { get; set; } -} ----- - -Auto mapping can take the pain out of having to define a manual mapping for all properties -on the POCO. In this case we want to index two subclasses into a single index. We call Map -for the base class and then call AutoMap foreach of the types we want it to implement - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() <1> - .AutoMap(typeof(Employee)) <2> - ) -); ----- -<1> Auto map `Company` using the generic method -<2> Auto map `Employee` using the non-generic method - -This produces the following JSON request - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "birthday": { - "type": "date" - }, - "employees": { - "properties": { - "birthday": { - "type": "date" - }, - "employees": { - "properties": {}, - "type": "object" - }, - "hours": { - "type": "long" - }, - "isManager": { - "type": "boolean" - }, - "join": { - "properties": {}, - "type": "object" - }, - "lastName": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "salary": { - "type": "integer" - } - }, - "type": "object" - }, - "hours": { - "type": "long" - }, - "isManager": { - "type": "boolean" - }, - "join": { - "properties": {}, - "type": "object" - }, - "lastName": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "name": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - }, - "salary": { - "type": "integer" - } - } - } -} ----- - -Observe that NEST has inferred the Elasticsearch types based on the CLR type of our POCO properties. -In this example, - -* Birthday is mapped as a `date`, - -* Hours is mapped as a `long` (`TimeSpan` ticks) - -* IsManager is mapped as a `boolean`, - -* Salary is mapped as an `integer` - -* Employees is mapped as an `object` - -and the remaining string properties as multi field `text` datatypes, each with a `keyword` datatype -sub field. - -[[inferred-dotnet-type-mapping]] -[float] -=== Inferred .NET type mapping - -NEST has inferred mapping support for the following .NET types - -[horizontal] -`String`:: - -maps to `"text"` with a `"keyword"` sub field. See <>. - -`Int32`:: - -maps to `"integer"` - -`UInt16`:: - -maps to `"integer"` - -`Int16`:: - -maps to `"short"` - -`Byte`:: - -maps to `"short"` - -`Int64`:: - -maps to `"long"` - -`UInt32`:: - -maps to `"long"` - -`TimeSpan`:: - -maps to `"long"` - -`Single`:: - -maps to `"float"` - -`Double`:: - -maps to `"double"` - -`Decimal`:: - -maps to `"double"` - -`UInt64`:: - -maps to `"double"` - -`DateTime`:: - -maps to `"date"` - -`DateTimeOffset`:: - -maps to `"date"` - -`Boolean`:: - -maps to `"boolean"` - -`Char`:: - -maps to `"keyword"` - -`Guid`:: - -maps to `"keyword"` - -and supports a number of special types defined in NEST - -[horizontal] -`Nest.QueryContainer`:: - -maps to `"percolator"` - -`Nest.GeoLocation`:: - -maps to `"geo_point"` - -`Nest.IGeoShape`:: - -maps to `"geo_shape"` (if you want to map to a `"shape"` type use explicit mapping or the [Shape] attribute on the property) - -`Nest.CompletionField`:: - -maps to `"completion"` - -`Nest.DateRange`:: - -maps to `"date_range"` - -`Nest.DoubleRange`:: - -maps to `"double_range"` - -`Nest.FloatRange`:: - -maps to `"float_range"` - -`Nest.IntegerRange`:: - -maps to `"integer_range"` - -`Nest.LongRange`:: - -maps to `"long_range"` - -`Nest.IpAddressRange`:: - -maps to `"ip_range"` - -All other types map to `"object"` by default. - -[IMPORTANT] --- -Some .NET types do not have direct equivalent Elasticsearch types. For example, `System.Decimal` is a type -commonly used to express currencies and other financial calculations that require large numbers of significant -integral and fractional digits and no round-off errors. There is no equivalent type in Elasticsearch, and the -nearest type is {ref_current}/number.html[double], a double-precision 64-bit IEEE 754 floating point. - -When a POCO has a `System.Decimal` property, it is automapped to the Elasticsearch `double` type. With the caveat -of a potential loss of precision, this is generally acceptable for a lot of use cases, but it can however cause -problems in _some_ edge cases. - -As the https://download.microsoft.com/download/3/8/8/388e7205-bc10-4226-b2a8-75351c669b09/csharp%20language%20specification.doc[C# Specification states], - -[quote, C# Specification section 6.2.1] -For a conversion from `decimal` to `float` or `double`, the `decimal` value is rounded to the nearest `double` or `float` value. -While this conversion may lose precision, it never causes an exception to be thrown. - -This conversion does cause an exception to be thrown at deserialization time for `Decimal.MinValue` and `Decimal.MaxValue` because, at -serialization time, the nearest `double` value that is converted to is outside of the bounds of `Decimal.MinValue` or `Decimal.MaxValue`, -respectively. In these cases, it is advisable to use `double` as the POCO property type. - --- - -[float] -=== Mapping Recursion - -If you notice in our previous `Company` and `Employee` example, the `Employee` type is recursive -in that the `Employee` class itself contains a collection of type `Employee`. By default, `.AutoMap()` will only -traverse a single depth when it encounters recursive instances like this; the collection of type `Employee` -on the `Employee` class did not get any of its properties mapped. - -This is done as a safe-guard to prevent stack overflows and all the fun that comes with -__infinite__ recursion. Additionally, in most cases, when it comes to Elasticsearch mappings, it is -often an edge case to have deeply nested mappings like this. However, you may still have -the need to do this, so you can control the recursion depth of `.AutoMap()`. - -Let's introduce a very simple class, `A`, which itself has a property -Child of type `A`. - -[source,csharp] ----- -public class A -{ - public A Child { get; set; } -} ----- - -By default, `.AutoMap()` only goes as far as depth 1 - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap()) -); ----- - -Thus we do not map properties on the second occurrence of our Child property - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "child": { - "properties": {}, - "type": "object" - } - } - } -} ----- - -Now let's specify a maxRecursion of `3` - -[source,csharp] ----- -createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap(3)) -); ----- - -`.AutoMap()` has now mapped three levels of our Child property - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "child": { - "type": "object", - "properties": { - "child": { - "type": "object", - "properties": { - "child": { - "type": "object", - "properties": { - "child": { - "type": "object", - "properties": {} - } - } - } - } - } - } - } - } - } -} ----- - diff --git a/docs/client-concepts/high-level/mapping/fluent-mapping.asciidoc b/docs/client-concepts/high-level/mapping/fluent-mapping.asciidoc deleted file mode 100644 index a0eed7d72ec..00000000000 --- a/docs/client-concepts/high-level/mapping/fluent-mapping.asciidoc +++ /dev/null @@ -1,463 +0,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/ClientConcepts/HighLevel/Mapping/FluentMapping.doc.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! -//// - -[[fluent-mapping]] -=== Fluent mapping - -Fluent mapping POCO properties to fields within an Elasticsearch type mapping -offers the most control over the process. With fluent mapping, each property of -the POCO is explicitly mapped to an Elasticsearch type field mapping. - -To demonstrate, we'll define two POCOs - -* `Company`, which has a name and a collection of Employees - -* `Employee` which has various properties of different types and has itself a collection of `Employee` types. - -[source,csharp] ----- -public class Company -{ - public string Name { get; set; } - public List Employees { get; set; } -} - -public class Employee -{ - public string FirstName { get; set; } - public string LastName { get; set; } - public int Salary { get; set; } - public DateTime Birthday { get; set; } - public bool IsManager { get; set; } - public List Employees { get; set; } - public TimeSpan Hours { get; set; } -} ----- - -==== Manual mapping - -To create a mapping for our Company type, we can use the fluent API -and map each property explicitly - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .Properties(ps => ps - .Text(s => s - .Name(n => n.Name) - ) - .Object(o => o - .Name(n => n.Employees) - .Properties(eps => eps - .Text(s => s - .Name(e => e.FirstName) - ) - .Text(s => s - .Name(e => e.LastName) - ) - .Number(n => n - .Name(e => e.Salary) - .Type(NumberType.Integer) - ) - ) - ) - ) - ) -); ----- - -Here, the Name property of the `Company` type has been mapped as a {ref_current}/text.html[text datatype] and -the `Employees` property mapped as an {ref_current}/object.html[object datatype]. Within this object mapping, -only the `FirstName`, `LastName` and `Salary` properties of the `Employee` type have been mapped. - -The json mapping for this example looks like - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "name": { - "type": "text" - }, - "employees": { - "type": "object", - "properties": { - "firstName": { - "type": "text" - }, - "lastName": { - "type": "text" - }, - "salary": { - "type": "integer" - } - } - } - } - } -} ----- - -Manual mapping in this way is powerful but can become verbose and unwieldy for -large POCOs. The majority of the time you simply want to map *all* the properties of a POCO in a single go -without having to specify the mapping for each property, -particularly when there is <> from CLR types to Elasticsearch types. - -This is where the fluent mapping in conjunction with auto mapping comes in. - -[[auto-map-with-overrides]] -==== Auto mapping with fluent overrides - -In most cases, you'll want to map more than just the vanilla datatypes and also provide -various options for your properties, such as the analyzer to use, whether to enable `doc_values`, etc. - -In this case, it's possible to use `.AutoMap()` in conjunction with explicitly mapped properties. - -Here we are using `.AutoMap()` to automatically infer the mapping of our `Company` type from the -CLR property types, but then we're overriding the `Employees` property to make it a -{ref_current}/nested.html[nested datatype], since by default `.AutoMap()` will infer the -`List` property as an `object` datatype - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() - .Properties(ps => ps - .Nested(n => n - .Name(nn => nn.Employees) - ) - ) - ) -); ----- - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "employees": { - "type": "nested" - } - } - } -} ----- - -`.AutoMap()` __ __**is idempotent** therefore calling it _before_ or _after_ -manually mapped properties will still yield the same result. The next example -generates the same mapping as the previous - -[source,csharp] ----- -createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .Properties(ps => ps - .Nested(n => n - .Name(nn => nn.Employees) - ) - ) - .AutoMap() - ) -); ----- - -==== Auto mapping overrides down the object graph - -Just as we were able to override the inferred properties from auto mapping in the previous example, -fluent mapping also takes precedence over <>. -In this way, fluent, attribute and auto mapping can be combined. We'll demonstrate with an example. - -Consider the following two POCOS - -[source,csharp] ----- -[ElasticsearchType(RelationName = "company")] -public class CompanyWithAttributes -{ - [Keyword(NullValue = "null", Similarity = "BM25")] - public string Name { get; set; } - - [Text(Name = "office_hours")] - public TimeSpan? HeadOfficeHours { get; set; } - - [Object(Store = false)] - public List Employees { get; set; } -} - -[ElasticsearchType(RelationName = "employee")] -public class EmployeeWithAttributes -{ - [Text(Name = "first_name")] - public string FirstName { get; set; } - - [Text(Name = "last_name")] - public string LastName { get; set; } - - [Number(DocValues = false, IgnoreMalformed = true, Coerce = true)] - public int Salary { get; set; } - - [Date(Format = "MMddyyyy")] - public DateTime Birthday { get; set; } - - [Boolean(NullValue = false, Store = true)] - public bool IsManager { get; set; } - - [Nested] - [PropertyName("empl")] - public List Employees { get; set; } -} ----- - -Now when mapping, `AutoMap()` is called to infer the mapping from the POCO property types and -attributes, and inferred mappings are overridden with fluent mapping - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() <1> - .Properties(ps => ps <2> - .Nested(n => n - .Name(nn => nn.Employees) - .AutoMap() <3> - .Properties(pps => pps <4> - .Text(s => s - .Name(e => e.FirstName) - .Fields(fs => fs - .Keyword(ss => ss - .Name("firstNameRaw") - ) - .TokenCount(t => t - .Name("length") - .Analyzer("standard") - ) - ) - ) - .Number(nu => nu - .Name(e => e.Salary) - .Type(NumberType.Double) - .IgnoreMalformed(false) - ) - .Date(d => d - .Name(e => e.Birthday) - .Format("MM-dd-yy") - ) - ) - ) - ) - ) -); ----- -<1> Automap company -<2> Override company inferred mappings -<3> Automap nested employee type -<4> Override employee inferred mappings - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "employees": { - "type": "nested", - "properties": { - "birthday": { - "format": "MM-dd-yy", - "type": "date" - }, - "empl": { - "properties": { - "birthday": { - "type": "date" - }, - "employees": { - "properties": {}, - "type": "object" - }, - "firstName": { - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - }, - "type": "text" - }, - "hours": { - "type": "long" - }, - "isManager": { - "type": "boolean" - }, - "lastName": { - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - }, - "type": "text" - }, - "salary": { - "type": "integer" - } - }, - "type": "nested" - }, - "first_name": { - "fields": { - "firstNameRaw": { - "type": "keyword" - }, - "length": { - "analyzer": "standard", - "type": "token_count" - } - }, - "type": "text" - }, - "isManager": { - "null_value": false, - "store": true, - "type": "boolean" - }, - "last_name": { - "type": "text" - }, - "salary": { - "ignore_malformed": false, - "type": "double" - } - } - }, - "name": { - "null_value": "null", - "similarity": "BM25", - "type": "keyword" - }, - "office_hours": { - "type": "text" - } - } - } -} ----- - -As demonstrated, by calling `.AutoMap()` inside of the `.Nested` mapping, it is possible to auto map the -`Employee` nested properties and again, override any inferred mapping from the automapping process, -through manual mapping - -[[mapping-runtime-fields]] -==== Mapping runtime fields - -A {ref_current}/runtime.html[runtime field] is a field that is evaluated at query time. Runtime fields may -be defined in the mapping of an index. - -In this example, we'll define a `CompanyRuntimeFields` class with a single property which we may then use in -the strongly-typed runtime field mapping. - -[source,csharp] ----- -public class CompanyRuntimeFields -{ - public string BirthDayOfWeek { get; set; } -} - -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .RuntimeFields(rtf => rtf <1> - .RuntimeField(f => f.BirthDayOfWeek, FieldType.Keyword, f => f.Script("emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"))) <2> - ) - ); ----- -<1> Use the `CompanyRuntimeFields` class as the generic argument -<2> Use the `BirthDayOfWeek` property as the runtime field name - -[source,javascript] ----- -{ - "mappings": { - "runtime": { - "birthDayOfWeek": { - "type": "keyword", - "script": { - "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))" - } - } - } - } -} ----- - -It's not necessary to define a type for the runtime field mapping. Runtime fields can optionally be defined -by providing a `string` name. - -[source,csharp] ----- -createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .RuntimeFields(rtf => rtf - .RuntimeField("birthDayOfWeek", FieldType.Keyword, f => f.Script("emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT))"))) - ) -); ----- - -One may also include and use parameters in the script. - -[source,csharp] ----- -createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .RuntimeFields(rtf => rtf - .RuntimeField("birthDayOfWeek", FieldType.Keyword, f => f - .Script(s => s - .Source("emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT) + params.suffix)") - .Params(p => p.Add("suffix", " with a suffix.")) - ))) - ) -); ----- - -[source,javascript] ----- -{ - "mappings": { - "runtime": { - "birthDayOfWeek": { - "type": "keyword", - "script": { - "source": "emit(doc['@timestamp'].value.dayOfWeekEnum.getDisplayName(TextStyle.FULL, Locale.ROOT) + params.suffix)", - "params": { - "suffix": " with a suffix." - } - } - } - } - } -} ----- - diff --git a/docs/client-concepts/high-level/mapping/ignoring-properties.asciidoc b/docs/client-concepts/high-level/mapping/ignoring-properties.asciidoc deleted file mode 100644 index c2831a0caf0..00000000000 --- a/docs/client-concepts/high-level/mapping/ignoring-properties.asciidoc +++ /dev/null @@ -1,207 +0,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/ClientConcepts/HighLevel/Mapping/IgnoringProperties.doc.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! -//// - -[[ignoring-properties]] -=== Ignoring properties - -Properties on a POCO can be ignored for mapping purposes in a few ways: - -* Using the `Ignore` property on a derived `ElasticsearchPropertyAttributeBase` type, such as `TextAttribute`, applied to -the property that should be ignored on the POCO - -* Using the `Ignore` property on `PropertyNameAttribute` applied to a property that should be ignored on the POCO - -* Using the `.DefaultMappingFor(Func, IClrTypeMapping> -selector)` on `ConnectionSettings` - -* Using an ignore attribute applied to the POCO property that is understood by -the `IElasticsearchSerializer` used, and inspected inside of the `CreatePropertyMapping()` on -the serializer. Using the builtin `SourceSerializer` this would be the `IgnoreProperty` - -This example demonstrates all ways, using the `Ignore` property on the attribute to ignore the property -`PropertyToIgnore`, the infer mapping to ignore the property `AnotherPropertyToIgnore` and the -json serializer specific attribute to ignore the property either `IgnoreProperty` or `JsonIgnoredProperty` depending on which -`SourceSerializer` we configured. - -[source,csharp] ----- -[ElasticsearchType(RelationName = "company")] -public class CompanyWithAttributesAndPropertiesToIgnore -{ - public string Name { get; set; } - - [Text(Ignore = true)] - public string PropertyToIgnore { get; set; } - - [PropertyName("anotherPropertyToIgnore", Ignore = true)] - public string AnotherPropertyToIgnore { get; set; } - - public string FluentMappingPropertyToIgnore { get; set; } - - [Ignore, JsonIgnore] - public string JsonIgnoredProperty { get; set; } -} ----- - -All of the properties except `Name` have been ignored in the mapping - -[source,csharp] ----- -var connectionSettings = new ConnectionSettings(new InMemoryConnection()) <1> - .DisableDirectStreaming() <2> - .DefaultMappingFor(m => m - .Ignore(p => p.FluentMappingPropertyToIgnore) - ); - -var client = new ElasticClient(connectionSettings); - -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() - ) -); ----- -<1> we're using an in-memory connection, but in your application, you'll want to use an `IConnection` that actually sends a request. -<2> we disable direct streaming here to capture the request and response bytes. In a production application, you would likely not call this as it adds overhead to each call. - -The JSON output for the mapping does not contain the ignored properties - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - } -} ----- - -==== Ignoring inherited properties - -By using the `DefaultMappingFor()` configuration for a POCO on the `ConnectionSettings`, it is possible to -ignore inherited properties too - -[source,csharp] ----- -public class Parent -{ - public int Id { get; set; } - public string Description { get; set; } - public string IgnoreMe { get; set; } -} - -public class Child : Parent { } - -var connectionSettings = new ConnectionSettings(new InMemoryConnection()) - .DisableDirectStreaming() - .DefaultMappingFor(m => m - .PropertyName(p => p.Description, "desc") - .Ignore(p => p.IgnoreMe) - ); - -var client = new ElasticClient(connectionSettings); - -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() - ) - ); ----- - -The property `IgnoreMe` has been ignored for the child mapping - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "id": { - "type": "integer" - }, - "desc": { - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - }, - "type": "text" - } - } - } -} ----- - -==== Overriding inherited properties - -`DefaultMappingFor()` configuration for a POCO on the `ConnectionSettings` can also be -used to override inherited properties. - -In the following example, the `Id` property is shadowed in `ParentWithStringId` as -a `string` type, resulting in NEST's automapping inferring the mapping as the default -`text` with `keyword` multi-field field datatype mapping for a `string` type. - -[source,csharp] ----- -public class ParentWithStringId : Parent -{ - public new string Id { get; set; } -} - -var connectionSettings = new ConnectionSettings(new InMemoryConnection()) <1> - .DisableDirectStreaming() <2> - .DefaultMappingFor(m => m - .Ignore(p => p.Description) - .Ignore(p => p.IgnoreMe) - ); - -var client = new ElasticClient(connectionSettings); - -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() - ) - ); ----- -<1> we're using an _in memory_ connection for this example. In your production application though, you'll want to use an `IConnection` that actually sends a request. -<2> we disable direct streaming here to capture the request and response bytes. In your production application however, you'll likely not want to do this, since it causes the request and response bytes to be buffered in memory. - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "id": { - "type": "text", - "fields": { - "keyword": { - "ignore_above": 256, - "type": "keyword" - } - } - } - } - } -} ----- - diff --git a/docs/client-concepts/high-level/mapping/multi-fields.asciidoc b/docs/client-concepts/high-level/mapping/multi-fields.asciidoc deleted file mode 100644 index ef8349e4c98..00000000000 --- a/docs/client-concepts/high-level/mapping/multi-fields.asciidoc +++ /dev/null @@ -1,189 +0,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/ClientConcepts/HighLevel/Mapping/MultiFields.doc.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! -//// - -[[multi-fields]] -=== Multi fields - -It is often useful to index the same field in Elasticsearch in different ways, to -serve different purposes, for example, mapping a POCO `string` property as a -`text` datatype for full text search as well as mapping as a `keyword` datatype for -structured search, sorting and aggregations. Another example is mapping a POCO `string` -property to use different analyzers, to serve different full text search needs. - -Let's look at a few examples. for each, we use the following simple POCO - -[source,csharp] ----- -public class Person -{ - public string Name { get; set; } -} ----- - -==== Default mapping for String properties - -When using <>, the inferred mapping for a `string` -POCO type is a `text` datatype with multi fields including a `keyword` sub field - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .AutoMap() - ) -); ----- - -This results in the following JSON request - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "name": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - } -} ----- - -This is useful because the property can be used for both full text search -as well as for structured search, sorting and aggregations - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .Match(m => m - .Field(f => f.Name) - .Query("Russ") - ) - ) - .Sort(ss => ss - .Descending(f => f.Name.Suffix("keyword")) <1> - ) - .Aggregations(a => a - .Terms("peoples_names", t => t - .Field(f => f.Name.Suffix("keyword")) - ) - ) -); ----- -<1> Use the keyword subfield on `Name` - -[source,javascript] ----- -{ - "query": { - "match": { - "name": { - "query": "Russ" - } - } - }, - "sort": [ - { - "name.keyword": { - "order": "desc" - } - } - ], - "aggs": { - "peoples_names": { - "terms": { - "field": "name.keyword" - } - } - } -} ----- - -[NOTE] --- -Multi fields do not change the original `_source` field in Elasticsearch; they affect only how -a field is indexed. - -New multi fields can be added to existing fields using the Put Mapping API. - --- - -==== Creating Multi fields - -Multi fields can be created on a mapping using the `.Fields()` method within a field mapping - -[source,csharp] ----- -var createIndexResponse = _client.Indices.Create("myindex", c => c - .Map(m => m - .Properties(p => p - .Text(t => t - .Name(n => n.Name) - .Fields(ff => ff - .Text(tt => tt - .Name("stop") <1> - .Analyzer("stop") - ) - .Text(tt => tt - .Name("shingles") - .Analyzer("name_shingles") <2> - ) - .Keyword(k => k - .Name("keyword") <3> - .IgnoreAbove(256) - ) - ) - ) - ) - ) -); ----- -<1> Use the stop analyzer on this sub field -<2> Use a custom analyzer named "named_shingles" that is configured in the index -<3> Index as not analyzed - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "name": { - "type": "text", - "fields": { - "stop": { - "type": "text", - "analyzer": "stop" - }, - "shingles": { - "type": "text", - "analyzer": "name_shingles" - }, - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - } - } - } -} ----- - diff --git a/docs/client-concepts/high-level/mapping/parent-child-relationships.asciidoc b/docs/client-concepts/high-level/mapping/parent-child-relationships.asciidoc deleted file mode 100644 index e70e691485b..00000000000 --- a/docs/client-concepts/high-level/mapping/parent-child-relationships.asciidoc +++ /dev/null @@ -1,312 +0,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/ClientConcepts/HighLevel/Mapping/ParentChildRelationships.doc.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! -//// - -[[parent-child-relationships]] -=== Parent/Child relationships - -Prior to Elasticsearch 6.x you could have multiple types in a single index. Through the special `_parent` field mapping of a given type, -one could create 1 to N relationships of parent => children documents. This worked because when indexing children, you passed a -`_parent` id which acted as the routing key, ensuring a parent, its children and any ancestors all lived on the same shard. - -Starting with 6.x indices, multiple types are no longer supported in a single index. One reason for this is that if for instance -two types have the same `name` property, this property needed to be mapped exactly the same for both types, but all the APIs act as if you can map -them individually, often causing confusion. Essentially, `_type` always acted as a discriminating field within an index but was often explained -as being more special than this. - -So how do you create a parent join, now that indices no longer allow you store different types in the same index and therefor also -not on the same shard? - -==== Parent And Child example - -In the following contrived example we create two .NET types called `MyParent` and `MyChild` both extending from `MyDocument`. -There is no requirement that the parent and child .NET types are related at all. The types could be plain POCO's or `MyChild` -could be a subclass of `MyParent`. The only requirement is that they have **a** property where the property type is `JoinField`. - -As per Elasticsearch's constraints you should only have **a single** property of type JoinField on your POCO. - -[source,csharp] ----- -public abstract class MyDocument -{ - public int Id { get; set; } - public JoinField MyJoinField { get; set; } -} - -public class MyParent : MyDocument -{ - [Text] - public string ParentProperty { get; set; } -} - -public class MyChild : MyDocument -{ - [Text] - public string ChildProperty { get; set; } -} ----- - -==== Parent And Child mapping - -In the following example we setup our client and give our types prefered index and type names. Starting with NEST 6.x we can -also give a type a preferred `RelationName` as can be seen on the `DefaultMappingFor`. - -Also note that we give `MyChild` and `MyParent` the same default `doc` type name to make sure they end up in the same index -under the same type. - -[source,csharp] ----- -var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = new ConnectionSettings(connectionPool, new InMemoryConnection()) <1> - .DefaultMappingFor(m => m.IndexName("index")) - .DefaultMappingFor(m => m.IndexName("index")) - .DefaultMappingFor(m => m.IndexName("index").RelationName("parent")); - -var client = new ElasticClient(connectionSettings); ----- -<1> for the purposes of this example, an in memory connection is used which doesn't actually send a request. In your application, you'd use the default connection or your own implementation that actually sends a request. - -With the `ConnectionSettings` set up, we can proceed to map `MyParent` and `MyChild` as part of the create index request. - -[source,csharp] ----- -var createIndexResponse = client.Indices.Create("index", c => c - .Index() - .Map(m => m - .RoutingField(r => r.Required()) <1> - .AutoMap() <2> - .AutoMap() <3> - .Properties(props => props - .Join(j => j <4> - .Name(p => p.MyJoinField) - .Relations(r => r - .Join() - ) - ) - ) - ) -); ----- -<1> recommended to make the routing field mandatory so you can not accidentally forget -<2> Map all of the `MyParent` properties -<3> Map all of the `MyChild` properties -<4> Additionally map the `JoinField` since it is not automatically mapped by `AutoMap()` - -We call `AutoMap()` for both types to discover properties of both .NET types. `AutoMap()` won't automatically setup the -join field mapping though because NEST can not infer all the `Relations` that are required by your domain. - -In this case we setup `MyChild` to be child of `MyParent`. `.Join()` has many overloads so be sure to check them out if you -need to map not one but multiple children. - -[source,javascript] ----- -{ - "mappings": { - "_routing": { - "required": true - }, - "properties": { - "parentProperty": { - "type": "text" - }, - "childProperty": { - "type": "text" - }, - "id": { - "type": "integer" - }, - "myJoinField": { - "type": "join", - "relations": { - "parent": "mychild" - } - } - } - } -} ----- - -Note how `MyParent`'s relation name is `parent` because of the mapping on connection settings. This also comes in handy -later when doing strongly typed `has_child` and `has_parent` queries. - -==== Indexing parents or children - -Now that we have our join field mapping set up on the index, we can proceed to index parent and child documents. - -To mark a document with the relation name of the parent `MyParent` all of the following three ways are equivalent. - -In the first we explicitly call `JoinField.Root` to mark this document as the root of a parent child relationship namely -that of `MyParent`. In the following examples we rely on implicit conversion from `string` and `Type` to do the same. - -[source,csharp] ----- -var parentDocument = new MyParent -{ - Id = 1, - ParentProperty = "a parent prop", - MyJoinField = JoinField.Root() -}; - -parentDocument = new MyParent -{ - Id = 1, - ParentProperty = "a parent prop", - MyJoinField = typeof(MyParent) <1> -}; - -parentDocument = new MyParent -{ - Id = 1, - ParentProperty = "a parent prop", - MyJoinField = "myparent" <2> -}; -var indexParent = client.IndexDocument(parentDocument); ----- -<1> this lets the join data type know this is a root document of type `myparent` -<2> this lets the join data type know this is a root document of type `myparent` - -[source,javascript] ----- -{ - "id": 1, - "parentProperty": "a parent prop", - "myJoinField": "myparent" -} ----- - -Linking the child document to its parent follows a similar pattern. -Here we create a link by inferring the id from our parent instance `parentDocument` - -[source,csharp] ----- -var indexChild = client.IndexDocument(new MyChild -{ - MyJoinField = JoinField.Link(parentDocument) -}); ----- - -or here we are simply stating this document is of type `mychild` and should be linked -to parent id 1 from `parentDocument`. - -[source,csharp] ----- -indexChild = client.IndexDocument(new MyChild -{ - Id = 2, - MyJoinField = JoinField.Link(1) -}); ----- - -[source,javascript] ----- -{ - "id": 2, - "myJoinField": { - "name": "mychild", - "parent": "1" - } -} ----- - -The mapping already links `myparent` as the parent type so we only need supply the parent id. -In fact there are many ways to create join field: - -[source,csharp] ----- -Expect("myparent").WhenSerializing(JoinField.Root(typeof(MyParent))); -Expect("myparent").WhenSerializing(JoinField.Root(Relation())); -Expect("myparent").WhenSerializing(JoinField.Root()); -Expect("myparent").WhenSerializing(JoinField.Root("myparent")); - -var childLink = new { name = "mychild", parent = "1" }; -Expect(childLink).WhenSerializing(JoinField.Link(1)); -Expect(childLink).WhenSerializing(JoinField.Link(parentDocument)); -Expect(childLink).WhenSerializing(JoinField.Link("mychild", 1)); -Expect(childLink).WhenSerializing(JoinField.Link(typeof(MyChild), 1)); ----- - -==== Routing parent child documents - -A parent and all of it's (grand)children still need to live on the same shard so you still need to take care of specifying routing. - -In the past you would have to provide the parent id on the request using `parent=` this was always an alias for routing -and thus in Elasticsearch 6.x you need to provide `routing=` instead. - -NEST has a handy helper to infer the correct routing value given a document that is smart enough to find the join field and infer -correct parent. - -[source,csharp] ----- -var infer = client.Infer; -var parent = new MyParent {Id = 1337, MyJoinField = JoinField.Root()}; -infer.Routing(parent).Should().Be("1337"); - -var child = new MyChild {Id = 1338, MyJoinField = JoinField.Link(parentId: "1337")}; -infer.Routing(child).Should().Be("1337"); - -child = new MyChild {Id = 1339, MyJoinField = JoinField.Link(parent)}; -infer.Routing(child).Should().Be("1337"); ----- - -here we index `parent` and rather than fishing out the parent id by inspecting `parent` we just pass the instance -to `Routing` which can infer the correct routing key based on the JoinField property on the instance - -[source,csharp] ----- -var indexResponse = client.Index(parent, i => i.Routing(Routing.From(parent))); -indexResponse.ApiCall.Uri.Query.Should().Contain("routing=1337"); ----- - -The same goes for when we index a child, we can pass the instance directly to `Routing` and NEST will use the parent id -already specified on `child`. Here we use the static import `using static Nest.Infer` and it's `Route()` static method to -create an instance of `Routing` - -[source,csharp] ----- -indexResponse = client.Index(child, i => i.Routing(Route(child))); -indexResponse.ApiCall.Uri.Query.Should().Contain("routing=1337"); ----- - -You can always override the default inferred routing though - -[source,csharp] ----- -indexResponse = client.Index(child, i => i.Routing("explicit")); -indexResponse.ApiCall.Uri.Query.Should().Contain("routing=explicit"); - -indexResponse = client.Index(child, i => i.Routing(null)); -indexResponse.ApiCall.Uri.Query.Should().NotContain("routing"); - -var indexRequest = new IndexRequest(child) { Routing = Route(child) } ; -indexResponse = client.Index(indexRequest); -indexResponse.ApiCall.Uri.Query.Should().Contain("routing=1337"); ----- - -Its important to note that the routing is resolved at request time, not instantiation time -here we update the `child`'s `JoinField` after already creating the index request for `child` - -[source,csharp] ----- -child.MyJoinField = JoinField.Link(parentId: "something-else"); -indexResponse = client.Index(indexRequest); -indexResponse.ApiCall.Uri.Query.Should().Contain("routing=something-else"); ----- - -[NOTE] --- -If you use multiple levels of parent and child relations e.g `A => B => C`, when you index `C`, you -need to provide the id of `A` as the routing key *but* the id of `B` to set up the relation on the join field. -In this case, NEST `JoinRouting` helper is unable to resolve to the id of `A` and will return the id of `B`. - --- - diff --git a/docs/client-concepts/high-level/mapping/visitor-pattern-mapping.asciidoc b/docs/client-concepts/high-level/mapping/visitor-pattern-mapping.asciidoc deleted file mode 100644 index a26dc2004c6..00000000000 --- a/docs/client-concepts/high-level/mapping/visitor-pattern-mapping.asciidoc +++ /dev/null @@ -1,218 +0,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/ClientConcepts/HighLevel/Mapping/VisitorPatternMapping.doc.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! -//// - -[[visitor-pattern-mapping]] -=== Applying conventions through the Visitor pattern - -It is also possible to apply a transformation on all or specific properties. - -`.AutoMap()` internally implements the https://en.wikipedia.org/wiki/Visitor_pattern[visitor pattern]. -The default visitor, `NoopPropertyVisitor`, does nothing and acts as a blank canvas for you -to implement your own visiting methods. - -For instance, let's create a custom visitor that disables doc values for numeric and boolean types - -__This is not really a good idea in practice, but let's do it anyway for the sake of a clear example.__ - -Using the following POCO - -[source,csharp] ----- -public class Employee -{ - public string FirstName { get; set; } - public string LastName { get; set; } - public int Salary { get; set; } - public DateTime Birthday { get; set; } - public bool IsManager { get; set; } - public List Employees { get; set; } - public TimeSpan Hours { get; set; } -} ----- - -We first define a visitor; it's easiest to inherit from `NoopPropertyVisitor` and override -the `Visit` methods to implement your conventions - -[source,csharp] ----- -public class DisableDocValuesPropertyVisitor : NoopPropertyVisitor -{ - public override void Visit( - INumberProperty type, - PropertyInfo propertyInfo, - ElasticsearchPropertyAttributeBase attribute) <1> - { - type.DocValues = false; - } - - public override void Visit( - IBooleanProperty type, - PropertyInfo propertyInfo, - ElasticsearchPropertyAttributeBase attribute) <2> - { - type.DocValues = false; - } -} ----- -<1> Override the `Visit` method on `INumberProperty` and set `DocValues = false` -<2> Similarily, override the `Visit` method on `IBooleanProperty` and set `DocValues = false` - -Now we can pass an instance of our custom visitor to `.AutoMap()` - -[source,csharp] ----- -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap(new DisableDocValuesPropertyVisitor())) -); ----- - -and any time the client maps a property of the POCO (Employee in this example) as a number (INumberProperty) or boolean (IBooleanProperty), -it will apply the transformation defined in each `Visit()` call respectively, which in this example -disables {ref_current}/doc-values.html[doc_values]. - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "birthday": { - "type": "date" - }, - "employees": { - "properties": {}, - "type": "object" - }, - "firstName": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "isManager": { - "doc_values": false, - "type": "boolean" - }, - "lastName": { - "type": "text", - "fields": { - "keyword": { - "type": "keyword", - "ignore_above": 256 - } - } - }, - "salary": { - "doc_values": false, - "type": "integer" - }, - "hours": { - "doc_values": false, - "type": "long" - } - } - } -} ----- - -==== Visiting on PropertyInfo - -You can even take the visitor approach a step further, and instead of visiting on `IProperty` types, visit -directly on your POCO reflected `PropertyInfo` properties. - -As an example, let's create a visitor that maps all CLR types to an Elasticsearch text datatype (`ITextProperty`). - -[source,csharp] ----- -public class EverythingIsATextPropertyVisitor : NoopPropertyVisitor -{ - public override IProperty Visit(PropertyInfo propertyInfo, ElasticsearchPropertyAttributeBase attribute) => new TextProperty(); -} - -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap(new EverythingIsATextPropertyVisitor())) - ); ----- - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "birthday": { - "type": "text" - }, - "employees": { - "type": "text" - }, - "firstName": { - "type": "text" - }, - "isManager": { - "type": "text" - }, - "lastName": { - "type": "text" - }, - "salary": { - "type": "text" - }, - "hours": { - "type": "text" - } - } - } -} ----- - -==== Skip properties - -Through implementing `SkipProperty` on the visitor, you can prevent certain properties from being mapped. - -In this example, we skip the inherited properties of the type from which `DictionaryDocument` is derived - -[source,csharp] ----- -public class DictionaryDocument : SortedDictionary -{ - public int Id { get; set; } -} - -public class IgnoreInheritedPropertiesVisitor : NoopPropertyVisitor -{ - public override bool SkipProperty(PropertyInfo propertyInfo, ElasticsearchPropertyAttributeBase attribute) - { - return propertyInfo?.DeclaringType != typeof(T); - } -} - -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m.AutoMap(new IgnoreInheritedPropertiesVisitor())) - ); ----- - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "id": { - "type": "integer" - } - } - } -} ----- - diff --git a/docs/client-concepts/high-level/serialization/custom-serialization.asciidoc b/docs/client-concepts/high-level/serialization/custom-serialization.asciidoc deleted file mode 100644 index f28cfc0c7d0..00000000000 --- a/docs/client-concepts/high-level/serialization/custom-serialization.asciidoc +++ /dev/null @@ -1,371 +0,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/ClientConcepts/HighLevel/Serialization/CustomSerialization.doc.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! -//// - -[[custom-serialization]] -=== Custom Serialization - -After internalizing the serialization routines, and IL-merging the Newtonsoft.Json package in 6.x, we are pleased to -announce that the next stage of serialization improvements have been completed in 7.0. - -Both SimpleJson and Newtonsoft.Json have been completely removed and replaced with an implementation of Utf8Json, a fast -serializer that works directly with UTF-8 binary. - -With the move to Utf8Json, we have removed some features that were available in the previous JSON libraries that have -proven too onerous to carry forward at this stage. - -* JSON in the request is never indented, even if SerializationFormatting.Indented is specified. The serialization -routines generated by Utf8Json never generate an IJsonFormatter that will indent JSON, for performance reasons. -We are considering options for exposing indented JSON for development and debugging purposes. - -* NEST types cannot be extended by inheritance. With NEST 6.x, additional properties can be included for a type by deriving from -that type and annotating these new properties. With the current implementation of serialization with Utf8Json, this approach will not work. - -* Serializer uses Reflection.Emit. Utf8Json uses Reflection.Emit to generate efficient formatters for serializing types that it sees. -Reflection.Emit is not supported on all platforms, for example, UWP, Xamarin.iOS, and Xamarin.Android. - -* Elasticsearch.Net.DynamicResponse deserializes JSON arrays to List. SimpleJson deserialized JSON arrays to object[], -but Utf8Json deserializes them to List. This change is preferred for allocation and performance reasons. - -* Utf8Json is much stricter when deserializing JSON object field names to C# POCO properties. With the internal Json.NET serializer -in 6.x, JSON object field names would attempt to be matched with C# POCO property names first by an exact match, falling back to a -case insensitive match. With Utf8Json in 7.x however, JSON object field names must match exactly the name configured for the -C# POCO property name. - -[float] -==== Injecting a new serializer - -You can inject a serializer that is isolated to only be called for the (de)serialization of `_source`, `_fields`, or -wherever a user provided value is expected to be written and returned. - -Within NEST, we refer to this serializer as the `SourceSerializer`. - -Another serializer also exists within NEST known as the `RequestResponseSerializer`. This serializer is internal -and is responsible for serializing the request and response types that are part of NEST. - -If `SourceSerializer` is left unconfigured, the internal `RequestResponseSerializer` is the `SourceSerializer` as well. - -Implementing `IElasticsearchSerializer` is technically enough to inject your own `SourceSerializer` - -[source,csharp] ----- -public class VanillaSerializer : ITransportSerializer -{ - public T Deserialize(Stream stream) => throw new NotImplementedException(); - - public object Deserialize(Type type, Stream stream) => throw new NotImplementedException(); - - public Task DeserializeAsync(Stream stream, CancellationToken cancellationToken = default(CancellationToken)) => - throw new NotImplementedException(); - - public Task DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default(CancellationToken)) => - throw new NotImplementedException(); - - public void Serialize(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented) => - throw new NotImplementedException(); - - public Task SerializeAsync(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.Indented, - CancellationToken cancellationToken = default(CancellationToken)) => - throw new NotImplementedException(); -} ----- - -Hooking up the serializer is performed in the `ConnectionSettings` constructor - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = new ConnectionSettings( - pool, - sourceSerializer: (builtin, settings) => new VanillaSerializer()); <1> -var client = new ElasticClient(connectionSettings); ----- -<1> what the Func? - -If implementing `IElasticsearchSerializer` is enough, why do we need to provide an instance wrapped in a factory `Func`? - -There are various cases where you might have a POCO type that contains a NEST type as one of its properties. For example, -consider if you want to use percolation; you need to store Elasticsearch queries as part of the `_source` of your document, -which means you need to have a POCO that looks something like this - -[source,csharp] ----- -public class MyPercolationDocument -{ - public QueryContainer Query { get; set; } - public string Category { get; set; } -} ----- - -A custom serializer would not know how to serialize `QueryContainer` or other NEST types that could appear as part of -the `_source` of a document, therefore a custom serializer needs to have a way to delegate serialization of NEST types -back to NEST's built-in serializer. - -==== JsonNetSerializer - -We ship a separate {nuget}/NEST.JsonNetSerializer[NEST.JsonNetSerializer] package that helps in composing a custom `SourceSerializer` -using `Json.NET`, that is smart enough to delegate the serialization of known NEST types back to the built-in -`RequestResponseSerializer`. This package is also useful if - -. You want to control how your documents and values are stored and retrieved from Elasticsearch using `Json.NET` - -. You want to use `Newtonsoft.Json.Linq` types such as `JObject` within your documents - -The easiest way to hook this custom source serializer up is as follows - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = - new ConnectionSettings(pool, sourceSerializer: JsonNetSerializer.Default); -var client = new ElasticClient(connectionSettings); ----- - -`JsonNetSerializer.Default` is just syntactic sugar for passing a delegate like - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = new ConnectionSettings( - pool, - sourceSerializer: (builtin, settings) => new JsonNetSerializer(builtin, settings)); -var client = new ElasticClient(connectionSettings); ----- - -`JsonNetSerializer`'s constructor takes several methods that allow you to control the `JsonSerializerSettings` and modify -the contract resolver from `Json.NET`. - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = - new ConnectionSettings(pool, sourceSerializer: (builtin, settings) => new JsonNetSerializer( - builtin, settings, - () => new JsonSerializerSettings { NullValueHandling = NullValueHandling.Include }, - resolver => resolver.NamingStrategy = new SnakeCaseNamingStrategy() - )); -var client = new ElasticClient(connectionSettings); ----- - -==== Derived serializers - -If you'd like to be more explicit, you can also derive from `ConnectionSettingsAwareSerializerBase` -and override the `CreateJsonSerializerSettings` and `ModifyContractResolver` methods - -[source,csharp] ----- -public class MyFirstCustomJsonNetSerializer : ConnectionSettingsAwareSerializerBase -{ - public MyFirstCustomJsonNetSerializer(ITransportSerializer builtinSerializer, IConnectionSettingsValues connectionSettings) - : base(builtinSerializer, connectionSettings) { } - - protected override JsonSerializerSettings CreateJsonSerializerSettings() => - new JsonSerializerSettings - { - NullValueHandling = NullValueHandling.Include - }; - - protected override void ModifyContractResolver(ConnectionSettingsAwareContractResolver resolver) => - resolver.NamingStrategy = new SnakeCaseNamingStrategy(); -} ----- - -Using `MyFirstCustomJsonNetSerializer`, we can serialize using - -* a Json.NET `NamingStrategy` that snake cases property names - -* `JsonSerializerSettings` that includes `null` properties - -without affecting how NEST's own types are serialized. Furthermore, because this serializer is aware of -the built-in serializer, we can automatically inject a `JsonConverter` to handle -known NEST types that could appear as part of the source, such as the aformentioned `QueryContainer`. - -Let's demonstrate with an example document type - -[source,csharp] ----- -public class MyDocument -{ - public int Id { get; set; } - - public string Name { get; set; } - - public string FilePath { get; set; } - - public int OwnerId { get; set; } - - public IEnumerable SubDocuments { get; set; } -} - -public class MySubDocument -{ - public string Name { get; set; } -} ----- - -Hooking up the serializer and using it is as follows - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = new ConnectionSettings( - pool, - connection: new InMemoryConnection(), <1> - sourceSerializer: (builtin, settings) => new MyFirstCustomJsonNetSerializer(builtin, settings)) - .DefaultIndex("my-index"); - -var client = new ElasticClient(connectionSettings); ----- -<1> an _in-memory_ connection is used here for example purposes. In your production application, you would use an `IConnection` implementation that actually sends a request. - -Now, if we index an instance of our document type - -[source,csharp] ----- -var document = new MyDocument -{ - Id = 1, - Name = "My first document", - OwnerId = 2 -}; - -var ndexResponse = client.IndexDocument(document); ----- - -it serializes to - -[source,javascript] ----- -{ - "id": 1, - "name": "My first document", - "file_path": null, - "owner_id": 2, - "sub_documents": null -} ----- - -which adheres to the conventions of our configured `MyCustomJsonNetSerializer` serializer. - -==== Serializing Type Information - -Here's another example that implements a custom contract resolver. The custom contract resolver -will include the type name within the serialized JSON for the document, which can be useful when -returning covariant document types within a collection. - -[source,csharp] ----- -public class MySecondCustomContractResolver : ConnectionSettingsAwareContractResolver -{ - public MySecondCustomContractResolver(IConnectionSettingsValues connectionSettings) - : base(connectionSettings) { } - - protected override JsonContract CreateContract(Type objectType) - { - var contract = base.CreateContract(objectType); - if (contract is JsonContainerContract containerContract) - { - if (containerContract.ItemTypeNameHandling == null) - containerContract.ItemTypeNameHandling = TypeNameHandling.None; - } - - return contract; - } -} - -public class MySecondCustomJsonNetSerializer : ConnectionSettingsAwareSerializerBase -{ - public MySecondCustomJsonNetSerializer(ITransportSerializer builtinSerializer, IConnectionSettingsValues connectionSettings) - : base(builtinSerializer, connectionSettings) { } - - protected override JsonSerializerSettings CreateJsonSerializerSettings() => - new JsonSerializerSettings - { - TypeNameHandling = TypeNameHandling.All, - NullValueHandling = NullValueHandling.Ignore, - TypeNameAssemblyFormatHandling = TypeNameAssemblyFormatHandling.Simple - }; - - protected override ConnectionSettingsAwareContractResolver CreateContractResolver() => - new MySecondCustomContractResolver(ConnectionSettings); <1> -} ----- -<1> override the contract resolver - -Now, hooking up this serializer - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var connectionSettings = new ConnectionSettings( - pool, - connection: new InMemoryConnection(), - sourceSerializer: (builtin, settings) => new MySecondCustomJsonNetSerializer(builtin, settings)) - .DefaultIndex("my-index"); - -var client = new ElasticClient(connectionSettings); ----- - -and indexing an instance of our document type - -[source,csharp] ----- -var document = new MyDocument -{ - Id = 1, - Name = "My first document", - OwnerId = 2, - SubDocuments = new [] - { - new MySubDocument { Name = "my first sub document" }, - new MySubDocument { Name = "my second sub document" }, - } -}; - -var ndexResponse = client.IndexDocument(document); ----- - -serializes to - -[source,javascript] ----- -{ - "$type": "Tests.ClientConcepts.HighLevel.Serialization.GettingStarted+MyDocument, Tests", - "id": 1, - "name": "My first document", - "ownerId": 2, - "subDocuments": [ - { - "name": "my first sub document" - }, - { - "name": "my second sub document" - } - ] -} ----- - -the type information is serialized for the outer `MyDocument` instance, but not for each -`MySubDocument` instance in the `SubDocuments` collection. - -When implementing a custom contract resolver derived from `ConnectionSettingsAwareContractResolver`, -be careful not to change the behaviour of the resolver for NEST types; doing so will result in -unexpected behaviour. - -[WARNING] --- -Per the https://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_TypeNameHandling.htm[Json.NET documentation on TypeNameHandling], -it should be used with caution when your application deserializes JSON from an external source. - --- - diff --git a/docs/client-concepts/high-level/serialization/extending-nest-types.asciidoc b/docs/client-concepts/high-level/serialization/extending-nest-types.asciidoc deleted file mode 100644 index e3f3e763674..00000000000 --- a/docs/client-concepts/high-level/serialization/extending-nest-types.asciidoc +++ /dev/null @@ -1,88 +0,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/ClientConcepts/HighLevel/Serialization/ExtendingNestTypes.doc.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! -//// - -[[extending-nest-types]] -=== Extending NEST types - -Sometimes you might want to provide a custom implementation of a type, perhaps to work around an issue or because -you're using a third-party plugin that extends the features of Elasticsearch, and NEST does not provide support out of the box. - -NEST allows extending its types in some scenarios, discussed here. - -==== Creating your own property mapping - -As an example, let's imagine we're using a third party plugin that provides support for additional data type -for field mapping. We can implement a custom `IProperty` implementation so that we can use the field mapping -type with NEST. - -[source,csharp] ----- -public class MyPluginProperty : IProperty -{ - IDictionary IProperty.LocalMetadata { get; set; } - IDictionary IProperty.Meta { get; set; } - public string Type { get; set; } = "my_plugin_property"; - public PropertyName Name { get; set; } - - public MyPluginProperty(string name, string language) - { - this.Name = name; - this.Language = language; - this.Numeric = true; - } - - [PropertyName("language")] - public string Language { get; set; } - - [PropertyName("numeric")] - public bool Numeric { get; set; } -} ----- - -`PropertyNameAttribute` can be used to mark properties that should be serialized. Without this attribute, -NEST won't pick up the property for serialization. - -Now that we have our own `IProperty` implementation we can add it to our properties mapping when creating an index - -[source,csharp] ----- -var createIndexResponse = client.Indices.Create("myindex", c => c - .Map(m => m - .Properties(props => props - .Custom(new MyPluginProperty("fieldName", "dutch")) - ) - ) -); ----- - -which will serialize to the following JSON request - -[source,javascript] ----- -{ - "mappings": { - "properties": { - "fieldName": { - "type": "my_plugin_property", - "language": "dutch", - "numeric": true - } - } - } -} ----- - -Whilst NEST can _serialize_ our `my_plugin_property`, it does not know how to _deserialize_ it; -We plan to make this more pluggable in the future. - diff --git a/docs/client-concepts/high-level/serialization/modelling-documents-with-types.asciidoc b/docs/client-concepts/high-level/serialization/modelling-documents-with-types.asciidoc deleted file mode 100644 index c75419a3c7a..00000000000 --- a/docs/client-concepts/high-level/serialization/modelling-documents-with-types.asciidoc +++ /dev/null @@ -1,498 +0,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/ClientConcepts/HighLevel/Serialization/ModellingDocumentsWithTypes.doc.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! -//// - -[[modelling-documents-with-types]] -=== Modelling documents with types - -Elasticsearch provides search and aggregation capabilities on the documents that it is sent and indexes. These documents are sent as -JSON objects within the request body of a HTTP request. It is natural to model documents within NEST and Elasticsearch.Net using -https://en.wikipedia.org/wiki/Plain_Old_CLR_Object[POCOs (__Plain Old CLR Objects__)]. - -This section provides an overview of how types and type hierarchies can be used to model documents. - -[[default-behaviour]] -==== Default behaviour - -NEST's default behaviour is to serialize type property names as camelcase JSON object members. -Given the POCO - -[source,csharp] ----- -public class MyDocument -{ - public string StringProperty { get; set; } -} ----- - -The following example demonstrates this behaviour - -[source,csharp] ----- -var indexResponse = Client.Index( - new MyDocument { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -serializing the POCO property named `StringProperty` to the JSON object member named `stringProperty` - -[source,javascript] ----- -{ - "stringProperty": "value" -} ----- - -[[default-field-name-inferrer]] -==== `DefaultFieldNameInferrer` setting - -Many different systems may be indexing documents into Elasticsearch, using a different -convention than camelcase for JSON object members. How NEST serializes -POCO property names can be globally controlled using `DefaultFieldNameInferrer` on -`ConnectionSettings`. The following example defines a function that applies snake casing -to a passed string, with the function called inside a delegate passed to `DefaultFieldNameInferrer` - -[source,csharp] ----- -var settings = new ConnectionSettings(); - -static string ToSnakeCase(string s) <1> -{ - var builder = new StringBuilder(s.Length); - for (int i = 0; i < s.Length; i++) - { - var c = s[i]; - if (char.IsUpper(c)) - { - if (i == 0) - builder.Append(char.ToLowerInvariant(c)); - else if (char.IsUpper(s[i - 1])) - builder.Append(char.ToLowerInvariant(c)); - else - { - builder.Append("_"); - builder.Append(char.ToLowerInvariant(c)); - } - } - else - builder.Append(c); - } - - return builder.ToString(); -} - -settings.DefaultFieldNameInferrer(p => ToSnakeCase(p)); <2> - -var client = new ElasticClient(settings); - -var indexResponse = client.Index( - new MyDocument { StringProperty = "value" }, - i => i.Index("my_documents")); ----- -<1> function to convert a string to snake case -<2> apply snake casing to **all** POCO properties - -The above example serializes the `MyDocument` POCO to - -[source,javascript] ----- -{ - "string_property": "value" -} ----- - -[[propertyname-attribute]] -==== `PropertyName` attribute - -Sometimes there may be a need to change only how specific POCO properties are serialized. The -`PropertyName` attribute can be applied to POCO properties to control the name that the POCO -property will serialize to and deserialize from. The following example uses the `PropertyName` attribute -to control how the POCO property named `StringProperty` is serialized - -[source,csharp] ----- -public class MyDocumentWithPropertyName -{ - [PropertyName("string_property")] - public string StringProperty { get; set; } -} - -var indexResponse = Client.Index( - new MyDocumentWithPropertyName { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -The above example serializes the `MyDocumentWithPropertyName` POCO to - -[source,javascript] ----- -{ - "string_property": "value" -} ----- - -[[nest-property-attributes]] -==== NEST property attributes - -The `PropertyName` attribute can be used to control how a POCO property is serialized. NEST contains -a collection of other attributes, such as `Text` attribute, that not only control how a POCO property is serialized, -but also control how a POCO property is mapped when using <>. The `Name` property of -these attributes controls how a POCO property is serialized in a similar fashion to `PropertyName` attribute. - -The following example uses the `Text` attribute to control how the POCO property named `StringProperty` is serialized - -[source,csharp] ----- -public class MyDocumentWithTextProperty -{ - [Text(Name = "string_property")] - public string StringProperty { get; set; } -} - -var indexResponse = Client.Index( - new MyDocumentWithTextProperty { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -The above example serializes the `MyDocumentWithTextProperty` POCO to - -[source,javascript] ----- -{ - "string_property": "value" -} ----- - -[[data-member-attribute]] -==== DataMember attribute - -The `System.Runtime.Serialization.DataMember` attribute can be used to control how a POCO property is serialized. in a similar -fashion to `PropertyName` attribute. The `DataMember` attribute may be preferred over `PropertyName` attribute in situations where -the project in which the POCOs are defined does not have a dependency on NEST. - -The following example uses the `DataMember` attribute to control how the POCO property -named `StringProperty` is serialized - -[source,csharp] ----- -public class MyDocumentWithDataMember -{ - [DataMember(Name = "string_property")] - public string StringProperty { get; set; } -} - -var indexResponse = Client.Index( - new MyDocumentWithDataMember { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -The above example serializes the `MyDocumentWithDataMember` POCO to - -[source,javascript] ----- -{ - "string_property": "value" -} ----- - -[[default-mapping-for]] -==== `DefaultMappingFor` setting - -Whilst `DefaultFieldNameInferrer` applies a convention to all POCO properties, there may be occasions where -only particular properties of a specific POCO are serialized differently. The `DefaultMappingFor` setting -on `ConnectionSettings` can be used to change how properties are mapped for a type. The following example -changes how the `StringProperty` is serialized for the `MyDocument` type - -[source,csharp] ----- -var settings = new ConnectionSettings(); - -settings.DefaultMappingFor(d => d - .PropertyName(p => p.StringProperty, nameof(MyDocument.StringProperty)) <1> -); - -var client = new ElasticClient(settings); - -var indexResponse = client.Index( - new MyDocument { StringProperty = "value" }, - i => i.Index("my_documents")); ----- -<1> serialize the `StringProperty` type as `"StringProperty"` - -The above example serializes the `MyDocument` POCO to - -[source,javascript] ----- -{ - "StringProperty": "value" -} ----- - -`DefaultMappingFor`'s behaviour can be somewhat surprising when class hierarchies are involved. Consider the following -POCOs - -[source,csharp] ----- -public class MyBaseDocument -{ - public string StringProperty { get; set; } -} - -public class MyDerivedDocument : MyBaseDocument -{ - public int IntProperty { get; set; } -} ----- - -When serializing an instance of `MyDerivedDocument` with - -[source,csharp] ----- -var indexResponse = Client.Index( - new MyDerivedDocument { StringProperty = "value", IntProperty = 2 }, - i => i.Index("my_documents")); ----- - -it serializes to - -[source,javascript] ----- -{ - "intProperty": 2, - "stringProperty": "value" -} ----- - -Now, consider what happens when `DefaultMappingFor` is used to control how `MyDerivedDocument` -is mapped - -[source,csharp] ----- -var settings = new ConnectionSettings(); - -settings.DefaultMappingFor(d => d - .PropertyName(p => p.IntProperty, nameof(MyDerivedDocument.IntProperty)) <1> - .Ignore(p => p.StringProperty) <2> -); - -var client = new ElasticClient(settings); - -var indexResponse = client.Index( - new MyDerivedDocument { StringProperty = "value", IntProperty = 2 }, - i => i.Index("my_documents")); ----- -<1> serialize the `IntProperty` type as `"IntProperty"` -<2> ignore `StringProperty` - -`MyDerivedDocument` serializes to - -[source,javascript] ----- -{ - "IntProperty": 2 -} ----- - -showing that the POCO property named `IntProperty` is serialized to JSON object member named `"IntProperty"` and -`StringProperty` has not been serialized (ignored). This shouldn't be surprising. - -Now, index an instance of the base class, `MyBaseDocument` - -[source,csharp] ----- -var indexResponse2 = client.Index( - new MyBaseDocument { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -This serializes to an empty JSON object - -[source,javascript] ----- -{} ----- - -The `StringProperty` has not been serialized (ignored) for the base class, even though `DefaultMappingFor` -was used with the derived class, `MyDerivedDocument` - -This happens because `MyBaseDocument` is the _declaring type_ for the `StringProperty` member; when the `MemberInfo` for -the `StringProperty` is retrieved from the expression `p => p.StringProperty`, the `DeclaringType` is `MyBaseDocument`. -Since `DefaultMappingFor` persists property mappings for types in a dictionary keyed on `MemberInfo`, the -`PropertyName()` mapping defined using `DefaultMappingFor` also applies to the base type, `MyBaseDocument`. - -Consider a more involved example where the base type defines a member as `virtual`, and the derived type provides an -`override` for the member - -[source,csharp] ----- -public class MyBaseDocumentVirtualProperty -{ - public virtual string StringProperty { get; set; } -} - -public class MyDerivedDocumentOverrideProperty : MyBaseDocumentVirtualProperty -{ - public override string StringProperty { get; set; } - - public int IntProperty { get; set; } -} ----- - -With a similar scenario to the last example, `DefaultMappingFor` is defined for the -derived type, `MyDerivedDocumentOverrideProperty` - -[source,csharp] ----- -var settings = new ConnectionSettings(); - -settings.DefaultMappingFor(d => d - .PropertyName(p => p.IntProperty, nameof(MyDerivedDocumentOverrideProperty.IntProperty)) - .Ignore(p => p.StringProperty) -); - -var client = new ElasticClient(settings); - -var indexResponse = client.Index( - new MyDerivedDocumentOverrideProperty { StringProperty = "value", IntProperty = 2 }, - i => i.Index("my_documents")); ----- - -The instance of `MyDerivedDocumentOverrideProperty` serializes to - -[source,javascript] ----- -{ - "stringProperty": "value", - "IntProperty": 2 -} ----- - -Notably, the `StringProperty` member has been serialized and not ignored, even though the -`DefaultMappingFor` configuration specifies to ignore it. - -Serializing an instance of the base type, `MyBaseDocumentVirtualProperty` - -[source,csharp] ----- -var indexResponse2 = client.Index( - new MyBaseDocumentVirtualProperty { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -serializes to an empty JSON object - -[source,javascript] ----- -{} ----- - -This may be surprising. - -[IMPORTANT] --- -There is a difference in how `MemberInfo` that represent the members of a type are retrieved when using reflection, compared -to how `MemberInfo` are determined from expressions. - -As an example, when retrieving `StringProperty` member on `MyDerivedDocumentOverrideProperty` using reflection, both -`DeclaringType` and `ReflectedType` are `MyDerivedDocumentOverrideProperty` - -[source,csharp] ----- -var memberInfo = typeof(MyDerivedDocumentOverrideProperty).GetProperty("StringProperty"); -Console.WriteLine($"DeclaringType: {memberInfo.DeclaringType.Name}"); -Console.WriteLine($"ReflectedType: {memberInfo.ReflectedType.Name}"); ----- - -In contrast, when retrieving `StringProperty` member on `MyDerivedDocumentOverrideProperty` using an expression, both -`DeclaringType` and `ReflectedType` are `MyBaseDocumentVirtualProperty` - -[source,csharp] ----- -public class MemberVisitor : ExpressionVisitor -{ - protected override Expression VisitMember(MemberExpression node) - { - Console.WriteLine($"DeclaringType: {node.Member.DeclaringType.Name}"); - Console.WriteLine($"ReflectedType: {node.Member.ReflectedType.Name}"); - return base.VisitMember(node); - } -} - -Expression> memberExpression = - p => p.StringProperty; - -var visitor = new MemberVisitor(); -visitor.Visit(memberExpression); ----- - -Crucially, this difference in how `MemberInfo` are retrieved explains the result of the previous example; -The serialization implementation determines the members for a given type using reflection, whereas `DefaultMappingFor` -determines the member in `PropertyName` using the expression passed. - --- - -As another example, consider a derived type that hides a base type member, using the `new` keyword - -[source,csharp] ----- -public class MyDerivedDocumentShadowProperty : MyBaseDocument -{ - public new string StringProperty { get; set; } -} ----- - -Now when configuring `DefaultMappingFor` for `MyDerivedDocumentShadowProperty` - -[source,csharp] ----- -var settings = new ConnectionSettings(); - -settings.DefaultMappingFor(d => d - .Ignore(p => p.StringProperty) -); - -var client = new ElasticClient(settings); - -var indexResponse = client.Index( - new MyDerivedDocumentShadowProperty { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -an instance of `MyDerivedDocumentShadowProperty` serializes to - -[source,javascript] ----- -{} ----- - -Whilst the base type `MyBaseDocument` - -[source,csharp] ----- -var indexResponse2 = client.Index( - new MyBaseDocument { StringProperty = "value" }, - i => i.Index("my_documents")); ----- - -serializes to - -[source,javascript] ----- -{ - "stringProperty": "value" -} ----- - -In summary, careful consideration should be made when using type hierarchies to represent documents -that are indexed in Elasticsearch. It is generally recommended to stick to simple POCOs, where possible. - diff --git a/docs/client-concepts/serialization/custom-serialization.asciidoc b/docs/client-concepts/serialization/custom-serialization.asciidoc new file mode 100644 index 00000000000..ce2ec664d1d --- /dev/null +++ b/docs/client-concepts/serialization/custom-serialization.asciidoc @@ -0,0 +1,235 @@ +[[customizing-source-serialization]] +==== Customizing source serialization + +The built-in source serializer handles most POCO document models correctly. Sometimes, you may need further control over how your types are serialized. + +NOTE: The built-in source serializer uses the https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/overview[Microsoft `System.Text.Json` library] internally. You can apply `System.Text.Json` attributes and converters to control the serialization of your document types. + +[discrete] +[[system-text-json-attributes]] +===== Using `System.Text.Json` attributes + +`System.Text.Json` includes attributes that can be applied to types and properties to control their serialization. These can be applied to your POCO document types to perform actions such as controlling the name of a property or ignoring a property entirely. Visit the https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/overview[Microsoft documentation for further examples]. + +We can model a document to represent data about a person using a regular class (POCO), applying `System.Text.Json` attributes as necessary. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings-serialization] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=person-class-with-attributes] +---- +<1> The `JsonPropertyName` attribute ensures the `FirstName` property uses the JSON name `forename` when serialized. +<2> The `JsonIgnore` attribute prevents the `Age` property from appearing in the serialized JSON. + +We can then index an instance of the document into {es}. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=index-person-with-attributes] +---- + +The index request is serialized, with the source serializer handling the `Person` type, serializing the POCO property named `FirstName` to the JSON object member named `forename`. The `Age` property is ignored and does not appear in the JSON. + +[source,javascript] +---- +{ + "forename": "Steve" +} +---- + +[discrete] +[[configuring-custom-jsonserializeroptions]] +===== Configuring custom `JsonSerializerOptions` + +The default source serializer applies a set of standard `JsonSerializerOptions` when serializing source document types. In some circumstances, you may need to override some of our defaults. This is achievable by creating an instance of `DefaultSourceSerializer` and passing an `Action`, which is applied after our defaults have been set. This mechanism allows you to apply additional settings or change the value of our defaults. + +The `DefaultSourceSerializer` includes a constructor that accepts the current `IElasticsearchClientSettings` and a `configureOptions` `Action`. + +[source,csharp] +---- +public DefaultSourceSerializer(IElasticsearchClientSettings settings, Action configureOptions); +---- + +Our application defines the following `Person` class, which models a document we will index to {es}. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=person-class] +---- + +We want to serialize our source document using Pascal Casing for the JSON properties. Since the options applied in the `DefaultSouceSerializer` set the `PropertyNamingPolicy` to `JsonNamingPolicy.CamelCase`, we must override this setting. After configuring the `ElasticsearchClientSettings`, we index our document to {es}. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings] +private async Task SerializeWithCustomOptionsAsync() +{ +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=custom-options-local-function] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=create-client] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=index-person] +} +---- +<1> A local function can be defined, accepting a `JsonSerializerOptions` parameter. Here, we set `PropertyNamingPolicy` to `null`. This returns to the default behavior for `System.Text.Json`, which uses Pascal Case. +<2> When creating the `ElasticsearchClientSettings`, we supply a `SourceSerializerFactory` using a lambda. The factory function creates a new instance of `DefaultSourceSerializer`, passing in the `settings` and our `ConfigureOptions` local function. We have now configured the settings with a custom instance of the source serializer. + +The `Person` instance is serialized, with the source serializer serializing the POCO property named `FirstName` using Pascal Case. + +[source,javascript] +---- +{ + "FirstName": "Steve" +} +---- + +As an alternative to using a local function, we could store an `Action` into a variable instead, which can be passed to the `DefaultSouceSerializer` constructor. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=custom-options-action] +---- + +[discrete] +[[registering-custom-converters]] +===== Registering custom `System.Text.Json` converters + +In certain more advanced situations, you may have types which require further customization during serialization than is possible using `System.Text.Json` property attributes. In these cases, the recommendation from Microsoft is to leverage a custom `JsonConverter`. Source document types serialized using the `DefaultSourceSerializer` can leverage the power of custom converters. + +For this example, our application has a document class that should use a legacy JSON structure to continue operating with existing indexed documents. Several options are available, but we'll apply a custom converter in this case. + +Our class is defined, and the `JsonConverter` attribute is applied to the class type, specifying the type of a custom converter. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings-serialization] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=customer-with-jsonconverter-attribute] +---- +<1> The `JsonConverter` attribute signals to `System.Text.Json` that it should use a converter of type `CustomerConverter` when serializing instances of this class. + +When serializing this class, rather than include a string value representing the value of the `CustomerType` property, we must send a boolean property named `isStandard`. This requirement can be achieved with a custom JsonConverter implementation. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=converter-usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=customer-converter] +---- +<1> When reading, this converter reads the `isStandard` boolean and translate this to the correct `CustomerType` enum value. +<2> When writing, this converter translates the `CustomerType` enum value to an `isStandard` boolean property. + +We can then index a customer document into {es}. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=index-customer-with-converter] +---- + +The `Customer` instance is serialized using the custom converter, creating the following JSON document. + +[source,javascript] +---- +{ + "customerName": "Customer Ltd", + "isStandard": false +} +---- + +[discrete] +[[creating-custom-system-text-json-serializer]] +===== Creating a custom `SystemTextJsonSerializer` + +The built-in `DefaultSourceSerializer` includes the registration of `JsonConverter` instances which apply during source serialization. In most cases, these provide the proper behavior for serializing source documents, including those which use `Elastic.Clients.Elasticsearch` types on their properties. + +An example of a situation where you may require more control over the converter registration order is for serializing `enum` types. The `DefaultSourceSerializer` registers the `System.Text.Json.Serialization.JsonStringEnumConverter`, so enum values are serialized using their string representation. Generally, this is the preferred option for types used to index documents to {es}. + +In some scenarios, you may need to control the string value sent for an enumeration value. That is not directly supported in `System.Text.Json` but can be achieved by creating a custom `JsonConverter` for the `enum` type you wish to customize. In this situation, it is not sufficient to use the `JsonConverterAttribute` on the `enum` type to register the converter. `System.Text.Json` will prefer the converters added to the `Converters` collection on the `JsonSerializerOptions` over an attribute applied to an `enum` type. It is, therefore, necessary to either remove the `JsonStringEnumConverter` from the `Converters` collection or register a specialized converter for your `enum` type before the `JsonStringEnumConverter`. + +The latter is possible via several techniques. When using the {es} .NET library, we can achieve this by deriving from the abstract `SystemTextJsonSerializer` class. + +Here we have a POCO which uses the `CustomerType` enum as the type for a property. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings-serialization] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=customer-without-jsonconverter-attribute] +---- + +To customize the strings used during serialization of the `CustomerType`, we define a custom `JsonConverter` specific to our `enum` type. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings-serialization] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=customer-type-converter] +---- +<1> When reading, this converter translates the string used in the JSON to the matching enum value. +<2> When writing, this converter translates the `CustomerType` enum value to a custom string value written to the JSON. + +We create a serializer derived from `SystemTextJsonSerializer` to give us complete control of converter registration order. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=derived-converter-usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=my-custom-serializer] +---- +<1> Inherit from `SystemTextJsonSerializer`. +<2> In the constructor, use the factory method `DefaultSourceSerializer.CreateDefaultJsonSerializerOptions` to create default options for serialization. No default converters are registered at this stage because we pass `false` as an argument. +<3> Register our `CustomerTypeConverter` as the first converter. +<4> To apply any default converters, call the `DefaultSourceSerializer.AddDefaultConverters` helper method, passing the options to modify. +<5> Implement the `CreateJsonSerializerOptions` method returning the stored `JsonSerializerOptions`. + +Because we have registered our `CustomerTypeConverter` before the default converters (which include the `JsonStringEnumConverter`), our converter takes precedence when serializing `CustomerType` instances on source documents. + +The base `SystemTextJsonSerializer` class handles the implementation details of binding, which is required to ensure that the built-in converters can access the `IElasticsearchClientSettings` where needed. + +We can then index a customer document into {es}. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=index-customer-without-jsonconverter-attribute] +---- + +The `Customer` instance is serialized using the custom `enum` converter, creating the following JSON document. + +[source,javascript] +---- +{ + "customerName": "Customer Ltd", + "customerType": "premium" // <1> +} +---- +<1> The string value applied during serialization is provided by our custom converter. + +[discrete] +[[creating-custom-serializers]] +===== Creating a custom `Serializer` + +Suppose you prefer using an alternative JSON serialization library for your source types. In that case, you can inject an isolated serializer only to be called for the serialization of `_source`, `_fields`, or wherever a user-provided value is expected to be written and returned. + +Implementing `Elastic.Transport.Serializer` is technically enough to create a custom source serializer. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=vanilla-serializer-using-directives] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=vanilla-serializer] +---- + +Registering up the serializer is performed in the `ConnectionSettings` constructor. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=usings] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=register-vanilla-serializer] +---- +<1> If implementing `Serializer` is enough, why must we provide an instance wrapped in a factory `Func`? + +There are various cases where you might have a POCO type that contains an `Elastic.Clients.Elasticsearch` type as one of its properties. The `SourceSerializerFactory` delegate provides access to the default built-in serializer so you can access it when necessary. For example, consider if you want to use percolation; you need to store {es} queries as part of the `_source` of your document, which means you need to have a POCO that looks like this. + +[source,csharp] +---- +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=querydsl-using-directives] +include::{doc-tests-src}/ClientConcepts/Serialization/CustomSerializationTests.cs[tag=percolation-document] +---- + +A custom serializer would not know how to serialize `Query` or other `Elastic.Clients.Elasticsearch` types that could appear as part of +the `_source` of a document. Therefore, your custom `Serializer` would need to store a reference to our built-in serializer and delegate serialization of Elastic types back to it. \ No newline at end of file diff --git a/docs/client-concepts/serialization/modeling-documents-with-types.asciidoc b/docs/client-concepts/serialization/modeling-documents-with-types.asciidoc new file mode 100644 index 00000000000..d4e57b6d575 --- /dev/null +++ b/docs/client-concepts/serialization/modeling-documents-with-types.asciidoc @@ -0,0 +1,37 @@ +[[modeling-documents-with-types]] +==== Modeling documents with types + +{es} provides search and aggregation capabilities on the documents that it is sent and indexes. These documents are sent as +JSON objects within the request body of a HTTP request. It is natural to model documents within the {es} .NET client using +https://en.wikipedia.org/wiki/Plain_Old_CLR_Object[POCOs (__Plain Old CLR Objects__)]. + +This section provides an overview of how types and type hierarchies can be used to model documents. + +[[default-behaviour]] +===== Default behaviour + +The default behaviour is to serialize type property names as camelcase JSON object members. + +We can model documents using a regular class (POCO). + +[source,csharp] +---- +include-tagged::{doc-tests-src}/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs[my-document-poco] +---- + +We can then index the an instance of the document into {es}. + +[source,csharp] +---- +include-tagged::{doc-tests-src}/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs[usings] +include-tagged::{doc-tests-src}/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs[index-my-document] +---- + +The index request is serialized, with the source serializer handling the `MyDocument` type, serializing the POCO property named `StringProperty` to the JSON object member named `stringProperty`. + +[source,javascript] +---- +{ + "stringProperty": "value" +} +---- \ No newline at end of file diff --git a/docs/client-concepts/troubleshooting/audit-trail.asciidoc b/docs/client-concepts/troubleshooting/audit-trail.asciidoc index 490c414c747..7622c09e41c 100644 --- a/docs/client-concepts/troubleshooting/audit-trail.asciidoc +++ b/docs/client-concepts/troubleshooting/audit-trail.asciidoc @@ -4,13 +4,6 @@ :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/ClientConcepts/Troubleshooting/AuditTrail.doc.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! -//// [[audit-trail]] === Audit trail diff --git a/docs/client-concepts/troubleshooting/debug-information.asciidoc b/docs/client-concepts/troubleshooting/debug-information.asciidoc index d8e5bc4a27d..a7504312d2d 100644 --- a/docs/client-concepts/troubleshooting/debug-information.asciidoc +++ b/docs/client-concepts/troubleshooting/debug-information.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/DebugInformation.doc.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! -//// - [[debug-information]] === Debug information diff --git a/docs/client-concepts/troubleshooting/debug-mode.asciidoc b/docs/client-concepts/troubleshooting/debug-mode.asciidoc index 6af95e6f4f3..05d84092f3e 100644 --- a/docs/client-concepts/troubleshooting/debug-mode.asciidoc +++ b/docs/client-concepts/troubleshooting/debug-mode.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/DebugMode.doc.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! -//// - [[debug-mode]] === Debug mode diff --git a/docs/client-concepts/troubleshooting/deprecation-logging.asciidoc b/docs/client-concepts/troubleshooting/deprecation-logging.asciidoc index 8378a1affa1..c69a0fc1ee1 100644 --- a/docs/client-concepts/troubleshooting/deprecation-logging.asciidoc +++ b/docs/client-concepts/troubleshooting/deprecation-logging.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/DeprecationLogging.doc.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! -//// - [[deprecation-logging]] === Deprecation logging diff --git a/docs/client-concepts/troubleshooting/diagnostic-source.asciidoc b/docs/client-concepts/troubleshooting/diagnostic-source.asciidoc index 8cbcad922f0..2f8e189cd60 100644 --- a/docs/client-concepts/troubleshooting/diagnostic-source.asciidoc +++ b/docs/client-concepts/troubleshooting/diagnostic-source.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/DiagnosticSource.doc.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! -//// - [[diagnostic-source]] === Diagnostic Source diff --git a/docs/client-concepts/troubleshooting/logging-with-fiddler.asciidoc b/docs/client-concepts/troubleshooting/logging-with-fiddler.asciidoc index 3cbf54a7abd..527f4bc53db 100644 --- a/docs/client-concepts/troubleshooting/logging-with-fiddler.asciidoc +++ b/docs/client-concepts/troubleshooting/logging-with-fiddler.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/LoggingWithFiddler.doc.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! -//// - [[logging-with-fiddler]] === Logging with Fiddler diff --git a/docs/client-concepts/troubleshooting/logging-with-on-request-completed.asciidoc b/docs/client-concepts/troubleshooting/logging-with-on-request-completed.asciidoc index a771d687af1..a21c9ce67a0 100644 --- a/docs/client-concepts/troubleshooting/logging-with-on-request-completed.asciidoc +++ b/docs/client-concepts/troubleshooting/logging-with-on-request-completed.asciidoc @@ -4,14 +4,6 @@ :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/ClientConcepts/Troubleshooting/LoggingWithOnRequestCompleted.doc.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! -//// - [[logging-with-on-request-completed]] === Logging with OnRequestCompleted diff --git a/docs/code-standards/descriptors.asciidoc b/docs/code-standards/descriptors.asciidoc deleted file mode 100644 index 87f324d0ac6..00000000000 --- a/docs/code-standards/descriptors.asciidoc +++ /dev/null @@ -1,274 +0,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/CodeStandards/Descriptors.doc.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! -//// - -[[descriptors]] -=== Descriptors - -A descriptor is fluent class that is used to build up state and should therefor return itself on each call. -Every descriptor should inherit from `DescriptorBase`, this hides object members from the fluent interface - -[source,csharp] ----- -var notDescriptors = new[] {typeof(ClusterProcessOpenFileDescriptors).Name, "DescriptorForAttribute"}; - -var descriptors = - from t in typeof(DescriptorBase<,>).Assembly.Types() - where t.IsClass - && t.Name.Contains("Descriptor") - && !t.Namespace.StartsWith("Nest.Json") - && !t.Namespace.StartsWith("Elastic.Internal") - && !notDescriptors.Contains(t.Name) -#if __MonoCS__ - && !t.FullName.Contains("c__AnonStore") //compiler generated -#endif - && t.GetInterfaces().All(i => i != typeof(IDescriptor)) - select t.FullName; -descriptors.Should().BeEmpty(); ----- - -A selector is fluent class that is used to return state. Each method should return a completed state. -Every selector should inherit from `ISelector`, this hides object members from the fluent interface - -[source,csharp] ----- -var notSelectors = new[] {typeof(BucketSelectorAggregationDescriptor).Name, typeof(BucketSelectorAggregation).Name}; -var selectors = - from t in typeof(SelectorBase).Assembly.Types() - where t.IsClass - && t.Name.Contains("Selector") - && !t.Namespace.StartsWith("Nest.Json") - && !notSelectors.Contains(t.Name) -#if __MonoCS__ - && !t.FullName.Contains("c__AnonStore") //compiler generated -#endif - && t.GetInterfaces().All(i => i != typeof(ISelector)) - select t.FullName; -selectors.Should().BeEmpty(); ----- - -A descriptor is exposed as a selector func, taking a descriptor and returning the completed state. -Methods taking a func should have that func return an interface - -[source,csharp] ----- -var descriptors = - from t in typeof(DescriptorBase<,>).Assembly.Types() - where t.IsClass && typeof(IDescriptor).IsAssignableFrom(t) - select t; - -var exclusions = new Dictionary -{ - {typeof(QueryContainerDescriptor<>), typeof(QueryContainer)}, - {typeof(ConditionDescriptor), typeof(ConditionContainer)}, - {typeof(TriggerDescriptor), typeof(TriggerContainer)}, - {typeof(TransformDescriptor), typeof(TransformContainer)}, - {typeof(SmoothingModelContainerDescriptor), typeof(SmoothingModelContainer)}, - {typeof(InputDescriptor), typeof(InputContainer)}, - {typeof(RoleMappingRuleDescriptor), typeof(RoleMappingRuleBase)}, - {typeof(FluentDictionary<,>), typeof(FluentDictionary<,>)}, - {typeof(IntervalsDescriptor), typeof(IntervalsContainer)} -}; - -Func exclude = (first, second) => -{ - var key = first.IsGenericType - ? first.GetGenericTypeDefinition() - : first; - - Type value; - if (!exclusions.TryGetValue(key, out value)) - return false; - - return second.IsGenericType - ? second.GetGenericTypeDefinition() == value - : value.IsAssignableFrom(second); -}; - -var selectorMethods = - from d in descriptors - from m in d.GetMethods() - let parameters = m.GetParameters() - from p in parameters - let type = p.ParameterType - let isGeneric = type.IsGenericType - where isGeneric - let isFunc = type.GetGenericTypeDefinition() == typeof(Func<,>) - where isFunc - let firstFuncArg = type.GetGenericArguments().First() - let secondFuncArg = type.GetGenericArguments().Last() - where !exclude(firstFuncArg, secondFuncArg) - let lastArgIsNotInterface = !secondFuncArg.IsInterface - where lastArgIsNotInterface - select $"{m.Name} on {m.DeclaringType.Name}"; - -selectorMethods.Should().BeEmpty(); ----- - -Descriptor methods that assign to a nullable bool property should accept -a nullable bool with a default value - -[source,csharp] ----- -var queries = - from t in typeof(IQuery).Assembly.Types() - where t.IsInterface && typeof(IQuery).IsAssignableFrom(t) - where t.GetProperties().Any(p => p.PropertyType == typeof(bool?)) - select t; - -var descriptors = - from t in typeof(DescriptorBase<,>).Assembly.Types() - where t.IsClass && typeof(IDescriptor).IsAssignableFrom(t) - where t.GetInterfaces().Intersect(queries).Any() - select t; - -var breakingDescriptors = new List(); - -foreach (var query in queries) -{ - var descriptor = descriptors.First(d => query.IsAssignableFrom(d)); - foreach (var boolProperty in query.GetProperties().Where(p => p.PropertyType == typeof(bool?))) - { - var descriptorMethod = descriptor.GetMethod(boolProperty.Name); - if (descriptorMethod == null) - throw new Exception($"No method for property {boolProperty.Name} on {descriptor.Name}"); - - var parameters = descriptorMethod.GetParameters(); - - if (!parameters.Any()) - throw new Exception($"No parameter for method {descriptorMethod.Name} on {descriptor.Name}"); - - if (parameters.Length > 1) - throw new Exception($"More than one parameter for method {descriptorMethod.Name} on {descriptor.Name}"); - - if (parameters[0].ParameterType != typeof(bool?)) - breakingDescriptors.Add($"{descriptor.FullName} method {descriptorMethod.Name} does not take nullable bool"); - - if (!parameters[0].HasDefaultValue) - breakingDescriptors.Add($"{descriptor.FullName} method {descriptorMethod.Name} does not have a default value"); - } -} - -breakingDescriptors.Should().BeEmpty(); - -var processors = ( - from t in typeof(IProcessor).Assembly.Types() - where typeof(IProcessor).IsAssignableFrom(t) - select t.Name).ToList(); - -processors.Should().NotBeEmpty($"expected {nameof(IProcessor)} implementations"); -processors.Should().OnlyContain(p => p.Contains("Processor")); - -var methods = from d in YieldAllDescriptors() - from m in d.GetMethods() - let ps = m.GetParameters() - where ps.Length == 1 && ps.Any(pp => pp.ParameterType.IsValueType) - let p = ps.First() - let pt = p.ParameterType - where (!pt.IsGenericType || pt.GetGenericTypeDefinition() != typeof(Nullable<>)) - let dt = m.DeclaringType.IsGenericType ? m.DeclaringType.GetGenericTypeDefinition() : m.DeclaringType - - //skips - where !(new[] {"metric", "indexMetric", "watcherStatsMetric"}.Contains(p.Name)) - where !(m.Name == "Interval" && d == typeof(DateHistogramAggregationDescriptor<>)) - where !(m.Name == "CalendarInterval" && d == typeof(DateHistogramAggregationDescriptor<>)) - where !(m.Name == "FixedInterval" && d == typeof(DateHistogramAggregationDescriptor<>)) - where !(m.Name == "Lang" && dt == typeof(ScriptDescriptorBase<,>)) - where !(m.Name == "Lang" && dt == typeof(StoredScriptDescriptor)) - where !(m.Name == "Lang" && dt == typeof(ScriptQueryDescriptor<>)) - where !(m.Name == nameof(BulkAllDescriptor.RefreshOnCompleted) && dt == typeof(BulkAllDescriptor<>)) - where !(m.Name == nameof(BulkAllDescriptor.ContinueAfterDroppedDocuments) && dt == typeof(BulkAllDescriptor<>)) - where !(m.Name == nameof(ReindexDescriptor.OmitIndexCreation) && dt == typeof(ReindexDescriptor<,>)) - where !(m.Name == nameof(PutMappingDescriptor.AutoMap)) - where !(m.Name == nameof(PutMappingDescriptor.Dynamic)) - where !(m.Name == "Strict" && dt == typeof(QueryDescriptorBase<,>)) - where !(m.Name == "Verbatim" && dt == typeof(QueryDescriptorBase<,>)) - where !(m.Name == nameof(FunctionScoreQueryDescriptor.ConditionlessWhen) && dt == typeof(FunctionScoreQueryDescriptor<>)) - where !(m.Name == nameof(ScoreFunctionsDescriptor.RandomScore) && dt == typeof(ScoreFunctionsDescriptor<>)) - where !(m.Name == nameof(HighlightFieldDescriptor.Type) && dt == typeof(HighlightFieldDescriptor<>)) - where !(m.Name == nameof(InnerHitsDescriptor.Source) && dt == typeof(InnerHitsDescriptor<>)) - where !(m.Name == nameof(SearchDescriptor.Source) && dt == typeof(SearchDescriptor<>)) - where !(m.Name == nameof(ScoreFunctionsDescriptor.Weight) && dt == typeof(ScoreFunctionsDescriptor<>)) - where !(m.Name == nameof(SortDescriptor.Ascending) && dt == typeof(SortDescriptor<>)) - where !(m.Name == nameof(SortDescriptor.Descending) && dt == typeof(SortDescriptor<>)) - where !(m.Name == nameof(ClrTypeMappingDescriptor.DisableIdInference) && dt == typeof(ClrTypeMappingDescriptor<>)) - where !(m.Name == nameof(ClrTypeMappingDescriptor.DisableIdInference) && dt == typeof(ClrTypeMappingDescriptor)) - where !(m.Name == nameof(RuleConditionDescriptor.AppliesTo) && dt == typeof(RuleConditionDescriptor)) - where !(m.Name == nameof(RuleConditionDescriptor.Operator) && dt == typeof(RuleConditionDescriptor)) - where !(m.Name == nameof(RuleConditionDescriptor.Value) && dt == typeof(RuleConditionDescriptor)) - where !(m.Name == nameof(RankFeatureLogarithmFunctionDescriptor.ScalingFactor) && dt == typeof(RankFeatureLogarithmFunctionDescriptor)) - where !(m.Name == nameof(RankFeatureSigmoidFunctionDescriptor.Exponent) && dt == typeof(RankFeatureSigmoidFunctionDescriptor)) - where !(m.Name == nameof(RankFeatureSigmoidFunctionDescriptor.Pivot) && dt == typeof(RankFeatureSigmoidFunctionDescriptor)) - where !(m.Name == nameof(DateHistogramGroupSourceDescriptor.CalendarInterval) && dt == typeof(DateHistogramGroupSourceDescriptor<>)) - where !(m.Name == nameof(DateHistogramGroupSourceDescriptor.FixedInterval) && dt == typeof(DateHistogramGroupSourceDescriptor<>)) - where !(m.Name == nameof(NormalizeAggregationDescriptor.Method) && dt == typeof(NormalizeAggregationDescriptor)) - - select new {m, d, p}; - -var breakingDescriptors = new List(); - -foreach (var info in methods) -{ - var m = info.m; - var d = info.d; - var p = info.p; - - breakingDescriptors.Add($"{p.Name} on method {m.Name} of {d.FullName} is not nullable"); -} - -breakingDescriptors.Should().BeEmpty(); - -var methods = from d in YieldAllDescriptors() - from m in d.GetMethods() - let ps = m.GetParameters() - where ps.Length == 1 && ps.Any(pp => pp.ParameterType.IsValueType) - let p = ps.First() - let pt = p.ParameterType - where pt == typeof(bool?) - let dt = m.DeclaringType.IsGenericType ? m.DeclaringType.GetGenericTypeDefinition() : m.DeclaringType - where !(m.Name == nameof(BooleanPropertyDescriptor.NullValue) && dt == typeof(BooleanPropertyDescriptor<>)) - select new {m, d, p}; - -var nullableBools = new List(); -foreach (var info in methods) -{ - var m = info.m; - var d = info.d; - var p = info.p; - if (!p.HasDefaultValue) - nullableBools.Add($"bool {p.Name} on method {m.Name} of {d.FullName} is has no default value"); - - try - { - - var b = ((bool?) p.RawDefaultValue); - if (!b.HasValue) - nullableBools.Add($"bool {p.Name} on method {m.Name} of {d.FullName} defaults to null"); - else if (!b.Value) - nullableBools.Add($"bool {p.Name} on method {m.Name} of {d.FullName} default to false"); - } - catch - { - nullableBools.Add($"bool {p.Name} on method {m.Name} of {d.FullName} defaults to unknown"); - } -} -nullableBools.Should().BeEmpty(); - -var descriptors = - from t in typeof(DescriptorBase<,>).Assembly.Types() - where t.IsClass && typeof(IDescriptor).IsAssignableFrom(t) - where !t.IsAbstract - select t; -return descriptors; ----- - diff --git a/docs/code-standards/elastic-client.asciidoc b/docs/code-standards/elastic-client.asciidoc deleted file mode 100644 index 0bdf20a2f8a..00000000000 --- a/docs/code-standards/elastic-client.asciidoc +++ /dev/null @@ -1,146 +0,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/CodeStandards/ElasticClient.doc.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! -//// - -[[elastic-client]] -=== Elastic Client - -[source,csharp] ----- -var fluentParametersNotNamedSelector = - from m in typeof(IElasticClient).GetMethods() - from p in m.GetParameters() - where p.ParameterType.BaseType == typeof(MulticastDelegate) - where !p.Name.Equals("selector") && !p.Name.Equals("mapper") - select $"method '{nameof(IElasticClient)}.{m.Name}' should have parameter name of 'selector' or 'mapper' but has a name of '{p.Name}'"; - -fluentParametersNotNamedSelector.Should().BeEmpty(); - -var requestParametersNotNamedRequest = - from m in typeof(IElasticClient).GetMethods() - from p in m.GetParameters() - where typeof(IRequest).IsAssignableFrom(p.ParameterType) - where !p.Name.Equals("request") - select $"method '{nameof(IElasticClient)}.{m.Name}' should have parameter name of 'request' but has a name of '{p.Name}'"; - -requestParametersNotNamedRequest.Should().BeEmpty(); - -var requestParameters = - (from m in typeof(IElasticClient).GetMethods() - from p in m.GetParameters() - where typeof(IRequest).IsAssignableFrom(p.ParameterType) - select p).ToList(); - -foreach (var requestParameter in requestParameters) - requestParameter.HasDefaultValue.Should().BeFalse(); - -var concreteMethodParametersDoNotMatchInterface = new List(); -var interfaceMap = typeof(ElasticClient).GetInterfaceMap(typeof(IElasticClient)); - -foreach (var interfaceMethodInfo in typeof(IElasticClient).GetMethods()) -{ - var indexOfInterfaceMethod = Array.IndexOf(interfaceMap.InterfaceMethods, interfaceMethodInfo); - var concreteMethod = interfaceMap.TargetMethods[indexOfInterfaceMethod]; - - var concreteParameters = concreteMethod.GetParameters(); - var interfaceParameters = interfaceMethodInfo.GetParameters(); - - for (int i = 0; i < concreteParameters.Length; i++) - { - var parameterInfo = concreteParameters[i]; - var interfaceParameter = interfaceParameters[i]; - - parameterInfo.Name.Should().Be( - interfaceParameter.Name, - $"{nameof(ElasticClient)}.{interfaceMethodInfo.Name} should have parameter named {interfaceParameter.Name}"); - - if (parameterInfo.HasDefaultValue != interfaceParameter.HasDefaultValue) - concreteMethodParametersDoNotMatchInterface.Add( - $"'{interfaceParameter.Name}' parameter on concrete implementation of '{nameof(ElasticClient)}.{interfaceMethodInfo.Name}' to {(interfaceParameter.HasDefaultValue ? string.Empty : "NOT")} be optional"); - } -} - -concreteMethodParametersDoNotMatchInterface.Should().BeEmpty(); - -var methodGroups = - from methodInfo in typeof(IElasticClient).GetMethods() - where - typeof(IResponse).IsAssignableFrom(methodInfo.ReturnType) || - (methodInfo.ReturnType.IsGenericType - && typeof(Task<>) == methodInfo.ReturnType.GetGenericTypeDefinition() - && typeof(IResponse).IsAssignableFrom(methodInfo.ReturnType.GetGenericArguments()[0])) - where !methodInfo.Name.Contains("CreateDocument") - where !methodInfo.Name.Contains("IndexDocument") - let method = new MethodWithRequestParameter(methodInfo) - group method by method.Name into methodGroup - select methodGroup; - -foreach (var methodGroup in methodGroups) -{ - foreach (var asyncMethod in methodGroup.Where(g => g.IsAsync)) - { - var parameters = asyncMethod.MethodInfo.GetParameters().Where(p => p.ParameterType != typeof(CancellationToken)).ToArray(); - - var syncMethod = methodGroup.First(g => - !g.IsAsync - && g.MethodType == asyncMethod.MethodType - && g.MethodInfo.GetParameters().Length == parameters.Length - && (!asyncMethod.MethodInfo.IsGenericMethod || - g.MethodInfo.GetGenericArguments().Length == asyncMethod.MethodInfo.GetGenericArguments().Length)); - - asyncMethod.Parameter.HasDefaultValue.Should().Be(syncMethod.Parameter.HasDefaultValue, - $"sync and async versions of {asyncMethod.MethodType} '{nameof(ElasticClient)}{methodGroup.Key}' should match"); - } -} - -private class MethodWithRequestParameter - { -public string Name { get; } - -public MethodInfo MethodInfo { get; } - -public bool IsAsync { get; } - -public ClientMethodType MethodType { get; } - -public ParameterInfo Parameter { get; } - -public MethodWithRequestParameter(MethodInfo methodInfo) -{ - Name = methodInfo.Name.EndsWith("Async") - ? methodInfo.Name.Substring(0, methodInfo.Name.Length - "Async".Length) - : methodInfo.Name; - - IsAsync = methodInfo.ReturnType.IsGenericType && - methodInfo.ReturnType.GetGenericTypeDefinition() == typeof(Task<>); - - MethodInfo = methodInfo; - - var parameterInfo = methodInfo.GetParameters() - .FirstOrDefault(p => typeof(IRequest).IsAssignableFrom(p.ParameterType)); - - if (parameterInfo != null) - { - Parameter = parameterInfo; - MethodType = ClientMethodType.Initializer; - } - else - { - Parameter = methodInfo.GetParameters() - .First(p => p.ParameterType.BaseType == typeof(MulticastDelegate)); - MethodType = ClientMethodType.Fluent; - } -} - } ----- - diff --git a/docs/code-standards/naming-conventions.asciidoc b/docs/code-standards/naming-conventions.asciidoc deleted file mode 100644 index 63fcdcc4cd3..00000000000 --- a/docs/code-standards/naming-conventions.asciidoc +++ /dev/null @@ -1,271 +0,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/CodeStandards/NamingConventions.doc.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! -//// - -[[naming-conventions]] -== Naming Conventions - -NEST uses the following naming conventions (with _some_ exceptions). - -=== Class Names - -Abstract class names should end with a `Base` suffix - -[source,csharp] ----- -var exceptions = new[] -{ - typeof(DateMath) -}; - -var abstractClassesNotEndingInBase = typeof(IRequest).Assembly.GetTypes() - .Where(t => t.IsClass && t.IsAbstract && !t.IsSealed && !exceptions.Contains(t)) - //when testing nuget package against merged internalize json.net skip its types. - .Where(t => !t.Namespace.StartsWith("Nest.Json")) - .Where(t => !t.Namespace.StartsWith("Elastic.Internal")) - .Where(t => !t.Name.Split('`')[0].EndsWith("Base")) - .Select(t => t.Name.Split('`')[0]) - .ToList(); - -abstractClassesNotEndingInBase.Should().BeEmpty(); ----- - -Class names that end with `Base` suffix are abstract - -[source,csharp] ----- -var exceptions = new[] { typeof(DateMath) }; - -var baseClassesNotAbstract = typeof(IRequest).Assembly.GetTypes() - .Where(t => t.IsClass && !exceptions.Contains(t)) - .Where(t => t.Name.Split('`')[0].EndsWith("Base")) - .Where(t => !t.IsAbstract) - .Select(t => t.Name.Split('`')[0]) - .ToList(); - -baseClassesNotAbstract.Should().BeEmpty(); ----- - -=== Requests and Responses - -Request class names should end with `Request` - -[source,csharp] ----- -var types = typeof(IRequest).Assembly.GetTypes(); -var requestsNotEndingInRequest = types - .Where(t => typeof(IRequest).IsAssignableFrom(t) && !t.IsAbstract) - .Where(t => !typeof(IDescriptor).IsAssignableFrom(t)) - .Where(t => !t.Name.Split('`')[0].EndsWith("Request")) - .Select(t => t.Name.Split('`')[0]) - .ToList(); - -requestsNotEndingInRequest.Should().BeEmpty(); ----- - -Response class names should end with `Response` - -[source,csharp] ----- -var types = typeof(IRequest).Assembly.GetTypes(); -var responsesNotEndingInResponse = types - .Where(t => typeof(IResponse).IsAssignableFrom(t) && !t.IsAbstract) - .Where(t => !t.Name.Split('`')[0].EndsWith("Response")) - .Select(t => t.Name.Split('`')[0]) - .ToList(); - -responsesNotEndingInResponse.Should().BeEmpty(); ----- - -Request and Response class names should be one to one in *most* cases. -e.g. `ValidateRequest` => `ValidateResponse`, and not `ValidateQueryRequest` => `ValidateResponse` -There are a few exceptions to this rule, most notably the `Cat` prefixed requests and -the `Exists` requests. - -[source,csharp] ----- -var exceptions = new[] <1> -{ - //TODO These are new API's should be removed, also add test that no request or response starts with Xpack - //only XPack - //TODO MAP THIS - //typeof(RankEvalRequest), - //TODO add unit tests that we have no requests starting with Exists - typeof(SourceExistsRequest), - typeof(SourceExistsRequest<>), - typeof(DocumentExistsRequest), - typeof(DocumentExistsRequest<>), - typeof(AliasExistsRequest), - typeof(IndexExistsRequest), - typeof(IndexTemplateExistsRequest), - typeof(SearchTemplateRequest), - typeof(SearchTemplateRequest<>), - typeof(ScrollRequest), - typeof(SourceRequest), - typeof(SourceRequest<>), - typeof(ValidateQueryRequest<>), - typeof(GetAliasRequest), - typeof(IndicesShardStoresRequest), - typeof(RenderSearchTemplateRequest), - typeof(MultiSearchTemplateRequest), - typeof(CreateRequest<>), - typeof(DeleteByQueryRethrottleRequest), // uses ListTasksResponse - typeof(UpdateByQueryRethrottleRequest) // uses ListTasksResponse -}; - -var types = typeof(IRequest).Assembly.GetTypes(); - -var requests = new HashSet(types - .Where(t => - t.IsClass && - !t.IsAbstract && - typeof(IRequest).IsAssignableFrom(t) && - !typeof(IDescriptor).IsAssignableFrom(t) - && !t.Name.StartsWith("Cat") - && !exceptions.Contains(t)) - .Select(t => t.Name.Split('`')[0].Replace("Request", "")) -); - -var responses = types - .Where(t => t.IsClass && !t.IsAbstract && typeof(IResponse).IsAssignableFrom(t)) - .Select(t => t.Name.Split('`')[0].Replace("Response", "")); - -requests.Except(responses).Should().BeEmpty(); - -var nestAssembly = typeof(IElasticClient).Assembly; - -var exceptions = new List -{ - nestAssembly.GetType("System.AssemblyVersionInformation", throwOnError: false), - nestAssembly.GetType("System.Runtime.Serialization.Formatters.FormatterAssemblyStyle", throwOnError: false), - nestAssembly.GetType("System.ComponentModel.Browsable", throwOnError: false), - nestAssembly.GetType("Microsoft.CodeAnalysis.EmbeddedAttribute", throwOnError: false), - nestAssembly.GetType("System.Runtime.CompilerServices.IsReadOnlyAttribute", throwOnError: false), -}; - -var types = nestAssembly.GetTypes(); -var typesNotInNestNamespace = types - .Where(t => t != null) - .Where(t => !exceptions.Contains(t)) - .Where(t => t.Namespace != "Nest") - //when testing nuget package against merged internalize json.net skip its types. - .Where(t => !string.IsNullOrWhiteSpace(t.Namespace) && !t.Namespace.StartsWith("Nest.Json")) - .Where(t => !string.IsNullOrWhiteSpace(t.Namespace) && !t.Namespace.StartsWith("Elastic.Internal")) - .Where(t => !string.IsNullOrWhiteSpace(t.Namespace) && !t.Namespace.StartsWith("Nest.Specification")) - .Where(t => !string.IsNullOrWhiteSpace(t.Namespace) && !t.Namespace.StartsWith("Nest.Utf8Json")) - .Where(t => !t.Name.StartsWith("<")) - .Where(t => IsValidTypeNameOrIdentifier(t.Name, true)) - .ToList(); - -typesNotInNestNamespace.Should().BeEmpty(); - -var elasticsearchNetAssembly = typeof(IElasticLowLevelClient).Assembly; - -var exceptions = new List -{ - elasticsearchNetAssembly.GetType("Microsoft.CodeAnalysis.EmbeddedAttribute"), - elasticsearchNetAssembly.GetType("System.Runtime.CompilerServices.IsReadOnlyAttribute"), - elasticsearchNetAssembly.GetType("System.AssemblyVersionInformation"), - elasticsearchNetAssembly.GetType("System.FormattableString"), - elasticsearchNetAssembly.GetType("System.Runtime.CompilerServices.FormattableStringFactory"), - elasticsearchNetAssembly.GetType("System.Runtime.CompilerServices.FormattableStringFactory"), - elasticsearchNetAssembly.GetType("System.Runtime.CompilerServices.FormattableStringFactory"), - elasticsearchNetAssembly.GetType("Purify.Purifier"), - elasticsearchNetAssembly.GetType("Purify.Purifier+IPurifier"), - elasticsearchNetAssembly.GetType("Purify.Purifier+PurifierDotNet"), - elasticsearchNetAssembly.GetType("Purify.Purifier+PurifierMono"), - elasticsearchNetAssembly.GetType("Purify.Purifier+UriInfo"), - elasticsearchNetAssembly.GetType("System.ComponentModel.Browsable") -}; - -var types = elasticsearchNetAssembly.GetTypes(); -var typesNotIElasticsearchNetNamespace = types - .Where(t => !exceptions.Contains(t)) - .Where(t => t.Namespace != null) - .Where(t => t.Namespace != "Elasticsearch.Net" && !t.Namespace.StartsWith("Elasticsearch.Net.Specification")) - .Where(t => !t.Namespace.StartsWith("Nest.Utf8Json")) - .Where(t => !t.Namespace.StartsWith("Elasticsearch.Net.Extensions")) - .Where(t => !t.Namespace.StartsWith("Elasticsearch.Net.Diagnostics")) - .Where(t => !t.Namespace.StartsWith("System.Runtime.CompilerServices")) - .Where(t => !t.Name.StartsWith("<")) - .Where(t => IsValidTypeNameOrIdentifier(t.Name, true)) - .ToList(); - -typesNotIElasticsearchNetNamespace.Should().BeEmpty(); - -var nextMustBeStartChar = true; -if (value.Length == 0) - return false; -for (var index = 0; index < value.Length; ++index) -{ - var character = value[index]; - var unicodeCategory = char.GetUnicodeCategory(character); - - switch (unicodeCategory) - { - case UnicodeCategory.UppercaseLetter: - case UnicodeCategory.LowercaseLetter: - case UnicodeCategory.TitlecaseLetter: - case UnicodeCategory.ModifierLetter: - case UnicodeCategory.OtherLetter: - case UnicodeCategory.LetterNumber: - nextMustBeStartChar = false; - break; - case UnicodeCategory.NonSpacingMark: - case UnicodeCategory.SpacingCombiningMark: - case UnicodeCategory.DecimalDigitNumber: - case UnicodeCategory.ConnectorPunctuation: - if (nextMustBeStartChar && (int)character != 95) - return false; - nextMustBeStartChar = false; - break; - default: - if (!isTypeName || !IsSpecialTypeChar(character, ref nextMustBeStartChar)) - return false; - break; - } -} -return true; - -if ((uint)ch <= 62U) -{ - switch (ch) - { - case '$': - case '&': - case '*': - case '+': - case ',': - case '-': - case '.': - case ':': - case '<': - case '>': - break; - default: - goto label_6; - } -} -else if ((int)ch != 91 && (int)ch != 93) -{ - if ((int)ch == 96) - return true; - goto label_6; -} -nextMustBeStartChar = true; -return true; -label_6: -return false; ----- -<1> _Exceptions to the rule_ - diff --git a/docs/code-standards/queries.asciidoc b/docs/code-standards/queries.asciidoc deleted file mode 100644 index 802af1a9d78..00000000000 --- a/docs/code-standards/queries.asciidoc +++ /dev/null @@ -1,62 +0,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/CodeStandards/Queries.doc.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! -//// - -[[queries]] -=== Queries - -[source,csharp] ----- -var properties = from p in QueryProperties - let a = p.GetCustomAttributes() - .Concat(p.GetCustomAttributes()) - where a.Count() != 1 - select p; -properties.Should().BeEmpty(); - -var staticProperties = from p in typeof(Query<>).GetMethods() - let name = p.Name.StartsWith("GeoShape") ? "GeoShape" : p.Name - select name; - -var placeHolders = QueryPlaceHolderProperties.Select(p => p.Name.StartsWith("GeoShape") ? "GeoShape" : p.Name); -staticProperties.Distinct().Should().Contain(placeHolders.Distinct()); - -var fluentMethods = from p in typeof(QueryContainerDescriptor<>).GetMethods() - let name = p.Name.StartsWith("GeoShape") ? "GeoShape" : p.Name - select name; - -var placeHolders = QueryPlaceHolderProperties.Select(p => p.Name.StartsWith("GeoShape") ? "GeoShape" : p.Name); -fluentMethods.Distinct().Should().Contain(placeHolders.Distinct()); - -var skipQueryImplementations = new[] -{ - typeof(IFieldNameQuery), - typeof(IFuzzyQuery<,>), - typeof(IConditionlessQuery), - typeof(ISpanGapQuery) -}; -var queries = typeof(IQuery).Assembly.ExportedTypes - .Where(t => t.IsInterface && typeof(IQuery).IsAssignableFrom(t)) - .Where(t => !skipQueryImplementations.Contains(t)) - .ToList(); -queries.Should().NotBeEmpty(); - -var visitMethods = typeof(IQueryVisitor).GetMethods().Where(m => m.Name == "Visit"); -visitMethods.Should().NotBeEmpty(); -var missingTypes = from q in queries - let visitMethod = visitMethods.FirstOrDefault(m => m.GetParameters().First().ParameterType == q) - where visitMethod == null - select q; -missingTypes.Should().BeEmpty(); ----- - diff --git a/docs/code-standards/requests.asciidoc b/docs/code-standards/requests.asciidoc deleted file mode 100644 index 16c70994ba0..00000000000 --- a/docs/code-standards/requests.asciidoc +++ /dev/null @@ -1,50 +0,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/CodeStandards/Requests.doc.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! -//// - -[[requests]] -=== Requests - -Combining base URI with the API path results in a URI that respects the relative path defined in base URI - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var settings = new ConnectionSettings(pool, new InMemoryConnection()); -var client = new ElasticClient(settings); -var searchResponse = client.Search(s => s.AllIndices()); - -searchResponse.ApiCall.Uri.ToString().Should().Be("http://localhost:9200/_all/_search?typed_keys=true"); - -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200/")); -var settings = new ConnectionSettings(pool, new InMemoryConnection()); -var client = new ElasticClient(settings); -var searchResponse = client.Search(s => s.AllIndices()); - -searchResponse.ApiCall.Uri.ToString().Should().Be("http://localhost:9200/_all/_search?typed_keys=true"); - -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200/elasticsearch")); -var settings = new ConnectionSettings(pool, new InMemoryConnection()); -var client = new ElasticClient(settings); -var searchResponse = client.Search(s => s.AllIndices()); - -searchResponse.ApiCall.Uri.ToString().Should().Be("http://localhost:9200/elasticsearch/_all/_search?typed_keys=true"); - -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200/elasticsearch/")); -var settings = new ConnectionSettings(pool, new InMemoryConnection()); -var client = new ElasticClient(settings); -var searchResponse = client.Search(s => s.AllIndices()); - -searchResponse.ApiCall.Uri.ToString().Should().Be("http://localhost:9200/elasticsearch/_all/_search?typed_keys=true"); ----- - diff --git a/docs/code-standards/responses.asciidoc b/docs/code-standards/responses.asciidoc deleted file mode 100644 index 3bf97af5af5..00000000000 --- a/docs/code-standards/responses.asciidoc +++ /dev/null @@ -1,114 +0,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/CodeStandards/Responses.doc.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! -//// - -[[responses]] -=== Responses - -Every collection property on a Response type should be either IReadOnlyCollection or IReadOnlyDictionary - -[source,csharp] ----- -var exceptions = new HashSet -{ - typeof(ITypeMapping).GetProperty(nameof(ITypeMapping.DynamicDateFormats)), - typeof(ITypeMapping).GetProperty(nameof(ITypeMapping.Meta)), - typeof(TypeMapping).GetProperty(nameof(TypeMapping.DynamicDateFormats)), - typeof(TypeMapping).GetProperty(nameof(TypeMapping.Meta)), - typeof(DynamicDictionary).GetProperty(nameof(DynamicDictionary.Keys)), - typeof(DynamicDictionary).GetProperty(nameof(DynamicDictionary.Values)), - typeof(BulkResponse).GetProperty(nameof(BulkResponse.ItemsWithErrors)), - typeof(StartBasicLicenseResponse).GetProperty(nameof(StartBasicLicenseResponse.Acknowledge)), - typeof(FieldCapabilitiesResponse).GetProperty(nameof(FieldCapabilitiesResponse.Fields)), - typeof(MultiSearchResponse).GetProperty(nameof(MultiSearchResponse.AllResponses)), - typeof(DynamicDictionary).GetProperty(nameof(DynamicDictionary.Keys)), - typeof(DynamicDictionary).GetProperty(nameof(DynamicDictionary.Values)), -}; - -var responseInterfaceTypes = from t in typeof(IResponse).Assembly.Types() - where t.IsInterface && typeof(IResponse).IsAssignableFrom(t) - select t; - -var ruleBreakers = new List(); -var seenTypes = new HashSet(); -foreach (var responseType in responseInterfaceTypes) -{ - FindPropertiesBreakingRule(responseType, exceptions, seenTypes, ruleBreakers); -} - -ruleBreakers.Should().BeEmpty(); - -var responses = from t in typeof(IResponse).Assembly.ExportedTypes - where t.IsClass && typeof(IResponse).IsAssignableFrom(t) - select t; - -var offenders = new List(); -foreach (var r in responses) -{ - var interfaces = r.GetInterfaces(); - var sameNamedInterface = interfaces.FirstOrDefault(i => i.Name.StartsWith("I" + r.Name)); - if (sameNamedInterface != null) - { - if (!sameNamedInterface.IsGenericType) - { - offenders.Add(sameNamedInterface.Name + " is not generic and thus can not be an allow covariant interface"); - continue; - } - else - { - var generic = sameNamedInterface.GetGenericTypeDefinition(); - var genericArg = generic.GetGenericArguments() - .FirstOrDefault(a => a.GenericParameterAttributes.HasFlag(GenericParameterAttributes.Covariant)); - if (genericArg == null) - offenders.Add(sameNamedInterface.Name + " is generic but not of its type arguments are covariant"); - } - } -} -offenders.Should().BeEmpty("Responses may only have a same named interface if that interface is used to provide covariance"); - -if (!seenTypes.Add(type)) return; - -var properties = type.GetProperties(); -foreach (var propertyInfo in properties) -{ - if (exceptions.Contains(propertyInfo)) - continue; - - if (typeof(IDictionary).IsAssignableFrom(propertyInfo.PropertyType) || - typeof(ICollection).IsAssignableFrom(propertyInfo.PropertyType)) - { - ruleBreakers.Add($"{type.FullName}.{propertyInfo.Name} is of type {propertyInfo.PropertyType.Name}"); - } - else if (propertyInfo.PropertyType.IsGenericType) - { - var genericTypeDefinition = propertyInfo.PropertyType.GetGenericTypeDefinition(); - if (genericTypeDefinition == typeof(IDictionary<,>) || - genericTypeDefinition == typeof(Dictionary<,>) || - genericTypeDefinition == typeof(IEnumerable<>) || - genericTypeDefinition == typeof(IList<>) || - genericTypeDefinition == typeof(ICollection<>)) - { - ruleBreakers.Add($"{type.FullName}.{propertyInfo.Name} is of type {propertyInfo.PropertyType.Name}"); - } - } - else if (propertyInfo.PropertyType.IsClass && - (propertyInfo.PropertyType.Namespace.StartsWith("Nest") || propertyInfo.PropertyType.Namespace.StartsWith("Elasticsearch.Net")) - //Do not traverse known response dictionaries - && !ResponseDictionaries.Contains(propertyInfo.PropertyType) - ) - { - FindPropertiesBreakingRule(propertyInfo.PropertyType, exceptions, seenTypes, ruleBreakers); - } -} ----- - diff --git a/docs/code-standards/serialization/formatters.asciidoc b/docs/code-standards/serialization/formatters.asciidoc deleted file mode 100644 index 26953c2988b..00000000000 --- a/docs/code-standards/serialization/formatters.asciidoc +++ /dev/null @@ -1,86 +0,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/CodeStandards/Serialization/Formatters.doc.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! -//// - -[[formatters]] -=== Formatters - -[source,csharp] ----- -var formatters = typeof(IElasticClient).Assembly.GetTypes() - .Concat(typeof(IElasticLowLevelClient).Assembly.GetTypes()) - .Where(t => t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IJsonFormatter<>))) - .ToList(); -var visible = new List(); -foreach (var formatter in formatters) -{ - if (formatter.IsVisible) - visible.Add(formatter.Name); -} -visible.Should().BeEmpty(); - -Type GetFormatterTargetType(Type t) -{ - var attribute = t.GetCustomAttribute(); - - if (attribute == null) - return null; - - var formatterType = attribute.FormatterType; - - if (formatterType.IsGenericType && !formatterType.IsConstructedGenericType) - return null; - - return formatterType.GetInterfaces() - .Where(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IJsonFormatter<>)) - .Select(i => i.GetGenericArguments()[0]) - .Single(); -} - -var typesAndProperties = - from t in typeof(IElasticClient).Assembly.GetTypes().Concat(typeof(IElasticLowLevelClient).Assembly.GetTypes()) - let p = t.GetProperties() - let typeHasFormatter = t.GetCustomAttribute(false) != null - let propertiesHaveFormatter = p.Any(pp => pp.GetCustomAttribute(false) != null) - where typeHasFormatter || propertiesHaveFormatter - select new { Type = t, TypeHasFormatter = typeHasFormatter, Properties = p, PropertiesHaveFormatter = propertiesHaveFormatter }; - -var invalid = new List(); - -foreach (var typeAndProperties in typesAndProperties) -{ - if (typeAndProperties.TypeHasFormatter) - { - var t = typeAndProperties.Type; - var f = GetFormatterTargetType(t); - - if (f != null && t != f) - invalid.Add($"{t.FullName} has IJsonFormatter<{f.FullName}>"); - } - - if (typeAndProperties.PropertiesHaveFormatter) - { - foreach (var property in typeAndProperties.Properties) - { - var t = property.PropertyType; - var f = GetFormatterTargetType(t); - - if (f != null && t != f) - invalid.Add($"property {property.Name} on {typeAndProperties.Type.FullName} has IJsonFormatter<{f.FullName}>"); - } - } -} - -invalid.Should().BeEmpty(); ----- - diff --git a/docs/code-standards/serialization/properties.asciidoc b/docs/code-standards/serialization/properties.asciidoc deleted file mode 100644 index 7cd96b4d1f8..00000000000 --- a/docs/code-standards/serialization/properties.asciidoc +++ /dev/null @@ -1,36 +0,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/CodeStandards/Serialization/Properties.doc.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! -//// - -[[properties]] -=== Properties - -Our Utf8Json formatter resolver picks up attributes set on the interface - -[source,csharp] ----- -var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); -var settings = new ConnectionSettings(pool, new InMemoryConnection()); -var c = new ElasticClient(settings); - - -var serializer = c.RequestResponseSerializer; -var serialized = serializer.SerializeToString(new Nest.Analysis { CharFilters = new CharFilters() }); -serialized.Should().NotContain("char_filters").And.NotContain("charFilters"); -serialized.Should().Contain("char_filter"); - -serialized = serializer.SerializeToString(new AnalysisDescriptor().CharFilters(cf=>cf)); -serialized.Should().NotContain("char_filters").And.NotContain("charFilters"); -serialized.Should().Contain("char_filter"); ----- - diff --git a/docs/common-options/date-math/date-math-expressions.asciidoc b/docs/common-options/date-math/date-math-expressions.asciidoc deleted file mode 100644 index d33b852ec96..00000000000 --- a/docs/common-options/date-math/date-math-expressions.asciidoc +++ /dev/null @@ -1,252 +0,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/CommonOptions/DateMath/DateMathExpressions.doc.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! -//// - -[[date-math-expressions]] -=== Date math expressions - -The date type supports using date math expression when using it in a query/filter -Whenever durations need to be specified, eg for a timeout parameter, the duration can be specified - -The expression starts with an "anchor" date, which can be either now or a date string (in the applicable format) ending with `||`. -It can be followed by a math expression, supporting `+`, `-` and `/` (rounding). -The units supported are - -* `y` (year) - -* `M` (month) - -* `w` (week) - -* `d` (day) - -* `h` (hour) - -* `m` (minute) - -* `s` (second) - -:datemath: {ref_current}/common-options.html#date-math - -Be sure to read the Elasticsearch documentation on {datemath}[Date Math]. - -==== Simple expressions - -You can create simple expressions using any of the static methods on `DateMath` - -[source,csharp] ----- -Expect("2015-05-05T00:00:00").WhenSerializing(Nest.DateMath.Anchored(new DateTime(2015,05, 05))); ----- - -strings implicitly convert to `DateMath` - -[source,csharp] ----- -Expect("now").WhenSerializing("now"); ----- - -but are lenient to bad math expressions - -[source,csharp] ----- -var nonsense = "now||*asdaqwe"; ----- - -the resulting date math will assume the whole string is the anchor - -[source,csharp] ----- -Expect(nonsense) - .WhenSerializing(nonsense) - .AssertSubject(dateMath => ((IDateMath)dateMath) - .Anchor.Match( - d => d.Should().NotBe(default(DateTime)), - s => s.Should().Be(nonsense) - ) - ); ----- - -`DateTime` also implicitly convert to simple date math expressions; the resulting -anchor will be an actual `DateTime`, even after a serialization/deserialization round trip - -[source,csharp] ----- -var date = new DateTime(2015, 05, 05); ----- - -will serialize to - -[source,javascript] ----- -"2015-05-05T00:00:00" ----- - -When the `DateTime` is local or UTC, the time zone information is included. -For example, for a UTC `DateTime` - -[source,csharp] ----- -var utcDate = new DateTime(2015, 05, 05, 0, 0, 0, DateTimeKind.Utc); ----- - -will serialize to - -[source,javascript] ----- -"2015-05-05T00:00:00Z" ----- - -==== Complex expressions - -Ranges can be chained on to simple expressions - -[source,csharp] ----- -Expect("now+1d").WhenSerializing( - Nest.DateMath.Now.Add("1d")); ----- - -Including multiple operations - -[source,csharp] ----- -Expect("now+1d-1m").WhenSerializing( - Nest.DateMath.Now.Add("1d").Subtract(TimeSpan.FromMinutes(1))); ----- - -A rounding value can be chained to the end of the expression, after which no more ranges can be appended - -[source,csharp] ----- -Expect("now+1d-1m/d").WhenSerializing( - Nest.DateMath.Now.Add("1d") - .Subtract(TimeSpan.FromMinutes(1)) - .RoundTo(DateMathTimeUnit.Day)); ----- - -When anchoring dates, a `||` needs to be appended as clear separator between the anchor and ranges. -Again, multiple ranges can be chained - -[source,csharp] ----- -Expect("2015-05-05T00:00:00||+1d-1m").WhenSerializing( - Nest.DateMath.Anchored(new DateTime(2015,05,05)) - .Add("1d") - .Subtract(TimeSpan.FromMinutes(1))); ----- - -==== Fractional times - -Date math expressions within Elasticsearch do not support fractional numbers. To make working with Date math -easier within NEST, conversions from `string`, `TimeSpan` and `double` will convert a fractional value to the -largest whole number value and unit, rounded to the nearest second. - -[source,csharp] ----- -Expect("now+1w").WhenSerializing(Nest.DateMath.Now.Add(TimeSpan.FromDays(7))); - -Expect("now+1w").WhenSerializing(Nest.DateMath.Now.Add("1w")); - -Expect("now+1w").WhenSerializing(Nest.DateMath.Now.Add(604800000)); - -Expect("now+7d").WhenSerializing(Nest.DateMath.Now.Add("7d")); - -Expect("now+30h").WhenSerializing(Nest.DateMath.Now.Add(TimeSpan.FromHours(30))); - -Expect("now+30h").WhenSerializing(Nest.DateMath.Now.Add("1.25d")); - -Expect("now+90001s").WhenSerializing( - Nest.DateMath.Now.Add(TimeSpan.FromHours(25).Add(TimeSpan.FromSeconds(1)))); - -Expect("now+90000s").WhenSerializing( - Nest.DateMath.Now.Add(TimeSpan.FromHours(25).Add(TimeSpan.FromMilliseconds(1)))); - -Expect("now+1y").WhenSerializing(Nest.DateMath.Now.Add("1y")); - -Expect("now+12M").WhenSerializing(Nest.DateMath.Now.Add("12M")); - -Expect("now+18M").WhenSerializing(Nest.DateMath.Now.Add("1.5y")); - -Expect("now+52w").WhenSerializing(Nest.DateMath.Now.Add(TimeSpan.FromDays(7 * 52))); ----- - -==== Rounding - -Rounding can be controlled using the constructor, and passing a value for rounding - -[source,csharp] ----- -Expect("now+2s").WhenSerializing( - Nest.DateMath.Now.Add(new DateMathTime("2.5s", MidpointRounding.ToEven))); - -Expect("now+3s").WhenSerializing( - Nest.DateMath.Now.Add(new DateMathTime("2.5s", MidpointRounding.AwayFromZero))); - -Expect("now+0s").WhenSerializing( - Nest.DateMath.Now.Add(new DateMathTime(500, MidpointRounding.ToEven))); - -Expect("now+1s").WhenSerializing( - Nest.DateMath.Now.Add(new DateMathTime(500, MidpointRounding.AwayFromZero))); ----- - -==== Equality and Comparisons - -`DateMathTime` supports implements equality and comparison - -[source,csharp] ----- -DateMathTime twoSeconds = new DateMathTime(2, DateMathTimeUnit.Second); -DateMathTime twoSecondsFromString = "2s"; -DateMathTime twoSecondsFromTimeSpan = TimeSpan.FromSeconds(2); -DateMathTime twoSecondsFromDouble = 2000; - -twoSeconds.Should().Be(twoSecondsFromString); -twoSeconds.Should().Be(twoSecondsFromTimeSpan); -twoSeconds.Should().Be(twoSecondsFromDouble); - -DateMathTime threeSecondsFromString = "3s"; -DateMathTime oneMinuteFromTimeSpan = TimeSpan.FromMinutes(1); - -(threeSecondsFromString > twoSecondsFromString).Should().BeTrue(); -(oneMinuteFromTimeSpan > threeSecondsFromString).Should().BeTrue(); ----- - -Since years and months do not -contain exact values - -* A year is approximated to 365 days - -* A month is approximated to (365 / 12) days - -[source,csharp] ----- -DateMathTime oneYear = new DateMathTime(1, DateMathTimeUnit.Year); -DateMathTime oneYearFromString = "1y"; -DateMathTime twelveMonths = new DateMathTime(12, DateMathTimeUnit.Month); -DateMathTime twelveMonthsFromString = "12M"; - -oneYear.Should().Be(oneYearFromString); -oneYear.Should().Be(twelveMonths); -twelveMonths.Should().Be(twelveMonthsFromString); - -DateMathTime thirteenMonths = new DateMathTime(13, DateMathTimeUnit.Month); -DateMathTime thirteenMonthsFromString = "13M"; -DateMathTime fiftyTwoWeeks = "52w"; - -(oneYear < thirteenMonths).Should().BeTrue(); -(oneYear < thirteenMonthsFromString).Should().BeTrue(); -(twelveMonths > fiftyTwoWeeks).Should().BeTrue(); -(oneYear > fiftyTwoWeeks).Should().BeTrue(); ----- - diff --git a/docs/common-options/distance-unit/distance-units.asciidoc b/docs/common-options/distance-unit/distance-units.asciidoc deleted file mode 100644 index 2596ee06d06..00000000000 --- a/docs/common-options/distance-unit/distance-units.asciidoc +++ /dev/null @@ -1,129 +0,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/CommonOptions/DistanceUnit/DistanceUnits.doc.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! -//// - -[[distance-units]] -=== Distance units - -Whenever distances need to be specified, e.g. for a {ref_current}/query-dsl-geo-distance-query.html[geo distance query], -the distance unit can be specified as a double number representing distance in meters, as a new instance of -a `Distance`, or as a string of the form number and distance unit e.g. "`2.72km`" - -NEST uses a `Distance` type to strongly type distance units and there are several ways to construct one. - -==== Constructor - -The most straight forward way to construct a `Distance` is through its constructor - -[source,csharp] ----- -var unitComposed = new Distance(25); -var unitComposedWithUnits = new Distance(25, Nest.DistanceUnit.Meters); ----- - -`Distance` serializes to a string composed of a factor and distance unit. -The factor is a double so always has at least one decimal place when serialized - -[source,csharp] ----- -Expect("25m") - .WhenSerializing(unitComposed) - .WhenSerializing(unitComposedWithUnits); ----- - -==== Implicit conversion - -Alternatively a distance unit `string` can be assigned to a `Distance`, resulting in an implicit conversion to a new `Distance` instance. -If no `DistanceUnit` is specified, the default distance unit is meters - -[source,csharp] ----- -Distance distanceString = "25"; -Distance distanceStringWithUnits = "25m"; - -Expect("25m") - .WhenSerializing(distanceString) - .WhenSerializing(distanceStringWithUnits); ----- - -==== Supported units - -A number of distance units are supported, from millimeters to nautical miles - -===== Metric - -`mm` (Millimeters) - -[source,csharp] ----- -Expect("2mm").WhenSerializing(new Distance(2, Nest.DistanceUnit.Millimeters)); ----- - -`cm` (Centimeters) - -[source,csharp] ----- -Expect("123.456cm").WhenSerializing(new Distance(123.456, Nest.DistanceUnit.Centimeters)); ----- - -`m` (Meters) - -[source,csharp] ----- -Expect("400m").WhenSerializing(new Distance(400, Nest.DistanceUnit.Meters)); ----- - -`km` (Kilometers) - -[source,csharp] ----- -Expect("0.1km").WhenSerializing(new Distance(0.1, Nest.DistanceUnit.Kilometers)); ----- - -===== Imperial - -`in` (Inches) - -[source,csharp] ----- -Expect("43.23in").WhenSerializing(new Distance(43.23, Nest.DistanceUnit.Inch)); ----- - -`ft` (Feet) - -[source,csharp] ----- -Expect("3.33ft").WhenSerializing(new Distance(3.33, Nest.DistanceUnit.Feet)); ----- - -`yd` (Yards) - -[source,csharp] ----- -Expect("9yd").WhenSerializing(new Distance(9, Nest.DistanceUnit.Yards)); ----- - -`mi` (Miles) - -[source,csharp] ----- -Expect("0.62mi").WhenSerializing(new Distance(0.62, Nest.DistanceUnit.Miles)); ----- - -`nmi` or `NM` (Nautical Miles) - -[source,csharp] ----- -Expect("45.5nmi").WhenSerializing(new Distance(45.5, Nest.DistanceUnit.NauticalMiles)); ----- - diff --git a/docs/common-options/time-unit/time-units.asciidoc b/docs/common-options/time-unit/time-units.asciidoc deleted file mode 100644 index 2579f929829..00000000000 --- a/docs/common-options/time-unit/time-units.asciidoc +++ /dev/null @@ -1,201 +0,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/CommonOptions/TimeUnit/TimeUnits.doc.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! -//// - -[[time-units]] -=== Time units - -Whenever durations need to be specified, eg for a timeout parameter, the duration can be specified -as a whole number representing time in milliseconds, or as a time value like `2d` for 2 days. - -NEST uses a `Time` type to strongly type this and there are several ways to construct one. - -==== Constructor - -The most straight forward way to construct a `Time` is through its constructor - -[source,csharp] ----- -var unitString = new Time("2d"); -var unitComposed = new Time(2, Nest.TimeUnit.Day); -var unitTimeSpan = new Time(TimeSpan.FromDays(2)); -var unitMilliseconds = new Time(1000 * 60 * 60 * 24 * 2); ----- - -When serializing Time constructed from - -* a string - -* milliseconds (as a double) - -* composition of factor and interval - -* a `TimeSpan` - -the expression will be serialized to a time unit string composed of the factor and interval e.g. `2d` - -[source,csharp] ----- -Expect("2d") - .WhenSerializing(unitString) - .WhenSerializing(unitComposed) - .WhenSerializing(unitTimeSpan) - .WhenSerializing(unitMilliseconds); ----- - -The `Milliseconds` property on `Time` is calculated even when not using the constructor that takes a `double` - -[source,csharp] ----- -unitMilliseconds.Milliseconds.Should().Be(1000*60*60*24*2); -unitComposed.Milliseconds.Should().Be(1000*60*60*24*2); -unitTimeSpan.Milliseconds.Should().Be(1000*60*60*24*2); -unitString.Milliseconds.Should().Be(1000*60*60*24*2); ----- - -==== Implicit conversion - -There are implicit conversions from `string`, `TimeSpan` and `double` to an instance of `Time`, making them -easier to work with - -[source,csharp] ----- -Time oneMinute = "1m"; -Time fourteenDays = TimeSpan.FromDays(14); -Time twoDays = 1000*60*60*24*2; - -Expect("1m").WhenSerializing(oneMinute); -Expect("14d").WhenSerializing(fourteenDays); -Expect("2d").WhenSerializing(twoDays); ----- - -==== Equality and Comparison - -Comparisons on the expressions can be performed since Milliseconds are calculated -even when values are not passed as `double` milliseconds - -[source,csharp] ----- -Time fourteenDays = TimeSpan.FromDays(14); -fourteenDays.Milliseconds.Should().Be(1209600000); - -Time twoDays = 1000*60*60*24*2; - -fourteenDays.Should().BeGreaterThan(twoDays); -(fourteenDays > twoDays).Should().BeTrue(); -(twoDays != null).Should().BeTrue(); -(twoDays >= new Time("2d")).Should().BeTrue(); - -twoDays.Should().BeLessThan(fourteenDays); -(twoDays < fourteenDays).Should().BeTrue(); -(twoDays <= fourteenDays).Should().BeTrue(); -(twoDays <= new Time("2d")).Should().BeTrue(); ----- - -Equality can also be performed - -[source,csharp] ----- -twoDays.Should().Be(new Time("2d")); -(twoDays == new Time("2d")).Should().BeTrue(); -(twoDays != new Time("2.1d")).Should().BeTrue(); -(new Time("2.1d") == new Time(TimeSpan.FromDays(2.1))).Should().BeTrue(); ----- - -Equality has down to 1/10 nanosecond precision - -[source,csharp] ----- -Time oneNanosecond = new Time(1, Nest.TimeUnit.Nanoseconds); -Time onePointNoughtNineNanoseconds = "1.09nanos"; -Time onePointOneNanoseconds = "1.1nanos"; - -(oneNanosecond == onePointNoughtNineNanoseconds).Should().BeTrue(); -(oneNanosecond == onePointOneNanoseconds).Should().BeFalse(); ----- - -==== Special Time values - -Elasticsearch has two special values that can sometimes be passed where a `Time` is accepted - -* `0` represented as `Time.Zero` - -* `-1` represented as `Time.MinusOne` - -The following are all equal to `Time.MinusOne` - -[source,csharp] ----- -Time.MinusOne.Should().Be(Time.MinusOne); -new Time("-1").Should().Be(Time.MinusOne); -new Time(-1).Should().Be(Time.MinusOne); -((Time) (-1)).Should().Be(Time.MinusOne); -((Time) "-1").Should().Be(Time.MinusOne); -((Time) (-1)).Should().Be((Time) "-1"); ----- - -Similarly, the following are all equal to `Time.Zero` - -[source,csharp] ----- -Time.Zero.Should().Be(Time.Zero); -new Time("0").Should().Be(Time.Zero); -new Time(0).Should().Be(Time.Zero); -((Time) 0).Should().Be(Time.Zero); -((Time) "0").Should().Be(Time.Zero); -((Time) 0).Should().Be((Time) "0"); ----- - -Special Time values `0` and `-1` can be compared against other Time values -although admittedly, this is a tad nonsensical. - -[source,csharp] ----- -var twoDays = new Time(2, Nest.TimeUnit.Day); -Time.MinusOne.Should().BeLessThan(Time.Zero); -Time.Zero.Should().BeGreaterThan(Time.MinusOne); -Time.Zero.Should().BeLessThan(twoDays); -Time.MinusOne.Should().BeLessThan(twoDays); ----- - -If there is a need to construct a time of -1ms or 0ms, use the constructor -that accepts a factor and time unit, or specify a string with ms time units - -[source,csharp] ----- -(new Time(-1, Nest.TimeUnit.Millisecond) == new Time("-1ms")).Should().BeTrue(); -(new Time(0, Nest.TimeUnit.Millisecond) == new Time("0ms")).Should().BeTrue(); ----- - -==== Units of Time - -Where Units of Time can be specified as a union of either a `DateInterval` or `Time`, -a `DateInterval` or `Time` may be passed which will be implicitly converted to a -`Union`, the serialized form of which represents the initial value -passed - -[source,csharp] ----- -Expect("month").WhenSerializing>(DateInterval.Month); -Expect("day").WhenSerializing>(DateInterval.Day); -Expect("hour").WhenSerializing>(DateInterval.Hour); -Expect("minute").WhenSerializing>(DateInterval.Minute); -Expect("quarter").WhenSerializing>(DateInterval.Quarter); -Expect("second").WhenSerializing>(DateInterval.Second); -Expect("week").WhenSerializing>(DateInterval.Week); -Expect("year").WhenSerializing>(DateInterval.Year); - -Expect("2d").WhenSerializing>((Time)"2d"); -Expect("11664m").WhenSerializing>((Time)TimeSpan.FromDays(8.1)); ----- - diff --git a/docs/common-options/union/union.asciidoc b/docs/common-options/union/union.asciidoc deleted file mode 100644 index 6392caa59d2..00000000000 --- a/docs/common-options/union/union.asciidoc +++ /dev/null @@ -1,95 +0,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/CommonOptions/Union/Union.doc.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! -//// - -[[union]] -=== Union type - -Some API parameters within Elasticsearch can accept more than one JSON data structure, for example, source filtering on -a search request can accept - -* a `bool` value to disable `_source` retrieval - -* a `string` value representing a wildcard pattern to control what parts of `_source` to return - -* an array of `string` values representing multiple wildcard patterns to control what parts of `_source` to return - -* an `object` with `includes` and `excludes` properties that each accept an array of wildcard patterns to control -what parts of `_source` to include and exclude, respectively. - -That's a lot of different flexibility! NEST includes a `Union` type to make it easier to work with -these kinds of parameters, forming the union of two types, `TFirst` and `TSecond`. - -==== Implicit conversion - -The `Union` has implicit operators to convert from an instance of `TFirst` or `TSecond` to an -instance of `Union`. This is often the easiest way of construction an instance - -[source,csharp] ----- -Union sourceFilterFalse = false; - -Union sourceFilterInterface = new SourceFilter -{ - Includes = new [] { "foo.*" } -}; ----- - -==== Constructor - -Sometimes, the constructor of `Union` may be required in cases where the compiler is -unable to infer the correct implicit conversion - -[source,csharp] ----- -var sourceFilterTrue = new Union(true); - -var sourceFilterInterface = new Union(new SourceFilter -{ - Includes = new [] { "foo.*" } -}); ----- - -==== Match - -The `Match` method can be used to operate on the value encapsulated by the instance of `Union`. -Two delegates are passed; one to operate on a `TFirst` value and the other to operate on a `TSecond` value. - -[source,csharp] ----- -sourceFilterTrue.Match( - b => b.Should().BeTrue(), - s => s.Should().BeNull()); - -sourceFilterInterface.Match( - b => b.Should().BeFalse(), - s => s.Should().NotBeNull()); ----- - -The delegates can also return a value - -[source,csharp] ----- -var serializedFilterTrue = sourceFilterTrue.Match( - b => serializer.SerializeToString(b), - s => null); - -serializedFilterTrue.Should().Be("true"); - -var serializedFilterInterface = sourceFilterTrue.Match( - b => null, - s => serializer.SerializeToString(s)); - -serializedFilterInterface.Should().Be("{\"includes\":[\"foo.*\"]}"); ----- - diff --git a/docs/conventions.asciidoc b/docs/conventions.asciidoc deleted file mode 100644 index 3a7a57e9e4e..00000000000 --- a/docs/conventions.asciidoc +++ /dev/null @@ -1,168 +0,0 @@ -:output-dir: client-concepts/connection-pooling - -:building-blocks: {output-dir}/building-blocks - -:sniffing: {output-dir}/sniffing - -:pinging: {output-dir}/pinging - -:round-robin: {output-dir}/round-robin - -:failover: {output-dir}/failover - -:max-retries: {output-dir}/max-retries - -:request-overrides: {output-dir}/request-overrides - -[[api-conventions]] -= API Conventions - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/conventions.asciidoc. -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! -//// - -[partintro] --- -Conventions that apply to both Elasticsearch.Net and NEST - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - --- - -[[thrown-exceptions]] -== Exceptions - -There are three categories of exceptions that may be thrown: - -`TransportException`:: - -These are known exceptions, either an exception that occurred in the request pipeline -(such as max retries or timeout reached, bad authentication, etc.) or Elasticsearch itself returned an error (could -not parse the request, bad query, missing field, etc.). If it is an Elasticsearch error, the `ServerError` property -on the response will contain the the actual error that was returned. The inner exception will always contain the -root causing exception. - -`UnexpectedTransportException`:: - -These are unknown exceptions, for instance a response from Elasticsearch not -properly deserialized. These are sometimes bugs and {github}/issues[should be reported]. This exception also inherits from `TransportException` -so an additional catch block isn't necessary, but can be helpful in distinguishing between the two. - -Development time exceptions:: - -These are CLR exceptions like `ArgumentException`, `ArgumentOutOfRangeException`, etc. -that are thrown when an API in the client is misused. The `.ThrowExceptions()` setting has no bearing on these as -they will always be thrown, and also should not be handled by a consumer. - -:includes-from-dirs: client-concepts/connection-pooling/exceptions - -include::client-concepts/connection-pooling/exceptions/unexpected-exceptions.asciidoc[] - -include::client-concepts/connection-pooling/exceptions/unrecoverable-exceptions.asciidoc[] - -[[transports-and-pipelines]] -== Transports and pipelines - -* <> - -* <> - -* <> - -* <> - -include::{building-blocks}/transports.asciidoc[] - -include::{building-blocks}/request-pipelines.asciidoc[] - -include::{building-blocks}/date-time-providers.asciidoc[] - -include::{building-blocks}/keeping-track-of-nodes.asciidoc[] - -[[sniffing-behaviour]] -== Sniffing behaviour - -* <> - -* <> - -* <> - -* <> - -include::{sniffing}/on-startup.asciidoc[] - -include::{sniffing}/on-connection-failure.asciidoc[] - -include::{sniffing}/on-stale-cluster-state.asciidoc[] - -include::{sniffing}/role-detection.asciidoc[] - -[[pinging-behaviour]] -== Pinging behaviour - -* <> - -* <> - -include::{pinging}/first-usage.asciidoc[] - -include::{pinging}/revival.asciidoc[] - -include::{round-robin}/round-robin.asciidoc[] - -include::{round-robin}/skip-dead-nodes.asciidoc[] - -[[retries-and-failover]] -== Retries and failover - -The client will fail over and retry requests on other nodes that it knows about within the cluster, -for certain types of failures - -* <> - -* <> - -include::{failover}/falling-over.asciidoc[] - -include::{max-retries}/respects-max-retry.asciidoc[] - -[[request-overrides]] -== Request overrides - -It's possible to override a number of behaviours on a _per-request_ basis - -* <> - -* <> - -* <> - -* <> - -* <> - -include::{request-overrides}/disable-sniff-ping-per-request.asciidoc[] - -include::{request-overrides}/request-timeouts-overrides.asciidoc[] - -include::{request-overrides}/respects-max-retry-overrides.asciidoc[] - -include::{request-overrides}/respects-allowed-status-code.asciidoc[] - -include::{request-overrides}/respects-force-node.asciidoc[] - diff --git a/docs/hadouken-indentation.jpg b/docs/hadouken-indentation.jpg deleted file mode 100644 index afe03b960d1203610f217e1045a22142c0acc720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43939 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 diff --git a/docs/high-level.asciidoc b/docs/high-level.asciidoc deleted file mode 100644 index e44bfda44c0..00000000000 --- a/docs/high-level.asciidoc +++ /dev/null @@ -1,281 +0,0 @@ -:output-dir: client-concepts/high-level - -[[nest]] -= NEST - High level client - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/high-level.asciidoc. -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! -//// - -The high level client, `ElasticClient`, provides a strongly typed query DSL that -maps one-to-one with the {es} query DSL. - -There are a number of conventions that NEST uses for inference of - -* <> - -* <> - -* <> - -* <> and <> - -* <> - -* <> - -As well as a number of types for working with - -* <> - -* <> - -* <> - -* <> - -And features such as - -* <> - -* <> - -include::{output-dir}/getting-started.asciidoc[] - -[[connecting-nest-hl]] -== Connecting - -NEST uses sensible defaults for connecting to and interacting with an Elasticsearch cluster but provides numerous -configuration options and components to change this behaviour - -* <> - -* <> - -* <> - -* <> - -include::client-concepts/connection-pooling/building-blocks/connection-pooling.asciidoc[] - -include::client-concepts/connection/modifying-default-connection.asciidoc[] - -include::client-concepts/certificates/working-with-certificates.asciidoc[] - -include::client-concepts/connection/function-as-a-service-environments.asciidoc[] - -[[serialization]] -== Serialization - -NEST's default JSON serialization understands how to correctly serialize all request and response types, as well as -correctly handle your POCOs. Sometimes however, you might want to change this behaviour, either by providing your -own serializer, or by modifying how NEST's serializer behaves. - -:anchor-list: client-concepts/high-level/serialization - -* <> - -* <> - -* <> - -:includes-from-dirs: client-concepts/high-level/serialization - -include::client-concepts/high-level/serialization/custom-serialization.asciidoc[] - -include::client-concepts/high-level/serialization/extending-nest-types.asciidoc[] - -include::client-concepts/high-level/serialization/modelling-documents-with-types.asciidoc[] - -[[mapping]] -== Mapping - -To interact with Elasticsearch using NEST, we need to be able to control how POCO types in our solution -map to JSON documents and fields stored within the inverted index in Elasticsearch. This section -describes all of the different functionality available within NEST that makes working with POCOs and Elasticsearch -a breeze. - -Explicitly mapping documents in Elasticsearch is crucial in providing bespoke search solutions for a given problem -domain. Whilst Elasticsearch is able to _infer_ the mapping for a given type in an index based upon the _first_ document -of that type that it encounters, the inferred mapping is sometimes not sufficient to building a great search experience. - -To explicitly control mapping, an explicit type mapping can be specified when creating an index, or added to an existing -index _before_ indexing the first document of that type (because indexing a document without an explicit mapping -will cause Elasticsearch to infer the mapping). - -There are several ways to control mapping in NEST - -* <> - -* <> - -* <> - -* <> - -* <> - -and these can be combined to form an overall mapping approach. In addition, there are also ways to control - -* <> - -* <> - -include::{output-dir}/mapping/auto-map.asciidoc[] - -include::{output-dir}/mapping/attribute-mapping.asciidoc[] - -include::{output-dir}/mapping/fluent-mapping.asciidoc[] - -include::{output-dir}/mapping/visitor-pattern-mapping.asciidoc[] - -include::{output-dir}/mapping/parent-child-relationships.asciidoc[] - -include::{output-dir}/mapping/ignoring-properties.asciidoc[] - -include::{output-dir}/mapping/multi-fields.asciidoc[] - -[[indexing]] -== Indexing - -_Indexing_ is the process of storing documents inside Elasticsearch into an index. These documents can then be searched -using the {ref_current}/search-search.html[Search API]. - -NEST exposes a number of features for indexing and reindexing documents into Elasticsearch - -* <> - -* <> - -* <> - -* <> - -include::{output-dir}/indexing/indexing-documents.asciidoc[] - -include::{output-dir}/indexing/ingest-nodes.asciidoc[] - -include::{output-dir}/indexing/pipelines.asciidoc[] - -include::{output-dir}/indexing/reindexing-documents.asciidoc[] - -[[analysis]] -== Analysis - -_Analysis_ is the process of converting text, like the body of any email, into _tokens_ or _terms_ which are added to -the inverted index for searching. Analysis is performed by an _analyzer_ which can be either a built-in -analyzer or a _custom_ analyzer defined per index. - -* <> - -* <> - -include::{output-dir}/analysis/writing-analyzers.asciidoc[] - -include::{output-dir}/analysis/testing-analyzers.asciidoc[] - -[[search]] -== Search - -The {ref_current}/search-search.html[Search API] allows you to execute a search query and get -back search hits that match the query. The search capabilities of Elasticsearch is likely one -of the reasons you're using it, and NEST exposes all of the different types of search available, along -with some smarts to make working with Elasticsearch from a strongly typed language easier. - -* <> - -* <> - -* <> - -* <> - -* <> - -include::search/writing-queries.asciidoc[] - -include::query-dsl/bool-dsl/bool-dsl.asciidoc[] - -include::search/returned-fields.asciidoc[] - -include::search/scrolling-documents.asciidoc[] - -include::{output-dir}/covariant-hits/covariant-search-results.asciidoc[] - -[[aggregations]] -== Aggregations - -The aggregations framework helps provide aggregated data based on a search query. -It is based on simple building blocks called aggregations, that can be composed in order to build -complex summaries of the data. - -* <> - -* <> - -include::aggregations/writing-aggregations.asciidoc[] - -include::aggregations/reserved-aggregation-names.asciidoc[] - -[[nest-conventions]] -== Conventions - -There are a number of conventions that NEST uses for inference of - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -include::{output-dir}/inference/index-name-inference.asciidoc[] - -include::{output-dir}/inference/types-and-relations-inference.asciidoc[] - -include::{output-dir}/inference/ids-inference.asciidoc[] - -include::{output-dir}/inference/field-inference.asciidoc[] - -include::{output-dir}/inference/property-inference.asciidoc[] - -include::{output-dir}/inference/document-paths.asciidoc[] - -include::{output-dir}/inference/indices-paths.asciidoc[] - -include::{output-dir}/inference/routing-inference.asciidoc[] - -[[common-types]] -== Common Types - -NEST has a number of types for working with Elasticsearch conventions for - -* <> - -* <> - -* <> - -* <> - -include::common-options/time-unit/time-units.asciidoc[] - -include::common-options/distance-unit/distance-units.asciidoc[] - -include::common-options/date-math/date-math-expressions.asciidoc[] - -include::common-options/union/union.asciidoc[] - diff --git a/docs/index.asciidoc b/docs/index.asciidoc index 5e4dcb223ae..c6684a15d7b 100644 --- a/docs/index.asciidoc +++ b/docs/index.asciidoc @@ -4,6 +4,8 @@ include::{asciidoc-dir}/../../shared/versions/stack/{source_branch}.asciidoc[] include::{asciidoc-dir}/../../shared/attributes.asciidoc[] +:doc-tests-src: {docdir}/../tests/Tests/Documentation + :net-client: Elasticsearch .NET Client include::intro.asciidoc[] @@ -14,6 +16,8 @@ include::connecting.asciidoc[] include::configuration.asciidoc[] +include::client-concepts/client-concepts.asciidoc[] + include::usage/index.asciidoc[] include::troubleshooting.asciidoc[] diff --git a/docs/inspect-requests.png b/docs/inspect-requests.png deleted file mode 100644 index 8b4a79b40933f09c36a0dd6d18acf208caa9c6f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161819 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 z¨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]}lun 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 VY^J&&W8!}#e$&vxpj;pQ=x@&g&N~1A diff --git a/docs/intro.asciidoc b/docs/intro.asciidoc index 69a95e60338..ee05451c24f 100644 --- a/docs/intro.asciidoc +++ b/docs/intro.asciidoc @@ -4,8 +4,6 @@ This is the documentation for the .NET client for {es}. This page gives you a quick overview of the main features of the client. -// For breaking changes, refer to this page. - [discrete] [[features]] === Features diff --git a/docs/mapping/local-metadata/local-metadata-usage.asciidoc b/docs/mapping/local-metadata/local-metadata-usage.asciidoc deleted file mode 100644 index d727c93a6d7..00000000000 --- a/docs/mapping/local-metadata/local-metadata-usage.asciidoc +++ /dev/null @@ -1,57 +0,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/Mapping/LocalMetadata/LocalMetadataUsageTests.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! -//// - -[[local-metadata-usage]] -=== Local Metadata Usage - -==== Fluent DSL example - -[source,csharp] ----- -f => f -.Properties(ps => ps - .Number(t => t - .Name(p => p.NumberOfCommits) - .LocalMetadata(m => m - .Add("foo", "bar") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TypeMapping -{ - Properties = new Properties - { - { "numberOfCommits", new NumberProperty { LocalMetadata = new Dictionary { { "foo", "bar" } } } } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "properties": { - "numberOfCommits": { - "type": "float" - } - } -} ----- - diff --git a/docs/mapping/scalar/scalar-usage.asciidoc b/docs/mapping/scalar/scalar-usage.asciidoc deleted file mode 100644 index d284c136a2a..00000000000 --- a/docs/mapping/scalar/scalar-usage.asciidoc +++ /dev/null @@ -1,426 +0,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/Mapping/Scalar/ScalarUsageTests.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! -//// - -[[scalar-usage]] -=== Scalar Usage - -==== Fluent DSL example - -[source,csharp] ----- -f => f -.Properties(ps => ps - .Scalar(p => p.Int, m => m) - .Scalar(p => p.Ints, m => m) - .Scalar(p => p.IntNullable, m => m) - .Scalar(p => p.IntNullables, m => m) - .Scalar(p => p.Float, m => m) - .Scalar(p => p.Floats, m => m) - .Scalar(p => p.FloatNullable, m => m) - .Scalar(p => p.FloatNullables, m => m) - .Scalar(p => p.Double, m => m) - .Scalar(p => p.Doubles, m => m) - .Scalar(p => p.DoubleNullable, m => m) - .Scalar(p => p.DoubleNullables, m => m) - .Scalar(p => p.SByte, m => m) - .Scalar(p => p.SBytes, m => m) - .Scalar(p => p.SByteNullable, m => m) - .Scalar(p => p.SByteNullables, m => m) - .Scalar(p => p.Short, m => m) - .Scalar(p => p.Shorts, m => m) - .Scalar(p => p.ShortNullable, m => m) - .Scalar(p => p.ShortNullables, m => m) - .Scalar(p => p.Byte, m => m) - .Scalar(p => p.Bytes, m => m) - .Scalar(p => p.ByteNullable, m => m) - .Scalar(p => p.ByteNullables, m => m) - .Scalar(p => p.Long, m => m) - .Scalar(p => p.Longs, m => m) - .Scalar(p => p.LongNullable, m => m) - .Scalar(p => p.LongNullables, m => m) - .Scalar(p => p.Uint, m => m) - .Scalar(p => p.Uints, m => m) - .Scalar(p => p.UintNullable, m => m) - .Scalar(p => p.UintNullables, m => m) - .Scalar(p => p.TimeSpan, m => m) - .Scalar(p => p.TimeSpans, m => m) - .Scalar(p => p.TimeSpanNullable, m => m) - .Scalar(p => p.TimeSpanNullables, m => m) - .Scalar(p => p.Decimal, m => m) - .Scalar(p => p.Decimals, m => m) - .Scalar(p => p.DecimalNullable, m => m) - .Scalar(p => p.DecimalNullables, m => m) - .Scalar(p => p.Ulong, m => m) - .Scalar(p => p.Ulongs, m => m) - .Scalar(p => p.UlongNullable, m => m) - .Scalar(p => p.UlongNullables, m => m) - .Scalar(p => p.DateTime, m => m) - .Scalar(p => p.DateTimes, m => m) - .Scalar(p => p.DateTimeNullable, m => m) - .Scalar(p => p.DateTimeNullables, m => m) - .Scalar(p => p.DateTimeOffset, m => m) - .Scalar(p => p.DateTimeOffsets, m => m) - .Scalar(p => p.DateTimeOffsetNullable, m => m) - .Scalar(p => p.DateTimeOffsetNullables, m => m) - .Scalar(p => p.Bool, m => m) - .Scalar(p => p.Bools, m => m) - .Scalar(p => p.BoolNullable, m => m) - .Scalar(p => p.BoolNullables, m => m) - .Scalar(p => p.Char, m => m) - .Scalar(p => p.Chars, m => m) - .Scalar(p => p.CharNullable, m => m) - .Scalar(p => p.CharNullables, m => m) - .Scalar(p => p.Guid, m => m) - .Scalar(p => p.Guids, m => m) - .Scalar(p => p.GuidNullable, m => m) - .Scalar(p => p.GuidNullables, m => m) - .Scalar(p => p.String, m => m) - .Scalar(p => p.Strings, m => m) - .Scalar(p => p.Enum, m => m) - .Scalar(p => p.DateRange, m => m) - .Scalar(p => p.IntegerRange, m => m) - .Scalar(p => p.FloatRange, m => m) - .Scalar(p => p.LongRange, m => m) - .Scalar(p => p.DoubleRange, m => m) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -null ----- - -[source,javascript] -.Example json output ----- -{ - "properties": { - "bool": { - "type": "boolean" - }, - "bools": { - "type": "boolean" - }, - "boolNullable": { - "type": "boolean" - }, - "boolNullables": { - "type": "boolean" - }, - "byte": { - "type": "short" - }, - "bytes": { - "type": "short" - }, - "byteNullable": { - "type": "short" - }, - "byteNullables": { - "type": "short" - }, - "char": { - "type": "keyword" - }, - "chars": { - "type": "keyword" - }, - "charNullable": { - "type": "keyword" - }, - "charNullables": { - "type": "keyword" - }, - "dateTime": { - "type": "date" - }, - "dateTimes": { - "type": "date" - }, - "dateTimeNullable": { - "type": "date" - }, - "dateTimeNullables": { - "type": "date" - }, - "dateTimeOffset": { - "type": "date" - }, - "dateTimeOffsets": { - "type": "date" - }, - "dateTimeOffsetNullable": { - "type": "date" - }, - "dateTimeOffsetNullables": { - "type": "date" - }, - "decimal": { - "type": "double" - }, - "decimals": { - "type": "double" - }, - "decimalNullable": { - "type": "double" - }, - "decimalNullables": { - "type": "double" - }, - "double": { - "type": "double" - }, - "doubles": { - "type": "double" - }, - "doubleNullable": { - "type": "double" - }, - "doubleNullables": { - "type": "double" - }, - "float": { - "type": "float" - }, - "floats": { - "type": "float" - }, - "floatNullable": { - "type": "float" - }, - "floatNullables": { - "type": "float" - }, - "guid": { - "type": "keyword" - }, - "guids": { - "type": "keyword" - }, - "guidNullable": { - "type": "keyword" - }, - "guidNullables": { - "type": "keyword" - }, - "int": { - "type": "integer" - }, - "ints": { - "type": "integer" - }, - "intNullable": { - "type": "integer" - }, - "intNullables": { - "type": "integer" - }, - "long": { - "type": "long" - }, - "longs": { - "type": "long" - }, - "longNullable": { - "type": "long" - }, - "longNullables": { - "type": "long" - }, - "sByte": { - "type": "byte" - }, - "sBytes": { - "type": "byte" - }, - "sByteNullable": { - "type": "byte" - }, - "sByteNullables": { - "type": "byte" - }, - "short": { - "type": "short" - }, - "shorts": { - "type": "short" - }, - "shortNullable": { - "type": "short" - }, - "shortNullables": { - "type": "short" - }, - "timeSpan": { - "type": "long" - }, - "timeSpans": { - "type": "long" - }, - "timeSpanNullable": { - "type": "long" - }, - "timeSpanNullables": { - "type": "long" - }, - "uint": { - "type": "long" - }, - "uints": { - "type": "long" - }, - "uintNullable": { - "type": "long" - }, - "uintNullables": { - "type": "long" - }, - "ulong": { - "type": "double" - }, - "ulongs": { - "type": "double" - }, - "ulongNullable": { - "type": "double" - }, - "ulongNullables": { - "type": "double" - }, - "string": { - "type": "text" - }, - "strings": { - "type": "text" - }, - "enum": { - "type": "integer" - }, - "dateRange": { - "type": "date_range" - }, - "integerRange": { - "type": "integer_range" - }, - "doubleRange": { - "type": "double_range" - }, - "longRange": { - "type": "long_range" - }, - "floatRange": { - "type": "float_range" - } - } -} ----- - -[source,csharp] ----- -public class ScalarPoco -{ - public bool Bool { get; set; } - public bool? BoolNullable { get; set; } - public IEnumerable BoolNullables { get; set; } - public IEnumerable Bools { get; set; } - - public byte Byte { get; set; } - public byte? ByteNullable { get; set; } - public IEnumerable ByteNullables { get; set; } - public IEnumerable Bytes { get; set; } - - public char Char { get; set; } - public char? CharNullable { get; set; } - public IEnumerable CharNullables { get; set; } - public IEnumerable Chars { get; set; } - - public DateRange DateRange { get; set; } - - public DateTime DateTime { get; set; } - public DateTime? DateTimeNullable { get; set; } - public IEnumerable DateTimeNullables { get; set; } - - public DateTimeOffset DateTimeOffset { get; set; } - public DateTimeOffset? DateTimeOffsetNullable { get; set; } - public IEnumerable DateTimeOffsetNullables { get; set; } - public IEnumerable DateTimeOffsets { get; set; } - public IEnumerable DateTimes { get; set; } - - public decimal Decimal { get; set; } - public decimal? DecimalNullable { get; set; } - public IEnumerable DecimalNullables { get; set; } - public IEnumerable Decimals { get; set; } - - public double Double { get; set; } - public double? DoubleNullable { get; set; } - public IEnumerable DoubleNullables { get; set; } - public DoubleRange DoubleRange { get; set; } - public IEnumerable Doubles { get; set; } - - public ScalarEnum Enum { get; set; } - - public float Float { get; set; } - public float? FloatNullable { get; set; } - public IEnumerable FloatNullables { get; set; } - public FloatRange FloatRange { get; set; } - public IEnumerable Floats { get; set; } - - public Guid Guid { get; set; } - public Guid? GuidNullable { get; set; } - public IEnumerable GuidNullables { get; set; } - public IEnumerable Guids { get; set; } - public int Int { get; set; } - public IntegerRange IntegerRange { get; set; } - public int? IntNullable { get; set; } - public IEnumerable IntNullables { get; set; } - public IEnumerable Ints { get; set; } - - public long Long { get; set; } - public long? LongNullable { get; set; } - public IEnumerable LongNullables { get; set; } - public LongRange LongRange { get; set; } - public IEnumerable Longs { get; set; } - - public sbyte SByte { get; set; } - public sbyte? SByteNullable { get; set; } - public IEnumerable SByteNullables { get; set; } - public IEnumerable SBytes { get; set; } - - public short Short { get; set; } - public short? ShortNullable { get; set; } - public IEnumerable ShortNullables { get; set; } - public IEnumerable Shorts { get; set; } - - public string String { get; set; } - public IEnumerable Strings { get; set; } - - public TimeSpan TimeSpan { get; set; } - public TimeSpan? TimeSpanNullable { get; set; } - public IEnumerable TimeSpanNullables { get; set; } - public IEnumerable TimeSpans { get; set; } - - public uint Uint { get; set; } - public uint? UintNullable { get; set; } - public IEnumerable UintNullables { get; set; } - public IEnumerable Uints { get; set; } - - public ulong Ulong { get; set; } - public ulong? UlongNullable { get; set; } - public IEnumerable UlongNullables { get; set; } - public IEnumerable Ulongs { get; set; } -} ----- - diff --git a/docs/pipeline.png b/docs/pipeline.png deleted file mode 100644 index b15d2f0f8b6be04f79ff34091ceffcfad81c0525..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204561 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 z 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%0AO|ykB#d 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�M}w)fj3bA|kUHi9ch~ zS_kX-0sE<63>EsvK$p&RpKjG$!|U0z8o#3c;SvfK3v<-`l)%1V%-_y!Ng{k5&7Ym?Lr*=`cfv8 z_is?>Z$+J>6V%sZIZYq83G*%f2KP3r9?1Alv-d)w3lgXsY9RyAf_GkB5OC-cA=dRj zHZTcWGG4hIxa#m^^+d<>aetv2s!Pe1{+DUX7laQNJ z0g~slwU%3dkCDs~5>w#wJ+z<|^DH0OeZ3^0QB+i9la~gDk1)8jpORO%?u$trenrcY z@T<=?@d;*uLf7gB=zG9(OfN_HI#dj?n0@VF(S$Kl z&Tu!NxX^KX zo$jv&RWP^ecaJ<}et(OX|G;7nVjJ8~8=h3vvy|HuDo) z7|Y$&z?B=eC>|0~_yE(YxCqrDrr1Z7@nBu$v+3=lU|KTtomX%bLiEWkj>G;TX}I#y zle){BUzDPCH@Fb`TN3tJKhmD}ES9T3MQ;hZ^V^A6aBsiz5FX)knR6xw0|Ug8@d++R zu9`thFCh`@f2&_chPSwOt_$7#X1E_ztzB!QEv2l@uIKQ3i0}tMH z=h=_!$g?YXc-X4Ym!z5kv;*&I0cP~n;vi8)irHU&sKtrWe5XGter1Ib>wkKL^`Um>JZ}YS?%hjD4tBN8dL>Q9cgMpTYVH|=mbj1Kk$chTbROE5` zLf(N&&xH8In)@!c(O>tZgrcBJFepEz&cLxtk(8zh)%X;p zySG~)AFPmb&8oZ3Dww|6tMyg1po3BRU&QRvda-OmD^mxfQM2`7(cY*P9fK6S-xMZC z55PzjkdStApXAg#=hf1@pLmpa_pju456@-BGS~c-fow=+lioj`z1e3u?DJ=#-t)r% zAx9ewi0zo{V*`U|8YgFwMa=V_cDqKOw99(k|0S$xDt7S^?j4%meu*S5HtMwtb`3rt z#uI5KTMo7NBNv~3dq%1e{N*Jl#0moim|5%AbkYx@g4-?eq|qr02FJ0@#w>Tbxc z>EE9|?vm&BFCCRutBbR|gV@TR=9F!IYoJyAO>u$LkgO$%AA;aNGnRZ`8m{y{5`N6| z%Yc!ry%W}Nre`X4xc)Kh|E<4~6l2IpjU6=f0Q3rJ^-~%mYPwhDs^kzM9{TFVi9llE zqK)xr!60<%21mK?t3?lTOr2s#ESZ%c?)_Y!pXnCft`VF>ejK#_nV!xLdv^)7|^`x{5a4CkuA|K;HrXkV>n{cWV!S?W2fRk}_%- zb4tKKa>~?v!fZ^;SE|)PN#cJ;Da0`--=Cx|^d(m45_w^d2*DLYahdw&%{s4H&9xuA_GqI3 z^3tng=4STW68h&D_WuZW6p{%`Yx$v=W6H^2(_6I~;O>JPl3j!;m5|21~` zypShBwmLV5g`F&893)BY?X0Y0iIV#&`muN+_DxuW@aNnQDIHOXgEAMhZd29P77#%8 zxPl~w{$Jt&bQi?GklCfY179bTk*QwzInPwF}7>L%ZwqBkohSFqp)GK5tgf-m=L_7TbBczCA+$E-4c+OP}hkRQqS*w2CLZS-|SA@x?2) zzMgZtDw}9-m`p4l<95BJ0g`=sJUTj{0%ulh#p|PiE<^U_>K!beguBqqwP>KGLo2?` z8YOe+C!C2h7iusI+cQ@G0oDc;l&*4lEOKP@dhl`1vIPR(rwv2q=((;XiVSzw7}TLc z))cVV;rHJ{j}j-kw8b?tw_vM zjkA|Z$O_e@fpT2k*xhT7HX}Q7u=)5~;0d1zjkLVI8XjOP<5ITle}o+I=k`Q1TTPJ) z(G5ojgwPl9m?orT1-n+6bAEaTXg2Qjbo<3-G%e9%!YN)o9L}eTk#uD(^MufdEh2s| zF{5$4qT5&JObutmkf$SmbnHhLI0wQ7)#kBBsPXN#`Gg!zc>6L2=R8Vb%n`XUDru8O zrjb#+!c11%LJ|GYucveV5fRZLe-;dzd=3=WbDQbbM0LQ=17{H`kV@>|GbVf#!bG?c zvGe^A7R{qFV`I76KSP}vM@R8iQ;R<$oE&Dr0x;A2_ylPU2%L|>i-;0yYw4eTER9-K z#mz4255)ba^3*A*7YUSvmBV<$7Y|8r#N<%hiNUpYzR4sSW$c|@_blmOp(Ehv!vk^_ z6$DGD>nkt&CDx3=3i0DW)Bxgo2Yv%N5TNHChpmHIf4!g? zTBqz@%Hp?nh4*4}yv9N((dLh)!QpWFo5w0D2!h(ob}<1B=PQmPv*#PJnX`_|ToO{$ zBpGJ$*s7T_Hif{WR_xEh-NEwOYMcx;#(94pvl(n>HkE^h;|Tofd5iWEkC z)$?Ul2NsQ=X(j)v+)Xm}*ImqnOv^T!lI=K^!u&5zrN zbEwqUL6si0*mSxC^8JTO(?wlbe5}UK&AmO+s7ko(ri#gnizdybdYkf&-%o)`ftjBl zfr=0MJW~`CH z(13Fup>)y_YWAcO8%7od+kmhCQU@gv|4SXD<{a>oN7JSeNDcCO)6|7~MYY~ZIoh;R zPBmG#o@mTs(FmT&nFF~Zdmzk&J(6l5g|u1H;5b&`1v3}(4r+iqkB9q;R4qf{T*JU|E<;X6>mcEdiyK2P22I(f&e4=@#nGJ#C-b~ zs~jf`RI!yDe->L*nFE>4SA57cgk6>rfL_56hi(#ljL{Nkp?u79@Nx{9i!g>kur#kC z$R@r-2T8TI(Y}y|6XH{?2rNhgqUGNmba82EDL7D1)%}m;nV0BWX@(>0L}nGJ8XG7KDgRp=1Zf;2rlNtU z0>LU$7!>C4iy9XFo+H1y#d@AIn z6vlxnDAv9$i)A01PkfVuE5&Zj<|(|W|vU0nOyPc@M7iFwm-|_{Z^|x@$waM z$U3?6udLJ+wDiocy*BI?otnm^yhbdxCJ|hfH-EOpi=-!FuKd4FqN;=<@L5cgo}yln zz+6}EJ$(4^gdvOBU-9dI86Dd~PH?i|iR}68^o(S`j(_(LF~6-GHO5BVfxv+1NDf@x zTs@h<`CEh(?JskjX>n{UGtsSVl1;+-n)~tt1iiVU9;kMMVEFVYr1PUMB(5Kfz}Ra7 zTzj2G7b;SN=e|${lv~(URaH$u0%l`MUKgpakqwo*K=SFF@gwm$=><2tb^^L*AKvG8 zBi06OUwVewQPO|=~6;83?1RWec_$yRTOOxM|pF; zPJ;CjmdMm|H6BN5Y^-QnfA6WHqIMHd-z!Iu%JvUARmp*#J1TniEp8RJ0H?fTvu@`Z z36`vE3>Ww2_^{I_$R@Xpy$P2|fm6zYuU}HNaPNd-oez_d@5_AH_wPik0v1UO@<57Q zzaPiUPgI>qLnvjNTiK`G>C8>5q7suUOtLSJ88)p44w3>f)=#z(_eiK22xjIr2#LuO z%P(=~8!@h@M3~lky;~3PAi~GkzswPkIxm1lLEr=;yI05ptcaMyysNmH!XaLV%iv1~F@$yb1;l zXY{R@`~4;}+-i5&h@Jf>swi((I#06%|{n`;IjNLy-Q{{&M02z$8b{M)zl zxPvw3n95J$Nb%)Ju13@dQnOcSUxVH2&alWENv@@7X5$Z(NF!E9_>kjuO(@&!RsrIp?;JJe7#q%kYA1+?B{Fed0X6XeX~HN zQ4k!S%B*Zem8Rd(7|%_zI?t|<^2+QK+p{>Wv=p}L+U?e-J4Jdfx1ZevM1eqd<*hGT z1b>a%E(8k}LEj$NXO>#$vQ4&Mu8*IIpC5_fo%xxRtam_ZUWGmfkSO3+0hwxVh%_R$ zYM+mgOMtnX2Cd#zi!|zitbsSDGb2v={^DXGU4a{;*|-g!h!c{4jrb}fDe(7jqmD>f z$fbAN$P#K$$OwGl@mt8Qy#8ZGUEr5J)$9F^v$N7p`-NYLIxa=ATh;@WB>V^Z8J&@! zyCFM%~9>ht{n(gLikr)Jf9 zVt13AOc;%}?|9>>(#AAJtSpDKyPuiF$n9G>@TQg)b=L(<(0?{X`YHp6@W}olW&5a- z4}sF;9AeWV@}U|QmHmSIaT1w|IWUy^d=(=Y%-j(}({+UP>(_;TqeI%I7*Tq#*qQSk zXKQ6~9$1N|1LB~lrG>ilqK}vF`7miSX2-=q%ljS*#Cm4uU)J6Z4^x7wBDu}*e)x`$ zEG5{p+K)_o_^Ji+F`aMj-*F1`moN!|tZRo}BNZx+-ZZ>i9?@5T4J{qAERJHd zhP&oU>BYV>j!$r9W)wC8lxF=MdVgS0?PC9nzZVFUI_nwP%OdmT!L;`s60h8Zd~{7^ z6iB+B{I_H$Ve3tS4j8A6Got?0PY`^160T2ufRet|xEodWl#3JDuTLCDe@ks@Uo8%h zD=`oJb=Uu4*F^LGCnf}V-B4J2(^^`@7Qr~8i++)gFc;93(XqtE#T|l7`oW-`;^N{u z=U-wRwT_ETM8}&Gnb$u7@_rqDvwb}*fl!hF?iZQl1{0plMU6Y8W?zktqA%K|(P0f|F=l9j@^^X?5%0Q-WT7C)#%9@^UnDG%PxXo#!rq4lWQRRio#*K zvI}2ik#Paa$~wf|E1?nLgTU$20 zN`tUi5~zPWYG2~_=6(-fP$K!_bOrpHv&FBGy5?RKJ#qeS$K9J&Cn)GvQG$BiX-}ci zoBGLyn%dO)S^A8{>=qO3^9@#!bunL{8qOk*NYPr+xB00kB%SEGV>t&6@Fwr|g_qZO zby3krwJplS0xE_-`_a!C$GOdv3@(!t?PC)JVIM|zN=Xc90obT71l3PNDyf#_Ic08l zX4kFGNvGXvDs%Y|EihV{L4=Hvf_z-{N6Zh|mQ<7H)HF~}fBqh%)=aKEGgfcrcJTIY z$Y+CPjH3gysolFc{DF&yP=Z%R!t{C(@PmMdteM;wK?Okx0CUpN2nP7! z1v5H1|1>gvfK@ePr6%NtGa}1rM|-ZW9L875gJrVTL9sKJp~MC>H+L z3Aii<5g(8Mqr7;smDRXCEVpp>%PJ!rv)}6Ehv%Ej{JuZdcI#PkKNhYpnV#hfX-IG^ z>9h5v)zBoro5*?}Fx7F`H5#M+)f- zWw8)JeG&uhaAsw#mtOMQqywof^hkLy7!I)U#dqq<#!$%ZW{8~qb$L}$(c6Cz}tTEdXyeP3&zuLdD9|1n6TOpyK!TZla&E0 z3Pj;j66cE^kN=#M+WX)EPc|S%2OWu-xV-H2Yj5W!f}`FS1RG694UUcVA?LUcF+Ln_ zy~&l#hC+4}{(kV*U)XCw_;<)jTp}zUfk8EM*%Ut{UO2tzoBRF~R(r~)t;Aw|0ro`G z9+nlnC`HPdJ!zj)aW$VmxktT(e#!l9uA!ghg&$>_vJ_2LMrpkFO+YilbmZ!e#mG6nd9G;%^x zrCGbtwDlpamDI1qPvG)Iwy!-pKctwMdpI$=lL!@CJ}u~$AL&aV0=*zF^L?3%W}7!u zjFcYAsa5+y1T^|5hPsD}$!2o`wu+X6ipxrvoz&t;wZRW~8KMag-|h z0(RA>JaR{2rLyT^8w+)+a$@I%Me>_7KsLXC^8MBs1S#U6bab)uF8kJbtzfM$om!Xl z_c8JC@VF|$+>_DI);Ejy>NySAm!cmPfxbj4x1zlKu**aEXWBjBEK*6cMyC7z*Vn}p z8EixeAPYgub^#>KJdGJ*en%`|?cFNJk;@5PuBT}nZsfRNC`fSd@a#|OZSLYFhZOC{ z4$A#e2UZ^_()f`L%>#sT*tUeajt+@g@a1z+Uaii;W2SoTHcQ6cn9;QT-EHoC-@iMm z3WizrgmN-<3y9&P#uPr-gCxG_4>}rSr0^m3T$mA0Ha+kx*Vk<{5Rjxs% z0RsjO>JmR2^Z-_;yMq0hA})k@j#(LFiIUqy;ayn+xgr^v>(XBax=nX?_og5t1_wnD zLms%xA|(X3h<5D-M>`H>PI2C{d8s`fEy#!_B zFYlbihnx^dQ4d31VoJHC`v`ZV#lQ68<9XuzpqBXKGvn3^l>AY{;D2~%jv9aU&?;Vl zsRL`ZhXzAVf=F?#^%G}5nU@w)nZ>bTKPK_VA92D~G|PXzexMO}Pq_(gRm-yMHeY3o zmaB1D%&mkrKzPHPD_@N!?4(YWG8I%OaCFXKM{b~%cN7m^u zL+vocr%&q!@WpJB4KOTHpX6o5Oa7zR3UN@3Y5^Ry_8v9{Gz#XYrz*hs?UO-j?Ru1% zo_W37h2c-k{*YU7Y^x6JSLSD+(qb^R_4v>8M3zxujLh#60D2H+)aaZSSl8*jXQYM;Zze(szG7SlHOiG}qgq z#t@oyK+vXrQB+91Fu&Q>M-Ee5^=|z=0s3Ai!ymWl`euI!*&`^KaYkwkKVcMEv<_k+ z3z5dP7=MV>#~Nf0C0E|O-?9T}Ujhp-)6q=u(5A`LPM`Gkc`Xjuq|H(-BwD*!K}TH` ziD2Zo;xm(y51nG#pD;$a8`NnV3vdtFOo)(>JY$m*c7m0&sdPvG<4(Uw`n{B=g z1=na^T4DC9Z__x>^rs;$<~9SOf^2^(UdRY8KF(Vzc%*^%;NJc4{jjw7F5J`&f7TTa zQt9X2=rFnsTiJR3XJg#lv+0=w!0n7)0FPz(HXHd*J^xR93$n16(MKHyQ;)~vUfq8a zO6UtlSzZbJ&{e22J{vkqK4%IUAnJXP@CP^j_xQO+Ql?xSOe!FN=53CVTDH8?b2egHHr~uT`kxetUbJrJqTTAn#Ksz5@$yU0{6!=R zbv2-VLgQ+AL;VqTFc(H!T$Uu`YjZ7Zv-xqy&3-_OmKXM7{!PWOLkjF6Mx8w5dEPrJ zLEEg2cvE~GKKo<|(b-cR&48t5pIb`#Vh9lhNg$+Setn^R!Pq3Bp-&$u6d1aSeBqcv z-c0}Q+y1@$zNG`?($sCfsteIEvHqDOx2Ri3|g})s>9yD4sLl*^c zSHPg>pR?*~MqKN#5ox-)_q*OgkOX_Z%9nPWS&>r6A~e=)cIH1KlmgXIcx=JSY~ue} z79t>&(Nq3KK^S}f1^JFw$a45pkxqLl>6*tsoNqsFE1Ol&sWo{_nLG$^+sT zx56jQUTI1oB$w_2?(Ud`Ij9ShG?&FcDL0}U85?PNwUAp^Q$r@Aqob|Ib45!^vBE4U z$istzT<&$=JIgaWmwY+? z!*Vv^HfEcF$Nce)^w~JN#PGJ`-MI~0T2Lg2HN{eyJy#?oy#K`@bAI0FW0jNBj$M`N zm$RLhoZ8Z@&4pfnX14X6?!1;Onq1h!8SA4Sp<@wF*V-^$+iZkLLe(kdGP3>bHh%4U zWaEyuZRT$N%@+iJ1{Z8niMq2~o$gS4SQS-|z%qDhUpwy)S+{*)&4;>k(2hG^Wt@_k z>dZH?YdM}|{ivKlJRiK|7G$JV=h(=-Xyixu63&ETVfF2o_XAQS|?_tk{rw%d4O4?BbxSmqE&gWaQGFw6SWx z$mqX@nk9Z2qvT_wdx1vs(Kh>+sX=3rcvMwMJF=m>`RL&T$lOJ#{{2L2GtUzD-*N9#C?i=i95~< zI(8lbX)#19brQO&?dWj!HQJlBAiFpUxo4$=C8oY-=d+oV)ot79p>$Vz4-D7j4j7qZe5E$__qFYrv_2dY2YZP5UIAPMozWfZe_zIc>jC*v-F6e>q#E7l*ZX7F zhi9GAN>={Lz39eU=x<-<@Y`EqXnTlL0>7fw@EeXof?oO-LcSbAOW^=7w};S2cqqE; zw@a;j5bmFR!gE6@R~dS{C!c#xoyg;oBbLEjjBv=nKj_JSzVSC?)-Ace@SZ9{A!p6} zcBd6q--)rm?(2j$SL@?oO+&1m$DW%}rN;}BUlJ(8Zg0e27Sv|H3N=K>{xtjI|6}g0 zqq5xAcVP)7ln#;Rr9n!%>!srb1VLKR1=8K!-Jx_zw}40pQi6zpNJ&Tu(hbtzd~ome z+wL*GbJiK>pECwy4PC>BXFhY@^UmwOZtSX&k2<(&!3+E;H2lHL%_i@g*U5!r`Ez_a z=)g;Hy&@R#ko%tet(|`Vp#xCR(pfnjZ36nr^zHQ+@(+o=`axZH_!lznFO%I@v2DIP zP!GzR!Z=$`i`G&S5&}vd7Tpp?t>VT-%D+t@`({w0vVi#(%^U}zEv}=LrEJIOct`w; z;;suW(;k2~9cj2<$DXke{wQDraUJPhA1QRgIgsJ0K((F#7Tl$%%FT@JqZo^v7k)k> z;ML^V*ASmqCB5uxZh5-cg|gA4!5bSfOoV*I%Qb&a(8?&qo+EwYAAcMf#_HI0>n1Y6b-aAoo}C zrrj=Z!&hk{PybT^Qj>sn1mt#Es=~njJ|N56(h<#iyMiUKKyKH=?X8W_oSJIcarb6= znK;s?a5Pu|Vp!(AZDO;ZK+H zpIyqd`ko|-45w#j+s11-+>?^9otN4^d3*b}NT>pl2oetX^MfR8!3P~2`C+U8-l)e# ztydpEOf-~Zehv~K3ho$_l*m*0rq@CuAVzTSL}AUf_PDmT_C;lXUOJouNxI6NZB3RP z5cm6`!hnn`z&Rao|3~bvzXA)oZ+>Rum4pb`y1PQnUeCz3=~a)ZU6=4&jt_D+&QASF z9QT8Y*AgviuFW$7n{^{EFzIXchSc)Ab$i1Oy+Q(1Orhnsw}anAG9k$Gr|GwX?v@HU zMc*?Gk#M?!m>Mt&boVk+N!`E@M*t}_S}EsO%Z+dT8S~G3*;NHGj=I7L;^X7-+|lgd z(s*IXIe2C6cW$QkK)#%x0+1!H@O*QIKNO_S3n0$7h52=rfSRJH1uY>RjJ6d${?WV* zL~7?93bVydPl+;dRWno>LvW~Krl+TWwyzY2(BfJ@q5ZZ?T=}Wr7H@(U@Lj1RqFJ@TwMs+iB?Q zM}gKX85|KgK01GM4Dw;p@i^S)gwTp#B!Pt{3dQ`D`0t?i`m2J`;VL3ExcOPB3%58q z=6<|Es{3a0V@E+9v!NKb7^D^oNA+sfM>@@q-TVc}s*i-`oVs(3E%*{%FGY_I!v&aG zSfnH+B{g*%)fNfD>W1)EccTz-#0k)j2|`m6ioTok{<&k}5}I8EtVnB?Y%y(_#ao-r zJ-0%qy^-eE@o1>=n5G&Y86SV_G%tNF)BJ{_+JwfPYA(tV#yk>z-uKw9C!6W0BP=n@ zieBjsKJ$B8jYS<~mb;RWin+xIT#q^IJoi6zfH4YWzl2_1Thm!uq!RyH_x-=fXNLVy z(kzD#T1qtj(Y%@UOnfVt|wG#-yk@vgh%Z zjEqch(`E0`VljJ__JTtC2UBxA8F->w>g_$V&pSK^tO}bh10a*qJ2;4whQ?9H;ct91 z-ni;DheBlrqz$4VH{IS_y8q7?K@P0>0nhIj(IH1iM>BD7$Vp41h*(pSS6H>rM|ikR zd7E2X2ac~`J#R5LBwq;&oT7*oC_=eV8i_MVa!?%h4Cho(PV?vVwVnM;PR z8_(g6)@0>4m*wJ@6v!?ZOL`FoYsj1~W z-`r3}mdYtplbR1YyH@Ar(82Pa_i8~m{_h{Zmk^u%Pto6U3rCk1O`2(T?JUFW^Zfe4 zFct@Eluf{JCMu+p&D`2b+azLq{ULLkmzdFqSi(&0t4v)l!?h%*^A*3&;oZduR~q)u zxn20KwFJx;1aWDJVM!UNU2n-}D&@X7c6WC_*_nG^Zi$Z<>li12?DPKV<@t$DwJ{O^ z>j!}bl(@Lxf}jjd76{Lj8~H=x+hLGgI6$YU zBB|s}rW@-yr2jpnq0pu7jYsm(g5~ZFRzBCS^mr7{PMHMo^%ZgLn-+1im*6J4BGV=8 zbOqhCTr)T2^p8!#KQTXl3;)#D+p87;5mnGOJ;Ihno`HsZHF7{}YbOP3(CLiTzxf{< z2y`msjz`btUlUcz1xr|3vclyB0h(cHM>6P+FI>@aVe8uy0imn5WnhrWv z?~rgxU@+Lc5ni&N@JE%RAJQH1yUQ>WR8{eoYU@*yTJyfgZ!-`GSq09}A@bjU{nvl1 zX&~PJ%-`(pu|i0A+#p>(b~5tyD=MBK-7{_Drx7IhAmtelRj`Y%&H(7P0aZ$-_#P=4 zMpr_6=~Q+{=}p9wkLRqMKaN;U1bJ7kEf9VfG>u06Uqfa79m|4`mx5dwI{hL;mg$Ca~PUg`sS_GUrp3oQ;CQqm!C55b^p%IsnQSL+c z5nlO(7O53o{%c>NbXCYXvpVDV=@X`W#DT-D6=-6FKRWnQe404&kUuV^JT)}!r9*an zIR09H+b|*fI_gh9ALMv~2`mcP|^D6GsAkXVu&?f{Cp%d?3qW_U|$P!In zi@M~ss5j?AhCE5wTp1S?89bcIeM*OJ*K*C)dF=ET~;Ng~c`9J=AnCSZ9g#UW; zZU5Q-n}^>)%f9E`Vg38f(1fWBpZw83-%Nk~X26*Xf>>~D|5`SnEd9TF80_~9cyq$E5AoTlZ;?p@kAAS

      0lMKZW$PG;}MOT!&uRTnk@bUydL^u*_`Ect`dN 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 diff --git a/docs/query-dsl.asciidoc b/docs/query-dsl.asciidoc deleted file mode 100644 index fcb263ebaba..00000000000 --- a/docs/query-dsl.asciidoc +++ /dev/null @@ -1,386 +0,0 @@ -:output-dir: query-dsl - -[[query-dsl]] -= Query DSL - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/query-dsl.asciidoc. -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! -//// - -[partintro] --- -NEST exposes all of the query DSL endpoints available in Elasticsearch - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the documentation on <> for how to use them in NEST. - --- - -[[full-text-queries]] -== Full text queries - -The high-level full text queries are usually used for running full text queries on full text fields like the body of an email. -They understand how the field being queried is analyzed and will apply each field’s analyzer (or `search_analyzer`) to the query string before executing. - -NEST exposes all of the full text queries available in Elasticsearch - -:anchor-list: query-dsl/full-text - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/full-text-queries.html[Full text queries] for more details. - -:includes-from-dirs: query-dsl/full-text - -include::query-dsl/full-text/combined-fields/combined-fields-usage.asciidoc[] - -include::query-dsl/full-text/common-terms/common-terms-usage.asciidoc[] - -include::query-dsl/full-text/intervals/intervals-usage.asciidoc[] - -include::query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc[] - -include::query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc[] - -include::query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc[] - -include::query-dsl/full-text/match/match-usage.asciidoc[] - -include::query-dsl/full-text/multi-match/multi-match-usage.asciidoc[] - -include::query-dsl/full-text/query-string/query-string-usage.asciidoc[] - -include::query-dsl/full-text/simple-query-string/simple-query-string-usage.asciidoc[] - -[[term-level-queries]] -== Term level queries - -While the <> will analyze the query string before executing, the term-level queries operate on the exact terms -that are stored in the inverted index. - -These queries are usually used for structured data like numbers, dates, and enums, rather than full text fields. -Alternatively, they allow you to craft low-level queries, foregoing the analysis process. - -NEST exposes all of the term queries available in Elasticsearch - -:anchor-list: query-dsl/term-level - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/term-level-queries.html[Term level queries] for more details. - -:includes-from-dirs: query-dsl/term-level - -include::query-dsl/term-level/exists/exists-query-usage.asciidoc[] - -include::query-dsl/term-level/fuzzy/fuzzy-date-query-usage.asciidoc[] - -include::query-dsl/term-level/fuzzy/fuzzy-numeric-query-usage.asciidoc[] - -include::query-dsl/term-level/fuzzy/fuzzy-query-usage.asciidoc[] - -include::query-dsl/term-level/ids/ids-query-usage.asciidoc[] - -include::query-dsl/term-level/prefix/prefix-query-usage.asciidoc[] - -include::query-dsl/term-level/range/date-range-query-usage.asciidoc[] - -include::query-dsl/term-level/range/long-range-query-usage.asciidoc[] - -include::query-dsl/term-level/range/numeric-range-query-usage.asciidoc[] - -include::query-dsl/term-level/range/term-range-query-usage.asciidoc[] - -include::query-dsl/term-level/regexp/regexp-query-usage.asciidoc[] - -include::query-dsl/term-level/term/term-query-usage.asciidoc[] - -include::query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc[] - -include::query-dsl/term-level/terms/terms-list-query-usage.asciidoc[] - -include::query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc[] - -include::query-dsl/term-level/terms/terms-query-usage.asciidoc[] - -include::query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc[] - -[[compound-queries]] -== Compound queries - -Compound queries wrap other compound or leaf queries, either to combine their results and scores, -to change their behaviour, or to switch from query to filter context. - -NEST exposes all of the term queries available in Elasticsearch - -:anchor-list: query-dsl/compound - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/compound-queries.html[Compound queries] for more details. - -:includes-from-dirs: query-dsl/compound - -include::query-dsl/compound/bool/bool-dsl-complex-query-usage.asciidoc[] - -include::query-dsl/compound/bool/bool-query-usage.asciidoc[] - -include::query-dsl/compound/boosting/boosting-query-usage.asciidoc[] - -include::query-dsl/compound/constant-score/constant-score-query-usage.asciidoc[] - -include::query-dsl/compound/dismax/dismax-query-usage.asciidoc[] - -include::query-dsl/compound/function-score/function-score-query-usage.asciidoc[] - -[[joining-queries]] -== Joining queries - -Performing full SQL-style joins in a distributed system like Elasticsearch is prohibitively expensive. -Instead, Elasticsearch offers two forms of join which are designed to scale horizontally. - -:anchor-list: query-dsl/joining - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/joining-queries.html[Joining queries] for more details. - -:includes-from-dirs: query-dsl/joining - -include::query-dsl/joining/has-child/has-child-query-usage.asciidoc[] - -include::query-dsl/joining/has-parent/has-parent-query-usage.asciidoc[] - -include::query-dsl/joining/nested/nested-query-usage.asciidoc[] - -include::query-dsl/joining/parent-id/parent-id-query-usage.asciidoc[] - -[[geo-queries]] -== Geo queries - -Elasticsearch supports many different types of geospatial queries, operating on {ref_current}/geo-point.html[geo_point] fields -which support lat/lon pairs, and {ref_current}/geo-shape.html[geo_shape] fields, which support points, lines, circles, polygons, multi-polygons etc. - -:anchor-list: query-dsl/geo - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/geo-queries.html[Geo queries] for more details. - -:includes-from-dirs: query-dsl/geo - -include::query-dsl/geo/bounding-box/geo-bounding-box-query-usage.asciidoc[] - -include::query-dsl/geo/distance/geo-distance-query-usage.asciidoc[] - -include::query-dsl/geo/geo-shape/geo-shape-query-usage.asciidoc[] - -include::query-dsl/geo/polygon/geo-polygon-query-usage.asciidoc[] - -[[specialized-queries]] -== Specialized queries - -Specialized types of queries that do not fit into other groups - -:anchor-list: query-dsl/specialized - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/specialized-queries.html[Specialized queries] for more details. - -:includes-from-dirs: query-dsl/specialized - -include::query-dsl/specialized/distance-feature/distance-feature-query-usage.asciidoc[] - -include::query-dsl/specialized/more-like-this/more-like-this-full-document-query-usage.asciidoc[] - -include::query-dsl/specialized/more-like-this/more-like-this-query-usage.asciidoc[] - -include::query-dsl/specialized/percolate/percolate-query-usage.asciidoc[] - -include::query-dsl/specialized/pinned/pinned-query-usage.asciidoc[] - -include::query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc[] - -include::query-dsl/specialized/script-score/script-score-query-usage.asciidoc[] - -include::query-dsl/specialized/script/script-query-usage.asciidoc[] - -include::query-dsl/specialized/shape/shape-query-usage.asciidoc[] - -[[span-queries]] -== Span queries - -Span queries are low-level positional queries which provide expert control over the order and proximity of the specified terms. -These are typically used to implement very specific queries on legal documents or patents. - -Span queries cannot be mixed with non-span queries (with the exception of the span_multi query). - -:anchor-list: query-dsl/span - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the Elasticsearch documentation on {ref_current}/span-queries.html[Span queries] for more details. - -:includes-from-dirs: query-dsl/span - -include::query-dsl/span/containing/span-containing-query-usage.asciidoc[] - -include::query-dsl/span/field-masking/span-field-masking-usage.asciidoc[] - -include::query-dsl/span/first/span-first-query-usage.asciidoc[] - -include::query-dsl/span/multi-term/span-multi-term-query-usage.asciidoc[] - -include::query-dsl/span/near/span-near-query-usage.asciidoc[] - -include::query-dsl/span/not/span-not-query-usage.asciidoc[] - -include::query-dsl/span/or/span-or-query-usage.asciidoc[] - -include::query-dsl/span/term/span-term-query-usage.asciidoc[] - -include::query-dsl/span/within/span-within-query-usage.asciidoc[] - -[[nest-specific-queries]] -== NEST specific queries - -These are queries that are specific to NEST that make Elasticsearch easier to work with from a strongly typed .NET language. - -:anchor-list: query-dsl/nest-specific - -* <> - -* <> - -:includes-from-dirs: query-dsl/nest-specific - -include::query-dsl/nest-specific/raw/raw-combine-usage.asciidoc[] - -include::query-dsl/nest-specific/raw/raw-query-usage.asciidoc[] - -include::{output-dir}/verbatim/verbatim-and-strict-query-usage.asciidoc[] - diff --git a/docs/query-dsl/bool-dsl/bool-dsl.asciidoc b/docs/query-dsl/bool-dsl/bool-dsl.asciidoc deleted file mode 100644 index a2806d44779..00000000000 --- a/docs/query-dsl/bool-dsl/bool-dsl.asciidoc +++ /dev/null @@ -1,644 +0,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/QueryDsl/BoolDsl/BoolDsl.doc.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! -//// - -[[bool-queries]] -=== Writing bool queries - -Writing `bool` queries can grow verbose rather quickly when using the query DSL. For example, -take a single {ref_current}/query-dsl-bool-query.html[bool query] with two `should` clauses - -[source,csharp] ----- -var searchResults = this.Client.Search(s => s - .Query(q => q - .Bool(b => b - .Should( - bs => bs.Term(p => p.Name, "x"), - bs => bs.Term(p => p.Name, "y") - ) - ) - ) -); ----- - -Now, imagine multiple nested `bool` queries; you'll realise that this quickly becomes an exercise -in __hadouken indenting__ - -.hadouken indenting -image::hadouken-indentation.jpg[hadouken indenting] - -[float] -=== Operator overloading - -For this reason, NEST introduces **operator overloading** so complex `bool` queries become easier to write. -The overloaded operators are - -* <> - -* <> - -* <> - -* <> - -We'll demonstrate each with examples. - -[[binary-or-operator]] -==== Binary || operator - -Using the overloaded binary `||` operator, a `bool` query with `should` clauses can be more succinctly -expressed. - -The previous example now becomes the following with the Fluent API - -[source,csharp] ----- -var firstSearchResponse = client.Search(s => s - .Query(q => q - .Term(p => p.Name, "x") || q - .Term(p => p.Name, "y") - ) -); ----- - -and, with the the Object Initializer syntax - -[source,csharp] ----- -var secondSearchResponse = client.Search(new SearchRequest -{ - Query = new TermQuery { Field = Field(p => p.Name), Value = "x" } || - new TermQuery { Field = Field(p => p.Name), Value = "y" } -}); ----- - -Both result in the following JSON query DSL - -[source,javascript] ----- -{ - "query": { - "bool": { - "should": [ - { - "term": { - "name": { - "value": "x" - } - } - }, - { - "term": { - "name": { - "value": "y" - } - } - } - ] - } - } -} ----- - -[[binary-and-operator]] -==== Binary && operator - -The overloaded binary `&&` operator can be used to combine queries together. When the queries to be combined -don't have any unary operators applied to them, the resulting query is a `bool` query with `must` clauses - -[source,csharp] ----- -var firstSearchResponse = client.Search(s => s - .Query(q => q - .Term(p => p.Name, "x") && q - .Term(p => p.Name, "y") - ) -); ----- - -and, with the the Object Initializer syntax - -[source,csharp] ----- -var secondSearchResponse = client.Search(new SearchRequest -{ - Query = new TermQuery { Field = Field(p => p.Name), Value = "x" } && - new TermQuery { Field = Field(p => p.Name), Value = "y" } -}); ----- - -Both result in the following JSON query DSL - -[source,javascript] ----- -{ - "query": { - "bool": { - "must": [ - { - "term": { - "name": { - "value": "x" - } - } - }, - { - "term": { - "name": { - "value": "y" - } - } - } - ] - } - } -} ----- - -A naive implementation of operator overloading would rewrite - -[source,sh] ----- -term && term && term ----- - -to - -.... -bool -|___must - |___term - |___bool - |___must - |___term - |___term -.... - -As you can imagine this becomes unwieldy quite fast, the more complex a query becomes. NEST is smart enough -to join the `&&` queries together to form a single `bool` query - -.... -bool -|___must - |___term - |___term - |___term -.... - -as demonstrated with the following - -[source,csharp] ----- -Assert( - q => q.Query() && q.Query() && q.Query(), <1> - Query && Query && Query, <2> - c => c.Bool.Must.Should().HaveCount(3) <3> -); ----- -<1> three queries `&&` together using the Fluent API -<2> three queries `&&` together using Object Initialzer syntax -<3> assert the resulting `bool` query in each case has 3 `must` clauses - -[[unary-negation-operator]] -==== Unary ! operator - -NEST also offers a shorthand notation for creating a `bool` query with a `must_not` clause -using the unary `!` operator - -[source,csharp] ----- -var firstSearchResponse = client.Search(s => s - .Query(q => !q - .Term(p => p.Name, "x") - ) -); ----- - -and, with the Object Initializer syntax - -[source,csharp] ----- -var secondSearchResponse = client.Search(new SearchRequest -{ - Query = !new TermQuery { Field = Field(p => p.Name), Value = "x" } -}); ----- - -Both result in the following JSON query DSL - -[source,javascript] ----- -{ - "query": { - "bool": { - "must_not": [ - { - "term": { - "name": { - "value": "x" - } - } - } - ] - } - } -} ----- - -Two queries marked with the unary `!` operator can be combined with the `&&` operator to form -a single `bool` query with two `must_not` clauses - -[source,csharp] ----- -Assert( - q => !q.Query() && !q.Query(), <1> - !Query && !Query, <2> - c => c.Bool.MustNot.Should().HaveCount(2)); <3> ----- -<1> two queries with `!` operator applied, `&&` together using the Fluent API -<2> two queries with `!` operator applied, `&&` together using the Object Initializer syntax -<3> assert the resulting `bool` query in each case has two `must_not` clauses - -[[unary-plus-operator]] -==== Unary + operator - -A query can be transformed into a `bool` query with a `filter` clause using the unary `+` operator - -[source,csharp] ----- -var firstSearchResponse = client.Search(s => s - .Query(q => +q - .Term(p => p.Name, "x") - ) -); ----- - -and, with the Object Initializer syntax - -[source,csharp] ----- -var secondSearchResponse = client.Search(new SearchRequest -{ - Query = +new TermQuery { Field = Field(p => p.Name), Value = "x" } -}); ----- - -Both result in the following JSON query DSL - -[source,javascript] ----- -{ - "query": { - "bool": { - "filter": [ - { - "term": { - "name": { - "value": "x" - } - } - } - ] - } - } -} ----- - -This runs the {ref_current}/query-filter-context.html[query in a filter context], -which can be useful in improving performance where the relevancy score for the query -is not required to affect the order of results. - -Similarly to the unary `!` operator, queries marked with the unary `+` operator can be -combined with the `&&` operator to form a single `bool` query with two `filter` clauses - -[source,csharp] ----- -Assert( - q => +q.Query() && +q.Query(), - +Query && +Query, - c => c.Bool.Filter.Should().HaveCount(2)); ----- - -[float] -=== Combining bool queries - -When combining multiple queries with the binary `&&` operator -where some or all queries have unary operators applied, -NEST is still able to combine them to form a single `bool` query. - -Take for example the following `bool` query - -.... -bool -|___must -| |___term -| |___term -| |___term -| -|___must_not - |___term -.... - -This can be constructed with NEST using - -[source,csharp] ----- -Assert( - q => q.Query() && q.Query() && q.Query() && !q.Query(), - Query && Query && Query && !Query, - c=> - { - c.Bool.Must.Should().HaveCount(3); - c.Bool.MustNot.Should().HaveCount(1); - }); ----- - -An even more complex example - -[source,sh] ----- -term && term && term && !term && +term && +term ----- - -still only results in a single `bool` query with the following structure - -.... -bool -|___must -| |___term -| |___term -| |___term -| -|___must_not -| |___term -| -|___filter - |___term - |___term -.... - -[source,csharp] ----- -Assert( - q => q.Query() && q.Query() && q.Query() && !q.Query() && +q.Query() && +q.Query(), - Query && Query && Query && !Query && +Query && +Query, - c => - { - c.Bool.Must.Should().HaveCount(3); - c.Bool.MustNot.Should().HaveCount(1); - c.Bool.Filter.Should().HaveCount(2); - }); ----- - -You can still mix and match actual `bool` queries with operator overloaded queries e.g - -[source,sh] ----- -bool(must=term, term, term) && !term ----- - -This will still merge into a single `bool` query. - -[source,csharp] ----- -Assert( - q => q.Bool(b => b.Must(mq => mq.Query(), mq => mq.Query(), mq => mq.Query())) && !q.Query(), - new BoolQuery { Must = new QueryContainer[] { Query, Query, Query } } && !Query, - c => - { - c.Bool.Must.Should().HaveCount(3); - c.Bool.MustNot.Should().HaveCount(1); - }); ----- - -==== Combining queries with || or should clauses - -As per the previous example, NEST will combine multiple `should` or `||` into a single `bool` query -with `should` clauses, when it sees that the `bool` queries in play **only** consist of `should` clauses; - -To summarize, this - -[source,sh] ----- -term || term || term ----- - -becomes - -.... -bool -|___should - |___term - |___term - |___term -.... - -However, the `bool` query does not quite follow the same boolean logic you expect from a -programming language. That is - -[source,sh] ----- -term1 && (term2 || term3 || term4) ----- - -does **not** become - -.... -bool -|___must -| |___term1 -| -|___should - |___term2 - |___term3 - |___term4 -.... - -Why is this? Well, when a `bool` query has **only** `should` clauses, **__at least one__** of them must match. -However, when that `bool` query also has a `must` clause, the `should` clauses instead now act as a -_boost_ factor, meaning none of them have to match but if they do, the relevancy score for that document -will be boosted and thus appear higher in the results. The semantics for how `should` clauses behave then -changes based on the presence of the `must` clause. - -So, relating this back to the previous example, you could get back results that **only** contain `term1`. -This is clearly not what was intended when using operator overloading. - -To aid with this, NEST rewrites the previous query as - -.... -bool -|___must - |___term1 - |___bool - |___should - |___term2 - |___term3 - |___term4 -.... - -[source,csharp] ----- -Assert( - q => q.Query() && (q.Query() || q.Query() || q.Query()), - Query && (Query || Query || Query), - c => - { - c.Bool.Must.Should().HaveCount(2); - var lastMustClause = (IQueryContainer)c.Bool.Must.Last(); - lastMustClause.Should().NotBeNull(); - lastMustClause.Bool.Should().NotBeNull(); - lastMustClause.Bool.Should.Should().HaveCount(3); - }); ----- - -TIP: *Add parentheses to force evaluation order* - -Using `should` clauses as boost factors can be a really powerful construct when building -search queries, and remember, you can mix and match an actual `bool` query with NEST's operator overloading. - -There is another subtle situation where NEST will not blindly merge two `bool` queries with only -`should` clauses. Consider the following - -[source,sh] ----- -bool(should=term1, term2, term3, term4, minimum_should_match=2) || term5 || term6 ----- - -if NEST identified both sides of a binary `||` operation as only containing `should` clauses and -joined them together, it would give a different meaning to the `minimum_should_match` parameter of -the first `bool` query; rewriting this to a single `bool` with 5 `should` clauses would break the semantics -of the original query because only matching on `term5` or `term6` should still be a hit. - -[source,csharp] ----- -Assert( - q => q.Bool(b => b - .Should(mq => mq.Query(), mq => mq.Query(), mq => mq.Query(), mq => mq.Query()) - .MinimumShouldMatch(2) - ) - || !q.Query() || q.Query(), - new BoolQuery - { - Should = new QueryContainer[] { Query, Query, Query, Query }, - MinimumShouldMatch = 2 - } || !Query || Query, - c => - { - c.Bool.Should.Should().HaveCount(3); - var nestedBool = c.Bool.Should.First() as IQueryContainer; - nestedBool.Bool.Should.Should().HaveCount(4); - }); ----- - -[float] -=== Locked bool queries - -NEST will not combine `bool` queries if any of the query metadata is set e.g if metadata such as `boost` or `name` are set, -NEST will treat these as locked. - -Here we demonstrate that two locked `bool` queries are not combined - -[source,csharp] ----- -Assert( - q => q.Bool(b => b.Name("leftBool").Should(mq => mq.Query())) - || q.Bool(b => b.Name("rightBool").Should(mq => mq.Query())), - new BoolQuery { Name = "leftBool", Should = new QueryContainer[] { Query } } - || new BoolQuery { Name = "rightBool", Should = new QueryContainer[] { Query } }, - c => AssertDoesNotJoinOntoLockedBool(c, "leftBool")); ----- - -neither are two `bool` queries where either right query is locked - -[source,csharp] ----- -Assert( - q => q.Bool(b => b.Should(mq => mq.Query())) - || q.Bool(b => b.Name("rightBool").Should(mq => mq.Query())), - new BoolQuery { Should = new QueryContainer[] { Query } } - || new BoolQuery { Name = "rightBool", Should = new QueryContainer[] { Query } }, - c => AssertDoesNotJoinOntoLockedBool(c, "rightBool")); ----- - -or the left query is locked - -[source,csharp] ----- -Assert( - q => q.Bool(b => b.Name("leftBool").Should(mq => mq.Query())) - || q.Bool(b => b.Should(mq => mq.Query())), - new BoolQuery { Name = "leftBool", Should = new QueryContainer[] { Query } } - || new BoolQuery { Should = new QueryContainer[] { Query } }, - c => AssertDoesNotJoinOntoLockedBool(c, "leftBool")); ----- - -[float] -=== Perfomance considerations - -If you have a requirement of combining many many queries using the bool dsl please take the following into account. - -You *can* use bitwise assignments in a loop to combine many queries into a bigger bool. - -In this example we are creating a single bool query with a 1000 must clauses using the `&=` assign operator. - -[source,csharp] ----- -var c = new QueryContainer(); -var q = new TermQuery { Field = "x", Value = "x" }; - -for (var i = 0; i < 1000; i++) -{ - c &= q; -} ----- - -.... -| Median| StdDev| Gen 0| Gen 1| Gen 2| Bytes Allocated/Op -| 1.8507 ms| 0.1878 ms| 1,793.00| 21.00| -| 1.872.672,28 -.... - -As you can see while still fast its causes a lot of allocations to happen because with each iteration -we need to re evaluate the mergability of our bool query. - -Since we already know the shape of our bool query in advance its much much faster to do this instead: - -[source,csharp] ----- -QueryContainer q = new TermQuery { Field = "x", Value = "x" }; -var x = Enumerable.Range(0, 1000).Select(f => q).ToArray(); -var boolQuery = new BoolQuery -{ - Must = x -}; ----- - -.... -| Median| StdDev| Gen 0| Gen 1| Gen 2| Bytes Allocated/Op -| 31.4610 us| 0.9495 us| 439.00| -| -| 7.912,95 -.... - -The drop both in performance and allocations is tremendous! - -[NOTE] -==== -If you assigning many `bool` queries prior to NEST 2.4.6 into a bigger `bool` query using an assignment loop, -the client did not do a good job of flattening the result in the most optimal way and could -cause a stackoverflow when doing ~2000 iterations. This only applied to bitwise assigning many `bool` queries, -other queries were not affected. - -Since NEST 2.4.6 you can combine as many bool queries as you'd like this way too. -See https://github.com/elastic/elasticsearch-net/pull/2235[PR #2335 on github for more information] - -==== - diff --git a/docs/query-dsl/bool-dsl/hadouken-indentation.jpg b/docs/query-dsl/bool-dsl/hadouken-indentation.jpg deleted file mode 100644 index afe03b960d1203610f217e1045a22142c0acc720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43939 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 diff --git a/docs/query-dsl/compound/bool/bool-dsl-complex-query-usage.asciidoc b/docs/query-dsl/compound/bool/bool-dsl-complex-query-usage.asciidoc deleted file mode 100644 index 36333daec9f..00000000000 --- a/docs/query-dsl/compound/bool/bool-dsl-complex-query-usage.asciidoc +++ /dev/null @@ -1,189 +0,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/QueryDsl/Compound/Bool/BoolDslComplexQueryUsageTests.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! -//// - -[[bool-dsl-complex-query-usage]] -=== Bool Dsl Complex Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q.Query() && q.Query() -//second bool -|| (+q.Query() || +q.Query() || !q.Query() && (!q.Query() && !q.ConditionlessQuery())) -// simple nested or -&& (q.Query() || q.Query() || q.Query()) -//all conditionless bool -&& (q.NullQuery() || +q.ConditionlessQuery() || !q.ConditionlessQuery()) -// actual bool query -&& base.QueryFluent(q) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -Query && Query -//second bool -|| (+Query || +Query || !Query && (!Query && !ConditionlessQuery)) -// simple nested or -&& (Query || Query || Query) -//all conditionless bool -&& (NullQuery || +ConditionlessQuery || !ConditionlessQuery) -// actual bool query -&& base.QueryInitializer ----- - -[source,javascript] -.Example json output ----- -{ - "bool": { - "should": [ - { - "bool": { - "must": [ - { - "term": { - "x": { - "value": "y" - } - } - }, - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } - }, - { - "bool": { - "must": [ - { - "bool": { - "should": [ - { - "bool": { - "filter": [ - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } - }, - { - "bool": { - "filter": [ - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } - }, - { - "bool": { - "must_not": [ - { - "term": { - "x": { - "value": "y" - } - } - }, - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } - } - ] - } - }, - { - "bool": { - "should": [ - { - "term": { - "x": { - "value": "y" - } - } - }, - { - "term": { - "x": { - "value": "y" - } - } - }, - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } - }, - { - "bool": { - "must": [ - { - "match_all": {} - } - ], - "must_not": [ - { - "match_all": {} - } - ], - "should": [ - { - "match_all": {} - } - ], - "filter": [ - { - "match_all": {} - } - ], - "minimum_should_match": 1, - "boost": 2.0 - } - } - ] - } - } - ] - } -} ----- - diff --git a/docs/query-dsl/compound/bool/bool-query-usage.asciidoc b/docs/query-dsl/compound/bool/bool-query-usage.asciidoc deleted file mode 100644 index 8375a3c6034..00000000000 --- a/docs/query-dsl/compound/bool/bool-query-usage.asciidoc +++ /dev/null @@ -1,103 +0,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/QueryDsl/Compound/Bool/BoolQueryUsageTests.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! -//// - -[[bool-query-usage]] -=== Bool Query Usage - -A query that matches documents matching boolean combinations of other queries. -It is built using one or more boolean clauses, each clause with a typed occurrence. - -The occurrence types are: - -`must`:: - -The clause (query) must appear in matching documents and will contribute to the score. - -`filter`:: - -The clause (query) must appear in matching documents. However unlike `must`, the score of the query will be ignored. - -`should`:: - -The clause (query) should appear in the matching document. In a boolean query with no `must` or `filter` clauses, one or more `should` clauses must match a document. -The minimum number of should clauses to match can be set using the `minimum_should_match` parameter. - -`must_not`:: - -The clause (query) must not appear in the matching documents. - -Check out the <> for more details on `bool` queries with NEST. - -See the Elasticsearch documentation on {ref_current}/query-dsl-bool-query.html[bool query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Bool(b => b - .MustNot(m => m.MatchAll()) - .Should(m => m.MatchAll()) - .Must(m => m.MatchAll()) - .Filter(f => f.MatchAll()) - .MinimumShouldMatch(1) - .Boost(2)) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new BoolQuery -{ - MustNot = new QueryContainer[] { new MatchAllQuery() }, - Should = new QueryContainer[] { new MatchAllQuery() }, - Must = new QueryContainer[] { new MatchAllQuery() }, - Filter = new QueryContainer[] { new MatchAllQuery() }, - MinimumShouldMatch = 1, - Boost = 2 -} ----- - -[source,javascript] -.Example json output ----- -{ - "bool": { - "must": [ - { - "match_all": {} - } - ], - "must_not": [ - { - "match_all": {} - } - ], - "should": [ - { - "match_all": {} - } - ], - "filter": [ - { - "match_all": {} - } - ], - "minimum_should_match": 1, - "boost": 2.0 - } -} ----- - diff --git a/docs/query-dsl/compound/boosting/boosting-query-usage.asciidoc b/docs/query-dsl/compound/boosting/boosting-query-usage.asciidoc deleted file mode 100644 index 0d35b8434f7..00000000000 --- a/docs/query-dsl/compound/boosting/boosting-query-usage.asciidoc +++ /dev/null @@ -1,67 +0,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/QueryDsl/Compound/Boosting/BoostingQueryUsageTests.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! -//// - -[[boosting-query-usage]] -=== Boosting Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Boosting(c => c - .Name("named_query") - .Boost(1.1) - .Positive(qq => qq.MatchAll(m => m.Name("filter"))) - .Negative(qq => qq.MatchAll(m => m.Name("query"))) - .NegativeBoost(1.12) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new BoostingQuery() -{ - Name = "named_query", - Boost = 1.1, - PositiveQuery = new MatchAllQuery { Name = "filter" }, - NegativeQuery = new MatchAllQuery() { Name = "query" }, - NegativeBoost = 1.12 -} ----- - -[source,javascript] -.Example json output ----- -{ - "boosting": { - "_name": "named_query", - "boost": 1.1, - "negative": { - "match_all": { - "_name": "query" - } - }, - "negative_boost": 1.12, - "positive": { - "match_all": { - "_name": "filter" - } - } - } -} ----- - diff --git a/docs/query-dsl/compound/constant-score/constant-score-query-usage.asciidoc b/docs/query-dsl/compound/constant-score/constant-score-query-usage.asciidoc deleted file mode 100644 index 1ee3e361f51..00000000000 --- a/docs/query-dsl/compound/constant-score/constant-score-query-usage.asciidoc +++ /dev/null @@ -1,57 +0,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/QueryDsl/Compound/ConstantScore/ConstantScoreQueryUsageTests.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! -//// - -[[constant-score-query-usage]] -=== Constant Score Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.ConstantScore(c => c - .Name("named_query") - .Boost(1.1) - .Filter(qq => qq.MatchAll(m => m.Name("filter"))) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ConstantScoreQuery() -{ - Name = "named_query", - Boost = 1.1, - Filter = new MatchAllQuery { Name = "filter" }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "constant_score": { - "_name": "named_query", - "boost": 1.1, - "filter": { - "match_all": { - "_name": "filter" - } - } - } -} ----- - diff --git a/docs/query-dsl/compound/dismax/dismax-query-usage.asciidoc b/docs/query-dsl/compound/dismax/dismax-query-usage.asciidoc deleted file mode 100644 index 6ec24d6c5c7..00000000000 --- a/docs/query-dsl/compound/dismax/dismax-query-usage.asciidoc +++ /dev/null @@ -1,74 +0,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/QueryDsl/Compound/Dismax/DismaxQueryUsageTests.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! -//// - -[[dismax-query-usage]] -=== Dismax Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.DisMax(c => c - .Name("named_query") - .Boost(1.1) - .TieBreaker(0.11) - .Queries( - qq => qq.MatchAll(m => m.Name("query1")), - qq => qq.MatchAll(m => m.Name("query2")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DisMaxQuery() -{ - Name = "named_query", - Boost = 1.1, - TieBreaker = 0.11, - Queries = new QueryContainer[] - { - new MatchAllQuery() { Name = "query1" }, - new MatchAllQuery() { Name = "query2" }, - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "dis_max": { - "_name": "named_query", - "boost": 1.1, - "queries": [ - { - "match_all": { - "_name": "query1" - } - }, - { - "match_all": { - "_name": "query2" - } - } - ], - "tie_breaker": 0.11 - } -} ----- - diff --git a/docs/query-dsl/compound/function-score/function-score-query-usage.asciidoc b/docs/query-dsl/compound/function-score/function-score-query-usage.asciidoc deleted file mode 100644 index 25c0f4c8afd..00000000000 --- a/docs/query-dsl/compound/function-score/function-score-query-usage.asciidoc +++ /dev/null @@ -1,230 +0,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/QueryDsl/Compound/FunctionScore/FunctionScoreQueryUsageTests.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! -//// - -[[function-score-query-usage]] -=== Function Score Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.FunctionScore(c => c - .Name("named_query") - .Boost(1.1) - .Query(qq => qq.MatchAll()) - .BoostMode(FunctionBoostMode.Multiply) - .ScoreMode(FunctionScoreMode.Sum) - .MaxBoost(20.0) - .MinScore(1.0) - .Functions(f => f - .Exponential(b => b - .Field(p => p.NumberOfCommits) - .Decay(0.5) - .Origin(1.0) - .Scale(0.1) - .Weight(2.1) - .Filter(fi => fi - .Range(r => r - .Field(p => p.NumberOfContributors) - .GreaterThan(10) - ) - ) - ) - .GaussDate(b => b.Field(p => p.LastActivity).Origin(DateMath.Now).Decay(0.5).Scale("1d")) - .LinearGeoLocation(b => b - .Field(p => p.LocationPoint) - .Origin(new GeoLocation(70, -70)) - .Scale(Distance.Miles(1)) - .MultiValueMode(MultiValueMode.Average) - ) - .FieldValueFactor(b => b - .Field(p => p.NumberOfContributors) - .Factor(1.1) - .Missing(0.1) - .Modifier(FieldValueFactorModifier.Square) - .Weight(3) - .Filter(fi => fi - .Term(t => t - .Field(p => p.Branches) - .Value("dev") - ) - ) - ) - .RandomScore(r => r.Seed(1337).Field("_seq_no")) - .RandomScore(r => r.Seed("randomstring").Field("_seq_no")) - .Weight(1.0) - .ScriptScore(s => s - .Script(ss => ss - .Source("Math.log(2 + doc['numberOfCommits'].value)") - ) - .Weight(2) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FunctionScoreQuery() -{ - Name = "named_query", - Boost = 1.1, - Query = new MatchAllQuery(), - BoostMode = FunctionBoostMode.Multiply, - ScoreMode = FunctionScoreMode.Sum, - MaxBoost = 20.0, - MinScore = 1.0, - Functions = new List - { - new ExponentialDecayFunction - { - Origin = 1.0, - Decay = 0.5, - Field = Field(p => p.NumberOfCommits), - Scale = 0.1, - Weight = 2.1, - Filter = new NumericRangeQuery - { - Field = Field(f => f.NumberOfContributors), - GreaterThan = 10 - } - }, - new GaussDateDecayFunction - { Origin = DateMath.Now, Field = Field(p => p.LastActivity), Decay = 0.5, Scale = TimeSpan.FromDays(1) }, - new LinearGeoDecayFunction - { - Origin = new GeoLocation(70, -70), Field = Field(p => p.LocationPoint), Scale = Distance.Miles(1), - MultiValueMode = MultiValueMode.Average - }, - new FieldValueFactorFunction - { - Field = Field(p => p.NumberOfContributors), - Factor = 1.1, - Missing = 0.1, - Modifier = FieldValueFactorModifier.Square, - Weight = 3, - Filter = new TermQuery - { - Field = Field(p => p.Branches), - Value = "dev" - } - }, - new RandomScoreFunction { Seed = 1337, Field = "_seq_no" }, - new RandomScoreFunction { Seed = "randomstring", Field = "_seq_no" }, - new WeightFunction { Weight = 1.0 }, - new ScriptScoreFunction { Script = new InlineScript("Math.log(2 + doc['numberOfCommits'].value)"), Weight = 2.0 } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "function_score": { - "_name": "named_query", - "boost": 1.1, - "boost_mode": "multiply", - "functions": [ - { - "exp": { - "numberOfCommits": { - "origin": 1.0, - "scale": 0.1, - "decay": 0.5 - } - }, - "weight": 2.1, - "filter": { - "range": { - "numberOfContributors": { - "gt": 10.0 - } - } - } - }, - { - "gauss": { - "lastActivity": { - "origin": "now", - "scale": "1d", - "decay": 0.5 - } - } - }, - { - "linear": { - "locationPoint": { - "origin": { - "lat": 70.0, - "lon": -70.0 - }, - "scale": "1mi" - }, - "multi_value_mode": "avg" - } - }, - { - "filter": { - "term": { - "branches": { - "value": "dev" - } - } - }, - "field_value_factor": { - "field": "numberOfContributors", - "factor": 1.1, - "missing": 0.1, - "modifier": "square" - }, - "weight": 3.0 - }, - { - "random_score": { - "seed": 1337, - "field": "_seq_no" - } - }, - { - "random_score": { - "seed": "randomstring", - "field": "_seq_no" - } - }, - { - "weight": 1.0 - }, - { - "script_score": { - "script": { - "source": "Math.log(2 + doc['numberOfCommits'].value)" - } - }, - "weight": 2.0 - } - ], - "max_boost": 20.0, - "min_score": 1.0, - "query": { - "match_all": {} - }, - "score_mode": "sum" - } -} ----- - diff --git a/docs/query-dsl/full-text/combined-fields/combined-fields-usage.asciidoc b/docs/query-dsl/full-text/combined-fields/combined-fields-usage.asciidoc deleted file mode 100644 index 8c407585983..00000000000 --- a/docs/query-dsl/full-text/combined-fields/combined-fields-usage.asciidoc +++ /dev/null @@ -1,115 +0,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/QueryDsl/FullText/CombinedFields/CombinedFieldsUsageTests.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! -//// - -[[combined-fields-usage]] -=== Combined Fields Usage - -The `combined_fields` query supports searching multiple text fields as if their contents had been indexed into one combined field. It takes a -term-centric view of the query: first it analyzes the query string into individual terms, then looks for each term in any of the fields. - -See the Elasticsearch documentation on {ref_current}/query-dsl-combined-fields-query.html[combined fields query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.CombinedFields(c => c - .Fields(f => f.Field(p => p.Description).Field("myOtherField")) - .Query("hello world") - .Boost(1.1) - .Operator(Operator.Or) - .MinimumShouldMatch("2") - .ZeroTermsQuery(ZeroTermsQuery.All) - .Name("combined_fields") - .AutoGenerateSynonymsPhraseQuery(false) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CombinedFieldsQuery -{ - Fields = Field(p => p.Description).And("myOtherField"), - Query = "hello world", - Boost = 1.1, - Operator = Operator.Or, - MinimumShouldMatch = "2", - ZeroTermsQuery = ZeroTermsQuery.All, - Name = "combined_fields", - AutoGenerateSynonymsPhraseQuery = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "combined_fields": { - "_name": "combined_fields", - "boost": 1.1, - "query": "hello world", - "minimum_should_match": "2", - "operator": "or", - "fields": [ - "description", - "myOtherField" - ], - "zero_terms_query": "all", - "auto_generate_synonyms_phrase_query": false - } -} ----- - -[float] -=== Combined fields with boost usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.CombinedFields(c => c - .Fields(Field(p => p.Description, 2.2).And("myOtherField^1.2")) - .Query("hello world") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CombinedFieldsQuery -{ - Fields = Field(p => p.Description, 2.2).And("myOtherField^1.2"), - Query = "hello world", -} ----- - -[source,javascript] -.Example json output ----- -{ - "combined_fields": { - "query": "hello world", - "fields": [ - "description^2.2", - "myOtherField^1.2" - ] - } -} ----- - diff --git a/docs/query-dsl/full-text/common-terms/common-terms-usage.asciidoc b/docs/query-dsl/full-text/common-terms/common-terms-usage.asciidoc deleted file mode 100644 index 90d8dacf0df..00000000000 --- a/docs/query-dsl/full-text/common-terms/common-terms-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/FullText/CommonTerms/CommonTermsUsageTests.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! -//// - -[[common-terms-usage]] -=== Common Terms Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.CommonTerms(c => c - .Field(p => p.Description) - .Analyzer("standard") - .Boost(1.1) - .CutoffFrequency(0.001) - .HighFrequencyOperator(Operator.And) - .LowFrequencyOperator(Operator.Or) - .MinimumShouldMatch(1) - .Name("named_query") - .Query("nelly the elephant not as a") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new CommonTermsQuery() -{ - Field = Field(p => p.Description), - Analyzer = "standard", - Boost = 1.1, - CutoffFrequency = 0.001, - HighFrequencyOperator = Operator.And, - LowFrequencyOperator = Operator.Or, - MinimumShouldMatch = 1, - Name = "named_query", - Query = "nelly the elephant not as a" -} ----- - -[source,javascript] -.Example json output ----- -{ - "common": { - "description": { - "_name": "named_query", - "boost": 1.1, - "query": "nelly the elephant not as a", - "cutoff_frequency": 0.001, - "low_freq_operator": "or", - "high_freq_operator": "and", - "minimum_should_match": 1, - "analyzer": "standard" - } - } -} ----- - diff --git a/docs/query-dsl/full-text/intervals/intervals-usage.asciidoc b/docs/query-dsl/full-text/intervals/intervals-usage.asciidoc deleted file mode 100644 index d9d92c76a1d..00000000000 --- a/docs/query-dsl/full-text/intervals/intervals-usage.asciidoc +++ /dev/null @@ -1,309 +0,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/QueryDsl/FullText/Intervals/IntervalsUsageTests.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! -//// - -[[intervals-usage]] -=== Intervals Usage - -An intervals query allows fine-grained control over the order and proximity of matching terms. -Matching rules are constructed from a small set of definitions, and the rules are then applied to terms from a particular field. - -The definitions produce sequences of minimal intervals that span terms in a body of text. These intervals can be further combined and filtered by parent sources. - -Be sure to read the Elasticsearch documentation on {ref_current}/query-dsl-intervals-query.html[Intervals query] - -==== Fluent DSL example - -[source,csharp] ----- -q -.Intervals(c => c - .Field(p => p.Description) - .Name("named_query") - .Boost(1.1) - .AnyOf(any => any - .Intervals(i => i - .Match(m => m - .Query("my favourite food") - .MaxGaps(5) - .Ordered() - .Filter(f => f - .Containing(co => co - .Match(mm => mm - .Query("kimchy") - ) - ) - ) - ) - .AllOf(all => all - .Intervals(ii => ii - .Match(m => m - .Query("hot water") - ) - .Match(m => m - .Query("cold porridge") - ) - ) - .Filter(f => f - .Script(s => s - .Source("interval.start > 0 && interval.end < 200") - ) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new IntervalsQuery -{ - Field = Field(p => p.Description), - Name = "named_query", - Boost = 1.1, - AnyOf = new IntervalsAnyOf - { - Intervals = new IntervalsContainer[] - { - new IntervalsMatch - { - Query = "my favourite food", - MaxGaps = 5, - Ordered = true, - Filter = new IntervalsFilter - { - Containing = new IntervalsMatch - { - Query = "kimchy" - } - } - }, - new IntervalsAllOf - { - Intervals = new IntervalsContainer[] - { - new IntervalsMatch - { - Query = "hot water", - }, - new IntervalsMatch - { - Query = "cold porridge", - }, - }, - Filter = new IntervalsFilter - { - Script = new InlineScript("interval.start > 0 && interval.end < 200") - } - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "intervals": { - "description": { - "_name": "named_query", - "boost": 1.1, - "any_of": { - "intervals": [ - { - "match": { - "query": "my favourite food", - "max_gaps": 5, - "ordered": true, - "filter": { - "containing": { - "match": { - "query": "kimchy" - } - } - } - } - }, - { - "all_of": { - "intervals": [ - { - "match": { - "query": "hot water" - } - }, - { - "match": { - "query": "cold porridge" - } - } - ], - "filter": { - "script": { - "source": "interval.start > 0 && interval.end < 200" - } - } - } - } - ] - } - } - } -} ----- - -[float] -=== Prefix and Wildcard rules - -Prefix and Wildcard rules can be used to search for intervals that contain -terms starting with a prefix, or match a pattern, respectively. - -NOTE: Only available in Elasticsearch 7.3.0+ - -==== Fluent DSL example - -[source,csharp] ----- -q -.Intervals(c => c - .Field(p => p.Description) - .Name("named_query") - .Boost(1.1) - .AnyOf(any => any - .Intervals(i => i - .Wildcard(m => m - .Pattern(IntervalsPrefix + "*") - ) - .Prefix(m => m - .Prefix(IntervalsPrefix) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new IntervalsQuery -{ - Field = Field(p => p.Description), - Name = "named_query", - Boost = 1.1, - AnyOf = new IntervalsAnyOf - { - Intervals = new IntervalsContainer[] - { - new IntervalsWildcard - { - Pattern = IntervalsPrefix + "*" - }, - new IntervalsPrefix - { - Prefix = IntervalsPrefix - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "intervals": { - "description": { - "_name": "named_query", - "boost": 1.1, - "any_of": { - "intervals": [ - { - "wildcard": { - "pattern": "lorem*" - } - }, - { - "prefix": { - "prefix": "lorem" - } - } - ] - } - } - } -} ----- - -[float] -=== Fuzzy rules - -Fuzzy rules can be used to match terms that are similar to the provided term, within an edit distance defined by Fuzziness. -If the fuzzy expansion matches more than 128 terms, Elasticsearch returns an error. - -NOTE: Only available in Elasticsearch 7.6.0+ - -==== Fluent DSL example - -[source,csharp] ----- -q -.Intervals(c => c - .Field(p => p.Description) - .Name("named_query") - .Boost(1.1) - .Fuzzy(m => m - .Term(IntervalsFuzzy) - .Fuzziness(Fuzziness.Auto) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new IntervalsQuery -{ - Field = Field(p => p.Description), - Name = "named_query", - Boost = 1.1, - Fuzzy = new IntervalsFuzzy - { - Term = IntervalsFuzzy, - Fuzziness = Fuzziness.Auto - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "intervals": { - "description": { - "_name": "named_query", - "boost": 1.1, - "fuzzy": { - "term": "lorem", - "fuzziness": "AUTO" - } - } - } -} ----- - diff --git a/docs/query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc b/docs/query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc deleted file mode 100644 index b31f73cb807..00000000000 --- a/docs/query-dsl/full-text/match-bool-prefix/match-bool-prefix-usage.asciidoc +++ /dev/null @@ -1,69 +0,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/QueryDsl/FullText/MatchBoolPrefix/MatchBoolPrefixUsageTests.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! -//// - -[[match-bool-prefix-usage]] -=== Match Bool Prefix Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MatchBoolPrefix(c => c - .Field(p => p.Description) - .Analyzer("standard") - .Boost(1.1) - .Query("lorem ips") - .Fuzziness(Fuzziness.AutoLength(3, 6)) - .FuzzyTranspositions() - .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10)) - .Name("named_query") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatchBoolPrefixQuery -{ - Field = Field(p => p.Description), - Analyzer = "standard", - Boost = 1.1, - Name = "named_query", - Query = "lorem ips", - Fuzziness = Fuzziness.AutoLength(3, 6), - FuzzyTranspositions = true, - FuzzyRewrite = MultiTermQueryRewrite.TopTermsBlendedFreqs(10), -} ----- - -[source,javascript] -.Example json output ----- -{ - "match_bool_prefix": { - "description": { - "_name": "named_query", - "boost": 1.1, - "query": "lorem ips", - "analyzer": "standard", - "fuzzy_rewrite": "top_terms_blended_freqs_10", - "fuzziness": "AUTO:3,6", - "fuzzy_transpositions": true - } - } -} ----- - diff --git a/docs/query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc b/docs/query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc deleted file mode 100644 index 147173f2750..00000000000 --- a/docs/query-dsl/full-text/match-phrase-prefix/match-phrase-prefix-usage.asciidoc +++ /dev/null @@ -1,66 +0,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/QueryDsl/FullText/MatchPhrasePrefix/MatchPhrasePrefixUsageTests.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! -//// - -[[match-phrase-prefix-usage]] -=== Match Phrase Prefix Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MatchPhrasePrefix(c => c - .Field(p => p.Description) - .Analyzer("standard") - .Boost(1.1) - .Query("hello worl") - .MaxExpansions(2) - .Slop(2) - .Name("named_query") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatchPhrasePrefixQuery -{ - Field = Field(p => p.Description), - Analyzer = "standard", - Boost = 1.1, - Name = "named_query", - Query = "hello worl", - MaxExpansions = 2, - Slop = 2 -} ----- - -[source,javascript] -.Example json output ----- -{ - "match_phrase_prefix": { - "description": { - "_name": "named_query", - "boost": 1.1, - "query": "hello worl", - "analyzer": "standard", - "max_expansions": 2, - "slop": 2 - } - } -} ----- - diff --git a/docs/query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc b/docs/query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc deleted file mode 100644 index 82db8b0c009..00000000000 --- a/docs/query-dsl/full-text/match-phrase/match-phrase-usage.asciidoc +++ /dev/null @@ -1,63 +0,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/QueryDsl/FullText/MatchPhrase/MatchPhraseUsageTests.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! -//// - -[[match-phrase-usage]] -=== Match Phrase Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MatchPhrase(c => c - .Field(p => p.Description) - .Analyzer("standard") - .Boost(1.1) - .Query("hello world") - .Slop(2) - .Name("named_query") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatchPhraseQuery -{ - Field = Field(p => p.Description), - Analyzer = "standard", - Boost = 1.1, - Name = "named_query", - Query = "hello world", - Slop = 2, -} ----- - -[source,javascript] -.Example json output ----- -{ - "match_phrase": { - "description": { - "_name": "named_query", - "boost": 1.1, - "query": "hello world", - "analyzer": "standard", - "slop": 2 - } - } -} ----- - diff --git a/docs/query-dsl/full-text/match/match-usage.asciidoc b/docs/query-dsl/full-text/match/match-usage.asciidoc deleted file mode 100644 index 97e6ae46550..00000000000 --- a/docs/query-dsl/full-text/match/match-usage.asciidoc +++ /dev/null @@ -1,81 +0,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/QueryDsl/FullText/Match/MatchUsageTests.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! -//// - -[[match-usage]] -=== Match Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Match(c => c - .Field(p => p.Description) - .Analyzer("standard") - .Boost(1.1) - .Query("hello world") - .Fuzziness(Fuzziness.AutoLength(3, 6)) - .Lenient() - .FuzzyTranspositions() - .MinimumShouldMatch(2) - .Operator(Operator.Or) - .FuzzyRewrite(MultiTermQueryRewrite.TopTermsBlendedFreqs(10)) - .Name("named_query") - .AutoGenerateSynonymsPhraseQuery(false) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatchQuery -{ - Field = Field(p => p.Description), - Analyzer = "standard", - Boost = 1.1, - Name = "named_query", - Query = "hello world", - Fuzziness = Fuzziness.AutoLength(3, 6), - FuzzyTranspositions = true, - MinimumShouldMatch = 2, - FuzzyRewrite = MultiTermQueryRewrite.TopTermsBlendedFreqs(10), - Lenient = true, - Operator = Operator.Or, - AutoGenerateSynonymsPhraseQuery = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "match": { - "description": { - "_name": "named_query", - "boost": 1.1, - "query": "hello world", - "analyzer": "standard", - "fuzzy_rewrite": "top_terms_blended_freqs_10", - "fuzziness": "AUTO:3,6", - "fuzzy_transpositions": true, - "lenient": true, - "minimum_should_match": 2, - "operator": "or", - "auto_generate_synonyms_phrase_query": false - } - } -} ----- - diff --git a/docs/query-dsl/full-text/multi-match/multi-match-usage.asciidoc b/docs/query-dsl/full-text/multi-match/multi-match-usage.asciidoc deleted file mode 100644 index 8d9e1945206..00000000000 --- a/docs/query-dsl/full-text/multi-match/multi-match-usage.asciidoc +++ /dev/null @@ -1,174 +0,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/QueryDsl/FullText/MultiMatch/MultiMatchUsageTests.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! -//// - -[[multi-match-usage]] -=== Multi Match Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MultiMatch(c => c - .Fields(f => f.Field(p => p.Description).Field("myOtherField")) - .Query("hello world") - .Analyzer("standard") - .Boost(1.1) - .Slop(2) - .Fuzziness(Fuzziness.Auto) - .PrefixLength(2) - .MaxExpansions(2) - .Operator(Operator.Or) - .MinimumShouldMatch(2) - .FuzzyRewrite(MultiTermQueryRewrite.ConstantScoreBoolean) - .TieBreaker(1.1) - .CutoffFrequency(0.001) - .Lenient() - .ZeroTermsQuery(ZeroTermsQuery.All) - .Name("named_query") - .AutoGenerateSynonymsPhraseQuery(false) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MultiMatchQuery -{ - Fields = Field(p => p.Description).And("myOtherField"), - Query = "hello world", - Analyzer = "standard", - Boost = 1.1, - Slop = 2, - Fuzziness = Fuzziness.Auto, - PrefixLength = 2, - MaxExpansions = 2, - Operator = Operator.Or, - MinimumShouldMatch = 2, - FuzzyRewrite = MultiTermQueryRewrite.ConstantScoreBoolean, - TieBreaker = 1.1, - CutoffFrequency = 0.001, - Lenient = true, - ZeroTermsQuery = ZeroTermsQuery.All, - Name = "named_query", - AutoGenerateSynonymsPhraseQuery = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "multi_match": { - "_name": "named_query", - "boost": 1.1, - "query": "hello world", - "analyzer": "standard", - "fuzzy_rewrite": "constant_score_boolean", - "fuzziness": "AUTO", - "cutoff_frequency": 0.001, - "prefix_length": 2, - "max_expansions": 2, - "slop": 2, - "lenient": true, - "tie_breaker": 1.1, - "minimum_should_match": 2, - "operator": "or", - "fields": [ - "description", - "myOtherField" - ], - "zero_terms_query": "all", - "auto_generate_synonyms_phrase_query": false - } -} ----- - -[float] -=== Multi match with boost usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MultiMatch(c => c - .Fields(Field(p => p.Description, 2.2).And("myOtherField^0.3")) - .Query("hello world") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MultiMatchQuery -{ - Fields = Field(p => p.Description, 2.2).And("myOtherField^0.3"), - Query = "hello world", -} ----- - -[source,javascript] -.Example json output ----- -{ - "multi_match": { - "query": "hello world", - "fields": [ - "description^2.2", - "myOtherField^0.3" - ] - } -} ----- - -[float] -=== Multi match with no fields specified - -Starting with Elasticsearch 6.1.0+, it's possible to send a Multi Match query without providing any fields. -When no fields are provided the Multi Match query will use the fields defined in the index setting `index.query.default_field` -(which in turns defaults to `*`). - -==== Fluent DSL example - -[source,csharp] ----- -q -.MultiMatch(c => c - .Query("hello world") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MultiMatchQuery -{ - Query = "hello world", -} ----- - -[source,javascript] -.Example json output ----- -{ - "multi_match": { - "query": "hello world" - } -} ----- - diff --git a/docs/query-dsl/full-text/query-string/query-string-usage.asciidoc b/docs/query-dsl/full-text/query-string/query-string-usage.asciidoc deleted file mode 100644 index c8b8c2bd742..00000000000 --- a/docs/query-dsl/full-text/query-string/query-string-usage.asciidoc +++ /dev/null @@ -1,110 +0,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/QueryDsl/FullText/QueryString/QueryStringUsageTests.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! -//// - -[[query-string-usage]] -=== Query String Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.QueryString(c => c - .Name("named_query") - .Boost(1.1) - .Fields(f => f.Field(p => p.Description).Field("myOtherField")) - .Query("hello world") - .DefaultOperator(Operator.Or) - .Analyzer("standard") - .QuoteAnalyzer("keyword") - .AllowLeadingWildcard() - .MaximumDeterminizedStates(2) - .Escape() - .FuzzyPrefixLength(2) - .FuzzyMaxExpansions(3) - .FuzzyRewrite(MultiTermQueryRewrite.ConstantScore) - .Rewrite(MultiTermQueryRewrite.ConstantScore) - .Fuzziness(Fuzziness.Auto) - .TieBreaker(1.2) - .AnalyzeWildcard() - .MinimumShouldMatch(2) - .QuoteFieldSuffix("'") - .Lenient() - .AutoGenerateSynonymsPhraseQuery(false) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new QueryStringQuery -{ - Fields = Field(p => p.Description).And("myOtherField"), - Boost = 1.1, - Name = "named_query", - Query = "hello world", - DefaultOperator = Operator.Or, - Analyzer = "standard", - QuoteAnalyzer = "keyword", - AllowLeadingWildcard = true, - MaximumDeterminizedStates = 2, - Escape = true, - FuzzyPrefixLength = 2, - FuzzyMaxExpansions = 3, - FuzzyRewrite = MultiTermQueryRewrite.ConstantScore, - Rewrite = MultiTermQueryRewrite.ConstantScore, - Fuzziness = Fuzziness.Auto, - TieBreaker = 1.2, - AnalyzeWildcard = true, - MinimumShouldMatch = 2, - QuoteFieldSuffix = "'", - Lenient = true, - AutoGenerateSynonymsPhraseQuery = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "query_string": { - "_name": "named_query", - "boost": 1.1, - "query": "hello world", - "default_operator": "or", - "analyzer": "standard", - "quote_analyzer": "keyword", - "allow_leading_wildcard": true, - "fuzzy_max_expansions": 3, - "fuzziness": "AUTO", - "fuzzy_prefix_length": 2, - "analyze_wildcard": true, - "max_determinized_states": 2, - "minimum_should_match": 2, - "lenient": true, - "fields": [ - "description", - "myOtherField" - ], - "tie_breaker": 1.2, - "rewrite": "constant_score", - "fuzzy_rewrite": "constant_score", - "quote_field_suffix": "'", - "escape": true, - "auto_generate_synonyms_phrase_query": false - } -} ----- - diff --git a/docs/query-dsl/full-text/simple-query-string/simple-query-string-usage.asciidoc b/docs/query-dsl/full-text/simple-query-string/simple-query-string-usage.asciidoc deleted file mode 100644 index 5904467b752..00000000000 --- a/docs/query-dsl/full-text/simple-query-string/simple-query-string-usage.asciidoc +++ /dev/null @@ -1,89 +0,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/QueryDsl/FullText/SimpleQueryString/SimpleQueryStringUsageTests.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! -//// - -[[simple-query-string-usage]] -=== Simple Query String Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SimpleQueryString(c => c - .Name("named_query") - .Boost(1.1) - .Fields(f => f.Field(p => p.Description).Field("myOtherField")) - .Query("hello world") - .Analyzer("standard") - .DefaultOperator(Operator.Or) - .Flags(SimpleQueryStringFlags.And | SimpleQueryStringFlags.Near) - .Lenient() - .AnalyzeWildcard() - .MinimumShouldMatch("30%") - .FuzzyPrefixLength(0) - .FuzzyMaxExpansions(50) - .FuzzyTranspositions() - .AutoGenerateSynonymsPhraseQuery(false) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SimpleQueryStringQuery -{ - Name = "named_query", - Boost = 1.1, - Fields = Field(p => p.Description).And("myOtherField"), - Query = "hello world", - Analyzer = "standard", - DefaultOperator = Operator.Or, - Flags = SimpleQueryStringFlags.And | SimpleQueryStringFlags.Near, - Lenient = true, - AnalyzeWildcard = true, - MinimumShouldMatch = "30%", - FuzzyPrefixLength = 0, - FuzzyMaxExpansions = 50, - FuzzyTranspositions = true, - AutoGenerateSynonymsPhraseQuery = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "simple_query_string": { - "_name": "named_query", - "boost": 1.1, - "fields": [ - "description", - "myOtherField" - ], - "query": "hello world", - "analyzer": "standard", - "default_operator": "or", - "flags": "AND|NEAR", - "lenient": true, - "analyze_wildcard": true, - "minimum_should_match": "30%", - "fuzzy_prefix_length": 0, - "fuzzy_max_expansions": 50, - "fuzzy_transpositions": true, - "auto_generate_synonyms_phrase_query": false - } -} ----- - diff --git a/docs/query-dsl/geo/bounding-box/geo-bounding-box-query-usage.asciidoc b/docs/query-dsl/geo/bounding-box/geo-bounding-box-query-usage.asciidoc deleted file mode 100644 index 759d76efcbb..00000000000 --- a/docs/query-dsl/geo/bounding-box/geo-bounding-box-query-usage.asciidoc +++ /dev/null @@ -1,122 +0,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/QueryDsl/Geo/BoundingBox/GeoBoundingBoxQueryUsageTests.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-bounding-box-query-usage]] -=== Geo Bounding Box Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoBoundingBox(g => g - .Boost(1.1) - .Name("named_query") - .Field(p => p.LocationPoint) - .BoundingBox(b => b - .TopLeft(34, -34) - .BottomRight(-34, 34) - ) - .ValidationMethod(GeoValidationMethod.Strict) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoBoundingBoxQuery -{ - Boost = 1.1, - Name = "named_query", - Field = Infer.Field(p => p.LocationPoint), - BoundingBox = new Nest.BoundingBox - { - TopLeft = new GeoLocation(34, -34), - BottomRight = new GeoLocation(-34, 34), - }, - ValidationMethod = GeoValidationMethod.Strict -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_bounding_box": { - "validation_method": "strict", - "_name": "named_query", - "boost": 1.1, - "locationPoint": { - "top_left": { - "lat": 34.0, - "lon": -34.0 - }, - "bottom_right": { - "lat": -34.0, - "lon": 34.0 - } - } - } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoBoundingBox(g => g - .Boost(1.1) - .Name("named_query") - .Field(p => p.LocationPoint) - .BoundingBox(b => b - .WellKnownText("BBOX (-34, 34, 34, -34)") - ) - .ValidationMethod(GeoValidationMethod.Strict) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoBoundingBoxQuery -{ - Boost = 1.1, - Name = "named_query", - Field = Infer.Field(p => p.LocationPoint), - BoundingBox = new Nest.BoundingBox - { - WellKnownText = "BBOX (-34, 34, 34, -34)" - }, - ValidationMethod = GeoValidationMethod.Strict -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_bounding_box": { - "validation_method": "strict", - "_name": "named_query", - "boost": 1.1, - "locationPoint": { - "wkt": "BBOX (-34, 34, 34, -34)" - } - } -} ----- - diff --git a/docs/query-dsl/geo/distance/geo-distance-query-usage.asciidoc b/docs/query-dsl/geo/distance/geo-distance-query-usage.asciidoc deleted file mode 100644 index b738f68bc55..00000000000 --- a/docs/query-dsl/geo/distance/geo-distance-query-usage.asciidoc +++ /dev/null @@ -1,67 +0,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/QueryDsl/Geo/Distance/GeoDistanceQueryUsageTests.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-distance-query-usage]] -=== Geo Distance Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoDistance(g => g - .Boost(1.1) - .Name("named_query") - .Field(p => p.LocationPoint) - .DistanceType(GeoDistanceType.Arc) - .Location(34, -34) - .Distance("200m") - .ValidationMethod(GeoValidationMethod.IgnoreMalformed) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoDistanceQuery -{ - Boost = 1.1, - Name = "named_query", - Field = Infer.Field(p => p.LocationPoint), - DistanceType = GeoDistanceType.Arc, - Location = new GeoLocation(34, -34), - Distance = "200m", - ValidationMethod = GeoValidationMethod.IgnoreMalformed -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_distance": { - "_name": "named_query", - "boost": 1.1, - "distance": "200m", - "distance_type": "arc", - "validation_method": "ignore_malformed", - "locationPoint": { - "lat": 34.0, - "lon": -34.0 - } - } -} ----- - diff --git a/docs/query-dsl/geo/geo-shape/geo-shape-query-usage.asciidoc b/docs/query-dsl/geo/geo-shape/geo-shape-query-usage.asciidoc deleted file mode 100644 index aaad92b651c..00000000000 --- a/docs/query-dsl/geo/geo-shape/geo-shape-query-usage.asciidoc +++ /dev/null @@ -1,1014 +0,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/QueryDsl/Geo/GeoShape/GeoShapeQueryUsageTests.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-shape-query-usage]] -=== Geo Shape Query Usage - -The GeoShape Query uses the same grid square representation as the geo_shape mapping -to find documents that have a shape that intersects with the query shape. -It will also use the same PrefixTree configuration as defined for the field mapping. - -The query supports two ways of defining the query shape, either by providing a whole -shape definition, or by referencing the name of a shape pre-indexed in another index. - -See the Elasticsearch documentation on {ref_current}/query-dsl-geo-shape-query.html[geoshape queries] for more detail. - -[[geo-shape-query-point]] -[float] -== Querying with Point - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .Point(PointCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new PointGeoShape(PointCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "point", - "coordinates": [ - 38.897676, - -77.03653 - ] - } - } - } -} ----- - -[[geo-shape-query-multipoint]] -[float] -== Querying with MultiPoint - -NOTE: Elasticsearch 7.7.0+ required when MultiPoint is indexed using BKD trees (the default). - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .MultiPoint(MultiPointCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new MultiPointGeoShape(MultiPointCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "multipoint", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - } - } - } -} ----- - -[[geo-shape-query-linestring]] -[float] -== Querying with LineString - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .LineString(LineStringCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new LineStringGeoShape(LineStringCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "linestring", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - } - } - } -} ----- - -[[geo-shape-query-multilinestring]] -[float] -== Querying with MultiLineString - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .MultiLineString(MultiLineStringCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new MultiLineStringGeoShape(MultiLineStringCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "multilinestring", - "coordinates": [ - [ - [ - 2.0, - 12.0 - ], - [ - 2.0, - 13.0 - ], - [ - 3.0, - 13.0 - ], - [ - 3.0, - 12.0 - ] - ], - [ - [ - 0.0, - 10.0 - ], - [ - 0.0, - 11.0 - ], - [ - 1.0, - 11.0 - ], - [ - 1.0, - 10.0 - ] - ], - [ - [ - 0.2, - 10.2 - ], - [ - 0.2, - 10.8 - ], - [ - 0.8, - 10.8 - ], - [ - 0.8, - 12.0 - ] - ] - ] - } - } - } -} ----- - -[[geo-shape-query-polygon]] -[float] -== Querying with Polygon - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .Polygon(PolygonCoordinates) - ) - .IgnoreUnmapped() - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new PolygonGeoShape(PolygonCoordinates), - IgnoreUnmapped = true, - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "ignore_unmapped": true, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "polygon", - "coordinates": [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ] - } - } - } -} ----- - -[[geo-shape-query-multipolygon]] -[float] -== Querying with MultiPolygon - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .MultiPolygon(MultiPolygonCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new MultiPolygonGeoShape(MultiPolygonCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "multipolygon", - "coordinates": [ - [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ], - [ - [ - [ - 8.0, - -15.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 8.0, - -15.0 - ] - ] - ] - ] - } - } - } -} ----- - -[[geo-shape-query-geometrycollection]] -[float] -== Querying with GeometryCollection - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .GeometryCollection( - new PointGeoShape(PointCoordinates), - new MultiPointGeoShape(MultiPointCoordinates), - new LineStringGeoShape(LineStringCoordinates), - new MultiLineStringGeoShape(MultiLineStringCoordinates), - new PolygonGeoShape(PolygonCoordinates), - new MultiPolygonGeoShape(MultiPolygonCoordinates) - ) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new GeometryCollection(new IGeoShape[] - { - new PointGeoShape(PointCoordinates), - new MultiPointGeoShape(MultiPointCoordinates), - new LineStringGeoShape(LineStringCoordinates), - new MultiLineStringGeoShape(MultiLineStringCoordinates), - new PolygonGeoShape(PolygonCoordinates), - new MultiPolygonGeoShape(MultiPolygonCoordinates), - }), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "geometrycollection", - "geometries": [ - { - "type": "point", - "coordinates": [ - 38.897676, - -77.03653 - ] - }, - { - "type": "multipoint", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - }, - { - "type": "linestring", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - }, - { - "type": "multilinestring", - "coordinates": [ - [ - [ - 2.0, - 12.0 - ], - [ - 2.0, - 13.0 - ], - [ - 3.0, - 13.0 - ], - [ - 3.0, - 12.0 - ] - ], - [ - [ - 0.0, - 10.0 - ], - [ - 0.0, - 11.0 - ], - [ - 1.0, - 11.0 - ], - [ - 1.0, - 10.0 - ] - ], - [ - [ - 0.2, - 10.2 - ], - [ - 0.2, - 10.8 - ], - [ - 0.8, - 10.8 - ], - [ - 0.8, - 12.0 - ] - ] - ] - }, - { - "type": "polygon", - "coordinates": [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ] - }, - { - "type": "multipolygon", - "coordinates": [ - [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ], - [ - [ - [ - 8.0, - -15.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 8.0, - -15.0 - ] - ] - ] - ] - } - ] - } - } - } -} ----- - -[[geo-shape-query-envelope]] -[float] -== Querying with Envelope - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .Envelope(EnvelopeCoordinates) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new EnvelopeGeoShape(EnvelopeCoordinates), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "envelope", - "coordinates": [ - [ - -45.0, - 45.0 - ], - [ - 45.0, - -45.0 - ] - ] - } - } - } -} ----- - -[[geo-shape-query-circle]] -[float] -== Querying with Circle - -NOTE: Available in Elasticsearch 7.7.0+ - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .Shape(s => s - .Circle(CircleCoordinates, "100m") - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - Shape = new CircleGeoShape(CircleCoordinates, "100m"), - Relation = GeoShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "relation": "intersects", - "shape": { - "type": "circle", - "radius": "100m", - "coordinates": [ - 45.0, - -45.0 - ] - } - } - } -} ----- - -[[geo-shape-query-indexedshape]] -[float] -== Querying with an indexed shape - -The GeoShape Query supports using a shape which has already been indexed in another index and/or index type within a geoshape query. -This is particularly useful for when you have a pre-defined list of shapes which are useful to your application and you want to reference this -using a logical name (for example __New Zealand__), rather than having to provide their coordinates within the request each time. - -See the Elasticsearch documentation on {ref_current}/query-dsl-geo-shape-query.html[geoshape queries] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoShape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationShape) - .IndexedShape(p => p - .Id(Project.Instance.Name) - .Path(pp => pp.LocationShape) - .Routing(Project.Instance.Name) - ) - .Relation(GeoShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.LocationShape), - IndexedShape = new FieldLookup - { - Id = Project.Instance.Name, - Index = Infer.Index(), - Path = Infer.Field(p => p.LocationShape), - Routing = Project.Instance.Name - }, - Relation = GeoShapeRelation.Intersects -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_shape": { - "_name": "named_query", - "boost": 1.1, - "locationShape": { - "indexed_shape": { - "id": "Durgan LLC", - "index": "project", - "path": "locationShape", - "routing": "Durgan LLC" - }, - "relation": "intersects" - } - } -} ----- - diff --git a/docs/query-dsl/geo/polygon/geo-polygon-query-usage.asciidoc b/docs/query-dsl/geo/polygon/geo-polygon-query-usage.asciidoc deleted file mode 100644 index 3931cc3c6be..00000000000 --- a/docs/query-dsl/geo/polygon/geo-polygon-query-usage.asciidoc +++ /dev/null @@ -1,73 +0,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/QueryDsl/Geo/Polygon/GeoPolygonQueryUsageTests.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-polygon-query-usage]] -=== Geo Polygon Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.GeoPolygon(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.LocationPoint) - .ValidationMethod(GeoValidationMethod.Strict) - .Points(new GeoLocation(45, -45), new GeoLocation(-34, 34), new GeoLocation(70, -70)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new GeoPolygonQuery -{ - Boost = 1.1, - Name = "named_query", - ValidationMethod = GeoValidationMethod.Strict, - Points = new[] { new GeoLocation(45, -45), new GeoLocation(-34, 34), new GeoLocation(70, -70) }, - Field = Infer.Field(p => p.LocationPoint) -} ----- - -[source,javascript] -.Example json output ----- -{ - "geo_polygon": { - "_name": "named_query", - "boost": 1.1, - "validation_method": "strict", - "locationPoint": { - "points": [ - { - "lat": 45.0, - "lon": -45.0 - }, - { - "lat": -34.0, - "lon": 34.0 - }, - { - "lat": 70.0, - "lon": -70.0 - } - ] - } - } -} ----- - diff --git a/docs/query-dsl/joining/has-child/has-child-query-usage.asciidoc b/docs/query-dsl/joining/has-child/has-child-query-usage.asciidoc deleted file mode 100644 index 0b48167edc2..00000000000 --- a/docs/query-dsl/joining/has-child/has-child-query-usage.asciidoc +++ /dev/null @@ -1,71 +0,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/QueryDsl/Joining/HasChild/HasChildQueryUsageTests.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! -//// - -[[has-child-query-usage]] -=== Has Child Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.HasChild(c => c - .Name("named_query") - .Boost(1.1) - .InnerHits(i => i.Explain()) - .MaxChildren(5) - .MinChildren(1) - .ScoreMode(ChildScoreMode.Average) - .Query(qq => qq.MatchAll()) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new HasChildQuery -{ - Name = "named_query", - Boost = 1.1, - Type = Infer.Relation(), - InnerHits = new InnerHits { Explain = true }, - MaxChildren = 5, - MinChildren = 1, - Query = new MatchAllQuery(), - ScoreMode = ChildScoreMode.Average -} ----- - -[source,javascript] -.Example json output ----- -{ - "has_child": { - "_name": "named_query", - "boost": 1.1, - "type": "commits", - "score_mode": "avg", - "min_children": 1, - "max_children": 5, - "query": { - "match_all": {} - }, - "inner_hits": { - "explain": true - } - } -} ----- - diff --git a/docs/query-dsl/joining/has-parent/has-parent-query-usage.asciidoc b/docs/query-dsl/joining/has-parent/has-parent-query-usage.asciidoc deleted file mode 100644 index 6d127f6cff8..00000000000 --- a/docs/query-dsl/joining/has-parent/has-parent-query-usage.asciidoc +++ /dev/null @@ -1,68 +0,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/QueryDsl/Joining/HasParent/HasParentQueryUsageTests.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! -//// - -[[has-parent-query-usage]] -=== Has Parent Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.HasParent(c => c - .Name("named_query") - .Boost(1.1) - .InnerHits(i => i.Explain()) - .Score() - .Query(qq => qq.MatchAll()) - .IgnoreUnmapped() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new HasParentQuery -{ - Name = "named_query", - Boost = 1.1, - ParentType = Infer.Relation(), - InnerHits = new InnerHits { Explain = true }, - Query = new MatchAllQuery(), - Score = true, - IgnoreUnmapped = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "has_parent": { - "_name": "named_query", - "boost": 1.1, - "parent_type": "developer", - "score": true, - "ignore_unmapped": true, - "query": { - "match_all": {} - }, - "inner_hits": { - "explain": true - } - } -} ----- - diff --git a/docs/query-dsl/joining/nested/nested-query-usage.asciidoc b/docs/query-dsl/joining/nested/nested-query-usage.asciidoc deleted file mode 100644 index af66a6407a1..00000000000 --- a/docs/query-dsl/joining/nested/nested-query-usage.asciidoc +++ /dev/null @@ -1,86 +0,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/QueryDsl/Joining/Nested/NestedQueryUsageTests.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! -//// - -[[nested-query-usage]] -=== Nested Query Usage - -Nested query allows to query nested objects / docs (see {ref_current}/nested.html[nested mapping]). -The query is executed against the nested objects / docs as if they were indexed as separate -docs (they are, internally) and resulting in the root parent doc (or parent nested mapping). - -See the Elasticsearch documentation on {ref_current}/query-dsl-nested-query.html[nested query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Nested(c => c - .Name("named_query") - .Boost(1.1) - .InnerHits(i => i.Explain()) - .Path(p => p.Tags) - .Query(nq => nq - .Terms(t => t - .Field(f => f.Tags.First().Name) - .Terms("lorem", "ipsum") - ) - ) - .IgnoreUnmapped() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new NestedQuery -{ - Name = "named_query", - Boost = 1.1, - InnerHits = new InnerHits { Explain = true }, - Path = Field(p => p.Tags), - Query = new TermsQuery - { - Field = Field(p => p.Tags.First().Name), - Terms = new[] { "lorem", "ipsum" } - }, - IgnoreUnmapped = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "nested": { - "_name": "named_query", - "boost": 1.1, - "query": { - "terms": { - "tags.name": [ - "lorem", - "ipsum" - ] - } - }, - "ignore_unmapped": true, - "path": "tags", - "inner_hits": { - "explain": true - } - } -} ----- - diff --git a/docs/query-dsl/joining/parent-id/parent-id-query-usage.asciidoc b/docs/query-dsl/joining/parent-id/parent-id-query-usage.asciidoc deleted file mode 100644 index 93e23276aee..00000000000 --- a/docs/query-dsl/joining/parent-id/parent-id-query-usage.asciidoc +++ /dev/null @@ -1,57 +0,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/QueryDsl/Joining/ParentId/ParentIdQueryUsageTests.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! -//// - -[[parent-id-query-usage]] -=== Parent Id Query Usage - -The `parent_id` query can be used to find child documents which belong to a particular parent. - -See the Elasticsearch documentation on {ref_current}/query-dsl-parent-id-query.html[parent_id query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.ParentId(p => p - .Name("named_query") - .Type() - .Id(Project.Instance.Name) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ParentIdQuery -{ - Name = "named_query", - Type = Infer.Relation(), - Id = Project.Instance.Name -} ----- - -[source,javascript] -.Example json output ----- -{ - "parent_id": { - "_name": "named_query", - "type": "commits", - "id": "Durgan LLC" - } -} ----- - diff --git a/docs/query-dsl/match-none-query-usage.asciidoc b/docs/query-dsl/match-none-query-usage.asciidoc deleted file mode 100644 index d3cb8499575..00000000000 --- a/docs/query-dsl/match-none-query-usage.asciidoc +++ /dev/null @@ -1,50 +0,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/QueryDsl/MatchNoneQueryUsageTests.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! -//// - -[[match-none-query-usage]] -=== Match None Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MatchNone(c => c - .Name("named_query") - .Boost(1.1) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MatchNoneQuery -{ - Name = "named_query", - Boost = 1.1 -} ----- - -[source,javascript] -.Example json output ----- -{ - "match_none": { - "_name": "named_query", - "boost": 1.1 - } -} ----- - diff --git a/docs/query-dsl/nest-specific/raw/raw-combine-usage.asciidoc b/docs/query-dsl/nest-specific/raw/raw-combine-usage.asciidoc deleted file mode 100644 index 2a28ae2666b..00000000000 --- a/docs/query-dsl/nest-specific/raw/raw-combine-usage.asciidoc +++ /dev/null @@ -1,58 +0,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/QueryDsl/NestSpecific/Raw/RawCombineUsageTests.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! -//// - -[[raw-combine-usage]] -=== Raw Combine Usage - -NEST's <> can be combined with other queries using a <> -such as a `bool` query. - -==== Fluent DSL example - -[source,csharp] ----- -q.Raw(RawTermQuery) && q.Term("x", "y") ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RawQuery(RawTermQuery) -&& new TermQuery { Field = "x", Value = "y" } ----- - -[source,javascript] -.Example json output ----- -{ - "bool": { - "must": [ - { - "term": { - "fieldname": "value" - } - }, - { - "term": { - "x": { - "value": "y" - } - } - } - ] - } -} ----- - diff --git a/docs/query-dsl/nest-specific/raw/raw-query-usage.asciidoc b/docs/query-dsl/nest-specific/raw/raw-query-usage.asciidoc deleted file mode 100644 index 900015256b6..00000000000 --- a/docs/query-dsl/nest-specific/raw/raw-query-usage.asciidoc +++ /dev/null @@ -1,45 +0,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/QueryDsl/NestSpecific/Raw/RawQueryUsageTests.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! -//// - -[[raw-query-usage]] -=== Raw Query Usage - -Allows a query represented as a string of JSON to be passed to NEST's Fluent API or Object Initializer syntax. -This can be useful when porting over a query expressed in the query DSL over to NEST. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Raw(RawTermQuery) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RawQuery(RawTermQuery) ----- - -[source,javascript] -.Example json output ----- -{ - "term": { - "fieldname": "value" - } -} ----- - diff --git a/docs/query-dsl/span/containing/span-containing-query-usage.asciidoc b/docs/query-dsl/span/containing/span-containing-query-usage.asciidoc deleted file mode 100644 index 121bac75b35..00000000000 --- a/docs/query-dsl/span/containing/span-containing-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/Span/Containing/SpanContainingQueryUsageTests.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! -//// - -[[span-containing-query-usage]] -=== Span Containing Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanContaining(sn => sn - .Name("named_query") - .Boost(1.1) - .Little(i => i - .SpanTerm(st => st.Field("field1").Value("hoya")) - ) - .Big(e => e - .SpanTerm(st => st.Field("field1").Value("hoya2")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanContainingQuery -{ - Name = "named_query", - Boost = 1.1, - Little = new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field1", Value = "hoya" } }, - Big = new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field1", Value = "hoya2" } }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_containing": { - "_name": "named_query", - "boost": 1.1, - "little": { - "span_term": { - "field1": { - "value": "hoya" - } - } - }, - "big": { - "span_term": { - "field1": { - "value": "hoya2" - } - } - } - } -} ----- - diff --git a/docs/query-dsl/span/field-masking/span-field-masking-usage.asciidoc b/docs/query-dsl/span/field-masking/span-field-masking-usage.asciidoc deleted file mode 100644 index f21d224e40e..00000000000 --- a/docs/query-dsl/span/field-masking/span-field-masking-usage.asciidoc +++ /dev/null @@ -1,71 +0,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/QueryDsl/Span/FieldMasking/SpanFieldMaskingUsageTests.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! -//// - -[[span-field-masking-usage]] -=== Span Field Masking Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanFieldMasking(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Name) - .Query(sq => sq - .SpanTerm(st => st.Field(p => p.Description).Value("dolorem")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanFieldMaskingQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.Name), - Query = new SpanQuery - { - SpanTerm = new SpanTermQuery - { - Field = Infer.Field(p => p.Description), - Value = "dolorem" - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "field_masking_span": { - "_name": "named_query", - "boost": 1.1, - "field": "name", - "query": { - "span_term": { - "description": { - "value": "dolorem" - } - } - } - } -} ----- - diff --git a/docs/query-dsl/span/first/span-first-query-usage.asciidoc b/docs/query-dsl/span/first/span-first-query-usage.asciidoc deleted file mode 100644 index bdbb79588c4..00000000000 --- a/docs/query-dsl/span/first/span-first-query-usage.asciidoc +++ /dev/null @@ -1,67 +0,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/QueryDsl/Span/First/SpanFirstQueryUsageTests.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! -//// - -[[span-first-query-usage]] -=== Span First Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanFirst(c => c - .Name("named_query") - .Boost(1.1) - .Match(sq => sq - .SpanTerm(st => st.Field(p => p.Name).Value("value")) - ) - .End(3) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanFirstQuery -{ - Name = "named_query", - Boost = 1.1, - End = 3, - Match = new SpanQuery - { - SpanTerm = new SpanTermQuery { Field = "name", Value = "value" } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_first": { - "_name": "named_query", - "boost": 1.1, - "match": { - "span_term": { - "name": { - "value": "value" - } - } - }, - "end": 3 - } -} ----- - diff --git a/docs/query-dsl/span/multi-term/span-multi-term-query-usage.asciidoc b/docs/query-dsl/span/multi-term/span-multi-term-query-usage.asciidoc deleted file mode 100644 index 20bc4280ba6..00000000000 --- a/docs/query-dsl/span/multi-term/span-multi-term-query-usage.asciidoc +++ /dev/null @@ -1,61 +0,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/QueryDsl/Span/MultiTerm/SpanMultiTermQueryUsageTests.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! -//// - -[[span-multi-term-query-usage]] -=== Span Multi Term Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanMultiTerm(c => c - .Name("named_query") - .Boost(1.1) - .Match(sq => sq - .Prefix(pr => pr.Field(p => p.Description).Value("pre-*")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanMultiTermQuery -{ - Name = "named_query", - Boost = 1.1, - Match = new PrefixQuery { Field = Infer.Field(f => f.Description), Value = "pre-*" } -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_multi": { - "_name": "named_query", - "boost": 1.1, - "match": { - "prefix": { - "description": { - "value": "pre-*" - } - } - } - } -} ----- - diff --git a/docs/query-dsl/span/near/span-near-query-usage.asciidoc b/docs/query-dsl/span/near/span-near-query-usage.asciidoc deleted file mode 100644 index 1526ab15e9f..00000000000 --- a/docs/query-dsl/span/near/span-near-query-usage.asciidoc +++ /dev/null @@ -1,97 +0,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/QueryDsl/Span/Near/SpanNearQueryUsageTests.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! -//// - -[[span-near-query-usage]] -=== Span Near Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanNear(sn => sn - .Name("named_query") - .Boost(1.1) - .Clauses( - c => c.SpanTerm(st => st.Field("field").Value("value1")), - c => c.SpanTerm(st => st.Field("field").Value("value2")), - c => c.SpanTerm(st => st.Field("field").Value("value3")), - c => c.SpanGap(st => st.Field("field").Width(2)) - ) - .Slop(12) - .InOrder() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanNearQuery -{ - Name = "named_query", - Boost = 1.1, - Clauses = new List - { - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value1" } }, - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value2" } }, - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value3" } }, - new SpanQuery { SpanGap = new SpanGapQuery { Field = "field", Width = 2 } } - }, - Slop = 12, - InOrder = true, -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_near": { - "clauses": [ - { - "span_term": { - "field": { - "value": "value1" - } - } - }, - { - "span_term": { - "field": { - "value": "value2" - } - } - }, - { - "span_term": { - "field": { - "value": "value3" - } - } - }, - { - "span_gap": { - "field": 2 - } - } - ], - "slop": 12, - "in_order": true, - "_name": "named_query", - "boost": 1.1 - } -} ----- - diff --git a/docs/query-dsl/span/not/span-not-query-usage.asciidoc b/docs/query-dsl/span/not/span-not-query-usage.asciidoc deleted file mode 100644 index ecdcb16be7e..00000000000 --- a/docs/query-dsl/span/not/span-not-query-usage.asciidoc +++ /dev/null @@ -1,90 +0,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/QueryDsl/Span/Not/SpanNotQueryUsageTests.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! -//// - -[[span-not-query-usage]] -=== Span Not Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanNot(sn => sn - .Name("named_query") - .Boost(1.1) - .Post(13) - .Pre(14) - .Include(i => i - .SpanTerm(st => st.Field("field1").Value("hoya")) - ) - .Exclude(e => e - .SpanTerm(st => st.Field("field1").Value("hoya2")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanNotQuery -{ - Name = "named_query", - Boost = 1.1, - Post = 13, - Pre = 14, - Include = new SpanQuery - { - SpanTerm = new SpanTermQuery - { - Field = "field1", Value = "hoya" - } - }, - Exclude = new SpanQuery - { - SpanTerm = new SpanTermQuery - { - Field = "field1", Value = "hoya2" - } - }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_not": { - "_name": "named_query", - "boost": 1.1, - "include": { - "span_term": { - "field1": { - "value": "hoya" - } - } - }, - "exclude": { - "span_term": { - "field1": { - "value": "hoya2" - } - } - }, - "pre": 14, - "post": 13 - } -} ----- - diff --git a/docs/query-dsl/span/or/span-or-query-usage.asciidoc b/docs/query-dsl/span/or/span-or-query-usage.asciidoc deleted file mode 100644 index 08cd1eddcb6..00000000000 --- a/docs/query-dsl/span/or/span-or-query-usage.asciidoc +++ /dev/null @@ -1,84 +0,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/QueryDsl/Span/Or/SpanOrQueryUsageTests.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! -//// - -[[span-or-query-usage]] -=== Span Or Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanOr(sn => sn - .Name("named_query") - .Boost(1.1) - .Clauses( - c => c.SpanTerm(st => st.Field("field").Value("value1")), - c => c.SpanTerm(st => st.Field("field").Value("value2")), - c => c.SpanTerm(st => st.Field("field").Value("value3")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanOrQuery -{ - Name = "named_query", - Boost = 1.1, - Clauses = new List - { - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value1" } }, - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value2" } }, - new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field", Value = "value3" } } - }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_or": { - "_name": "named_query", - "boost": 1.1, - "clauses": [ - { - "span_term": { - "field": { - "value": "value1" - } - } - }, - { - "span_term": { - "field": { - "value": "value2" - } - } - }, - { - "span_term": { - "field": { - "value": "value3" - } - } - } - ] - } -} ----- - diff --git a/docs/query-dsl/span/term/span-term-query-usage.asciidoc b/docs/query-dsl/span/term/span-term-query-usage.asciidoc deleted file mode 100644 index 4cf42f96a64..00000000000 --- a/docs/query-dsl/span/term/span-term-query-usage.asciidoc +++ /dev/null @@ -1,57 +0,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/QueryDsl/Span/Term/SpanTermQueryUsageTests.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! -//// - -[[span-term-query-usage]] -=== Span Term Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanTerm(c => c - .Name("named_query") - .Boost(1.1) - .Field("user") - .Value("kimchy") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanTermQuery -{ - Name = "named_query", - Boost = 1.1, - Value = "kimchy", - Field = "user" -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_term": { - "user": { - "_name": "named_query", - "boost": 1.1, - "value": "kimchy" - } - } -} ----- - diff --git a/docs/query-dsl/span/within/span-within-query-usage.asciidoc b/docs/query-dsl/span/within/span-within-query-usage.asciidoc deleted file mode 100644 index 56c28ed960b..00000000000 --- a/docs/query-dsl/span/within/span-within-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/Span/Within/SpanWithinQueryUsageTests.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! -//// - -[[span-within-query-usage]] -=== Span Within Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.SpanWithin(sn => sn - .Name("named_query") - .Boost(1.1) - .Little(i => i - .SpanTerm(st => st.Field("field1").Value("hoya")) - ) - .Big(e => e - .SpanTerm(st => st.Field("field1").Value("hoya2")) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SpanWithinQuery -{ - Name = "named_query", - Boost = 1.1, - Little = new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field1", Value = "hoya" } }, - Big = new SpanQuery { SpanTerm = new SpanTermQuery { Field = "field1", Value = "hoya2" } }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "span_within": { - "_name": "named_query", - "boost": 1.1, - "little": { - "span_term": { - "field1": { - "value": "hoya" - } - } - }, - "big": { - "span_term": { - "field1": { - "value": "hoya2" - } - } - } - } -} ----- - diff --git a/docs/query-dsl/specialized/distance-feature/distance-feature-query-usage.asciidoc b/docs/query-dsl/specialized/distance-feature/distance-feature-query-usage.asciidoc deleted file mode 100644 index 4a84651d443..00000000000 --- a/docs/query-dsl/specialized/distance-feature/distance-feature-query-usage.asciidoc +++ /dev/null @@ -1,119 +0,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/QueryDsl/Specialized/DistanceFeature/DistanceFeatureQueryUsageTests.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! -//// - -[[distance-feature-query-usage]] -=== Distance Feature Query Usage - -Boosts the relevance score of documents closer to a provided `origin` date or point. For example, you can use this query to give -more weight to documents closer to a certain date or location. - -See the Elasticsearch documentation on {ref_current}/query-dsl-distance-feature-query.html[distance feature query] for more details. - -[float] -== Using a date - -An instance of `DateMath` can be provided as the `origin`, with `pivot` being a `Time` from the origin - -==== Fluent DSL example - -[source,csharp] ----- -q -.DistanceFeature(rf => rf - .Boost(1.1) - .Field(f => f.StartedOn) - .Origin(DateMath.FromString("now")) - .Pivot(new Time("7d")) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DistanceFeatureQuery -{ - Boost = 1.1, - Field = Infer.Field(f => f.StartedOn), - Origin = DateMath.FromString("now"), - Pivot = new Time("7d") -} ----- - -[source,javascript] -.Example json output ----- -{ - "distance_feature": { - "boost": 1.1, - "field": "startedOn", - "origin": "now", - "pivot": "7d" - } -} ----- - -[float] -== Using a location - -You can use the distance_feature query to find the nearest neighbors to a location. You can also use the query in a bool -search''s should filter to add boosted relevance scores to the bool query's scores. - -An instance of `GeoCoordinate` can be provided as the `origin`, with `pivot` being a `Distance` from the origin - -==== Fluent DSL example - -[source,csharp] ----- -q -.DistanceFeature(rf => rf - .Name("name") - .Boost(1.1) - .Field(f => f.LeadDeveloper.Location) - .Origin(new GeoCoordinate(70, -70)) - .Pivot(new Distance(100, DistanceUnit.Miles)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DistanceFeatureQuery() -{ - Name = "name", - Boost = 1.1, - Field = Infer.Field(f => f.LeadDeveloper.Location), - Origin = new GeoCoordinate(70, -70), - Pivot = new Distance(100, DistanceUnit.Miles) -} ----- - -[source,javascript] -.Example json output ----- -{ - "distance_feature": { - "_name": "name", - "boost": 1.1, - "field": "leadDeveloper.location", - "origin": [ - -70.0, - 70.0 - ], - "pivot": "100mi" - } -} ----- - diff --git a/docs/query-dsl/specialized/more-like-this/more-like-this-full-document-query-usage.asciidoc b/docs/query-dsl/specialized/more-like-this/more-like-this-full-document-query-usage.asciidoc deleted file mode 100644 index f336cff1d03..00000000000 --- a/docs/query-dsl/specialized/more-like-this/more-like-this-full-document-query-usage.asciidoc +++ /dev/null @@ -1,90 +0,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/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisFullDocumentQueryUsageTests.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! -//// - -[[more-like-this-full-document-query-usage]] -=== More Like This Full Document Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MoreLikeThis(sn => sn - .Fields(ff => ff - .Field(f => f.Name) - .Field(f => f.Description) - ) - .Like(l => l - .Document(d => d - .Document(Project.Instance) - .Routing(Project.Instance.Name) - ) - .Text("some long text") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MoreLikeThisQuery -{ - Fields = Infer.Fields( - f => f.Name, - f => f.Description), - Like = new List - { - new LikeDocument(Project.Instance) { Routing = Project.Instance.Name }, - "some long text" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "more_like_this": { - "fields": [ - "name", - "description" - ], - "like": [ - { - "_index": "project", - "doc": { - "name": "Koch, Collier and Mohr", - "state": "BellyUp", - "startedOn": "2015-01-01T00:00:00", - "lastActivity": "0001-01-01T00:00:00", - "leadDeveloper": { - "gender": "Male", - "id": 0, - "firstName": "Martijn", - "lastName": "Laarman" - }, - "location": { - "lat": 42.1523, - "lon": -80.321 - } - }, - "routing": "Durgan LLC" - }, - "some long text" - ] - } -} ----- - diff --git a/docs/query-dsl/specialized/more-like-this/more-like-this-query-usage.asciidoc b/docs/query-dsl/specialized/more-like-this/more-like-this-query-usage.asciidoc deleted file mode 100644 index c7fd1739864..00000000000 --- a/docs/query-dsl/specialized/more-like-this/more-like-this-query-usage.asciidoc +++ /dev/null @@ -1,118 +0,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/QueryDsl/Specialized/MoreLikeThis/MoreLikeThisQueryUsageTests.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! -//// - -[[more-like-this-query-usage]] -=== More Like This Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.MoreLikeThis(sn => sn - .Name("named_query") - .Boost(1.1) - .Like(l => l - .Document(d => d.Id(Project.Instance.Name).Routing(Project.Instance.Name)) - .Text("some long text") - ) - .Analyzer("some_analyzer") - .BoostTerms(1.1) - .Include() - .MaxDocumentFrequency(12) - .MaxQueryTerms(12) - .MaxWordLength(300) - .MinDocumentFrequency(1) - .MinTermFrequency(1) - .MinWordLength(10) - .StopWords("and", "the") - .MinimumShouldMatch(1) - .Fields(f => f.Field(p => p.Name)) - .Unlike(l => l - .Text("not like this text") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new MoreLikeThisQuery -{ - Name = "named_query", - Boost = 1.1, - Fields = Fields(p => p.Name), - Like = new List - { - new LikeDocument(Project.Instance.Name) { Routing = Project.Instance.Name }, - "some long text" - }, - Analyzer = "some_analyzer", - BoostTerms = 1.1, - Include = true, - MaxDocumentFrequency = 12, - MaxQueryTerms = 12, - MaxWordLength = 300, - MinDocumentFrequency = 1, - MinTermFrequency = 1, - MinWordLength = 10, - MinimumShouldMatch = 1, - StopWords = new[] { "and", "the" }, - Unlike = new List - { - "not like this text" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "more_like_this": { - "fields": [ - "name" - ], - "minimum_should_match": 1, - "stop_words": [ - "and", - "the" - ], - "min_term_freq": 1, - "max_query_terms": 12, - "min_doc_freq": 1, - "max_doc_freq": 12, - "min_word_length": 10, - "max_word_length": 300, - "boost_terms": 1.1, - "analyzer": "some_analyzer", - "include": true, - "like": [ - { - "_index": "project", - "_id": "Durgan LLC", - "routing": "Durgan LLC" - }, - "some long text" - ], - "unlike": [ - "not like this text" - ], - "_name": "named_query", - "boost": 1.1 - } -} ----- - diff --git a/docs/query-dsl/specialized/percolate/percolate-query-usage.asciidoc b/docs/query-dsl/specialized/percolate/percolate-query-usage.asciidoc deleted file mode 100644 index 7a74d3c502a..00000000000 --- a/docs/query-dsl/specialized/percolate/percolate-query-usage.asciidoc +++ /dev/null @@ -1,269 +0,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/QueryDsl/Specialized/Percolate/PercolateQueryUsageTests.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! -//// - -[[percolate-query-usage]] -=== Percolate Query Usage - -The percolate query can be used to match queries stored in an index. -The percolate query itself contains the document that will be used as query to match with the stored queries. - -IMPORTANT: In order for the percolate query to work, the index in which your stored queries reside must contain -a mapping for documents that you wish to percolate, so that they are parsed correctly at query time. - -See the Elasticsearch documentation on {ref_current}/query-dsl-percolate-query.html[percolate query] for more details. - -In this example, we have a document stored with a `query` field that is mapped as a `percolator` type. This field -contains a `match` query. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Percolate(p => p - .Document(Project.Instance) - .Field(f => f.Query) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PercolateQuery -{ - Document = Project.Instance, - Field = Infer.Field(f => f.Query) -} ----- - -[source,javascript] -.Example json output ----- -{ - "percolate": { - "document": { - "name": "Koch, Collier and Mohr", - "state": "BellyUp", - "startedOn": "2015-01-01T00:00:00", - "lastActivity": "0001-01-01T00:00:00", - "leadDeveloper": { - "gender": "Male", - "id": 0, - "firstName": "Martijn", - "lastName": "Laarman" - }, - "location": { - "lat": 42.1523, - "lon": -80.321 - } - }, - "field": "query" - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.Total.Should().BeGreaterThan(0); -response.Hits.Should().NotBeNull(); -response.Hits.Count().Should().BeGreaterThan(0); -var match = response.Documents.First(); -match.Id.Should().Be(PercolatorId); -((IQueryContainer)match.Query).Match.Should().NotBeNull(); ----- - -[float] -== Percolate an existing document - -Instead of specifying the source of the document being percolated, the source can also be -retrieved from an already stored document. The percolate query will then internally execute a get request to fetch that document. - -The required fields to percolate an existing document are: - -* `index` in which the document resides - -* `type` of the document - -* `field` that contains the query - -* `id` of the document - -* `document_type` type / mapping of the document - -See the Elasticsearch documentation on {ref_current}/query-dsl-percolate-query.html[percolate query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Percolate(p => p - .Index() - .Id(Project.Instance.Name) - .Routing(Project.Instance.Name) - .Field(f => f.Query) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PercolateQuery -{ - Index = IndexName.From(), - Id = Project.Instance.Name, - Routing = Project.Instance.Name, - Field = Infer.Field(f => f.Query) -} ----- - -[source,javascript] -.Example json output ----- -{ - "percolate": { - "type": "doc", - "index": "project", - "id": "Durgan LLC", - "routing": "Durgan LLC", - "field": "query" - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.Total.Should().BeGreaterThan(0); -response.Hits.Should().NotBeNull(); -response.Hits.Count().Should().BeGreaterThan(0); -var match = response.Documents.First(); -match.Id.Should().Be(PercolatorId); -((IQueryContainer)match.Query).Match.Should().NotBeNull(); ----- - -[float] -== Percolate multiple documents - -The percolate query can match multiple documents simultaneously with the indexed percolator queries. -Percolating multiple documents in a single request can improve performance as queries -only need to be parsed and matched once instead of multiple times. - -See the Elasticsearch documentation on {ref_current}/query-dsl-percolate-query.html[percolate query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Percolate(p => p - .Documents(Project.Instance, Project.Instance, Project.Instance) - .Field(f => f.Query) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PercolateQuery -{ - Documents = new[] { Project.Instance, Project.Instance, Project.Instance }, - Field = Infer.Field(f => f.Query) -} ----- - -[source,javascript] -.Example json output ----- -{ - "percolate": { - "documents": [ - { - "name": "Koch, Collier and Mohr", - "state": "BellyUp", - "startedOn": "2015-01-01T00:00:00", - "lastActivity": "0001-01-01T00:00:00", - "leadDeveloper": { - "gender": "Male", - "id": 0, - "firstName": "Martijn", - "lastName": "Laarman" - }, - "location": { - "lat": 42.1523, - "lon": -80.321 - } - }, - { - "name": "Koch, Collier and Mohr", - "state": "BellyUp", - "startedOn": "2015-01-01T00:00:00", - "lastActivity": "0001-01-01T00:00:00", - "leadDeveloper": { - "gender": "Male", - "id": 0, - "firstName": "Martijn", - "lastName": "Laarman" - }, - "location": { - "lat": 42.1523, - "lon": -80.321 - } - }, - { - "name": "Koch, Collier and Mohr", - "state": "BellyUp", - "startedOn": "2015-01-01T00:00:00", - "lastActivity": "0001-01-01T00:00:00", - "leadDeveloper": { - "gender": "Male", - "id": 0, - "firstName": "Martijn", - "lastName": "Laarman" - }, - "location": { - "lat": 42.1523, - "lon": -80.321 - } - } - ], - "field": "query" - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.Total.Should().Be(1); -response.Hits.Should().NotBeNull(); -response.Hits.Count.Should().Be(1); -response.Fields.Count.Should().Be(1); - -var field = response.Fields.ElementAt(0); -var values = field.ValuesOf("_percolator_document_slot"); -values.Should().Contain(new[] { 0, 1, 2 }); - -var match = response.Documents.First(); -match.Id.Should().Be(PercolatorId); -((IQueryContainer)match.Query).Match.Should().NotBeNull(); ----- - diff --git a/docs/query-dsl/specialized/pinned/pinned-query-usage.asciidoc b/docs/query-dsl/specialized/pinned/pinned-query-usage.asciidoc deleted file mode 100644 index 8998644767c..00000000000 --- a/docs/query-dsl/specialized/pinned/pinned-query-usage.asciidoc +++ /dev/null @@ -1,69 +0,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/QueryDsl/Specialized/Pinned/PinnedQueryUsageTests.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! -//// - -[[pinned-query-usage]] -=== Pinned Query Usage - -Promotes selected documents to rank higher than those matching a given query. This feature is typically used to -guide searchers to curated documents that are promoted over and above any "organic" matches for a search. The promoted or "pinned" -documents are identified using the document IDs stored in the _id field. -See the Elasticsearch documentation on {ref_current}/query-dsl-pinned-query.html[pinned query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Pinned(c => c - .Name("named_query") - .Boost(1.1) - .Organic(qq => qq.MatchAll(m => m.Name("organic_query"))) - .Ids(1, 11, 22) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PinnedQuery() -{ - Name = "named_query", - Boost = 1.1, - Organic = new MatchAllQuery { Name = "organic_query" }, - Ids = new Id[] { 1,11,22 }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "pinned": { - "_name": "named_query", - "boost": 1.1, - "organic": { - "match_all": { - "_name": "organic_query" - } - }, - "ids": [ - 1, - 11, - 22 - ] - } -} ----- - diff --git a/docs/query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc b/docs/query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc deleted file mode 100644 index 79d33827375..00000000000 --- a/docs/query-dsl/specialized/rank-feature/rank-feature-query-usage.asciidoc +++ /dev/null @@ -1,139 +0,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/QueryDsl/Specialized/RankFeature/RankFeatureQueryUsageTests.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! -//// - -[[rank-feature-query-usage]] -=== Rank Feature Query Usage - -The rank_feature query is a specialized query that only works on `rank_feature` fields and `rank_features` fields. -Its goal is to boost the score of documents based on the values of numeric features. It is typically put in a should clause of a bool query -so that its score is added to the score of the query. - -Compared to using `function_score` or other ways to modify the score, this query has the benefit of being able to efficiently -skip non-competitive hits when track_total_hits is not set to true. Speedups may be spectacular. - -See the Elasticsearch documentation on {ref_current}/query-dsl-rank-feature-query.html[rank feature query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.RankFeature(rf => rf - .Name("named_query") - .Boost(1.1) - .Field(f => f.Rank) - .Saturation() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RankFeatureQuery() -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(f => f.Rank), - Function = new RankFeatureSaturationFunction() -} ----- - -[source,javascript] -.Example json output ----- -{ - "rank_feature": { - "_name": "named_query", - "boost": 1.1, - "field": "rank", - "saturation": {} - } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.RankFeature(rf => rf - .Name("named_query") - .Boost(1.1) - .Field(f => f.Rank) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RankFeatureQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(f => f.Rank), -} ----- - -[source,javascript] -.Example json output ----- -{ - "rank_feature": { - "_name": "named_query", - "boost": 1.1, - "field": "rank" - } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.RankFeature(rf => rf - .Name("named_query") - .Boost(1.1) - .Field(f => f.Rank) - .Linear()) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RankFeatureQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(f => f.Rank), - Function = new RankFeatureLinearFunction() -} ----- - -[source,javascript] -.Example json output ----- -{ - "rank_feature": { - "_name": "named_query", - "boost": 1.1, - "field": "rank", - "linear": {} - } -} ----- - diff --git a/docs/query-dsl/specialized/script-score/script-score-query-usage.asciidoc b/docs/query-dsl/specialized/script-score/script-score-query-usage.asciidoc deleted file mode 100644 index e8431dc9e5a..00000000000 --- a/docs/query-dsl/specialized/script-score/script-score-query-usage.asciidoc +++ /dev/null @@ -1,102 +0,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/QueryDsl/Specialized/ScriptScore/ScriptScoreQueryUsageTests.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! -//// - -[[script-score-query-usage]] -=== Script Score Query Usage - -A query allowing you to modify the score of documents that are retrieved by a query. -This can be useful if, for example, a score function is computationally expensive and -it is sufficient to compute the score on a filtered set of documents. - -See the Elasticsearch documentation on {ref_current}/query-dsl-script-score-query.html[script_score query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.ScriptScore(sn => sn - .Name("named_query") - .Boost(1.1) - .Query(qq => qq - .Range(r => r - .Field(f => f.NumberOfCommits) - .GreaterThan(50) - ) - ) - .Script(s => s - .Source(_scriptScoreSource) - .Params(p => p - .Add("origin", 100) - .Add("scale", 10) - .Add("decay", 0.5) - .Add("offset", 0) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ScriptScoreQuery -{ - Name = "named_query", - Boost = 1.1, - Query = new NumericRangeQuery - { - Field = Infer.Field(f => f.NumberOfCommits), - GreaterThan = 50 - }, - Script = new InlineScript(_scriptScoreSource) - { - Params = new Dictionary - { - { "origin", 100 }, - { "scale", 10 }, - { "decay", 0.5 }, - { "offset", 0 } - } - }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "script_score": { - "_name": "named_query", - "boost": 1.1, - "query": { - "range": { - "numberOfCommits": { - "gt": 50.0 - } - } - }, - "script": { - "source": "decayNumericLinear(params.origin, params.scale, params.offset, params.decay, doc['numberOfCommits'].value)", - "params": { - "origin": 100, - "scale": 10, - "decay": 0.5, - "offset": 0 - } - } - } -} ----- - diff --git a/docs/query-dsl/specialized/script/script-query-usage.asciidoc b/docs/query-dsl/specialized/script/script-query-usage.asciidoc deleted file mode 100644 index 1c915757cf5..00000000000 --- a/docs/query-dsl/specialized/script/script-query-usage.asciidoc +++ /dev/null @@ -1,71 +0,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/QueryDsl/Specialized/Script/ScriptQueryUsageTests.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! -//// - -[[script-query-usage]] -=== Script Query Usage - -A query allowing to define {ref_current}/modules-scripting.html[scripts] as queries. - -See the Elasticsearch documentation on {ref_current}/query-dsl-script-query.html[script query] for more details. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Script(sn => sn - .Name("named_query") - .Boost(1.1) - .Script(s => s - .Source(_templateString) - .Params(p => p.Add("param1", 50)) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ScriptQuery -{ - Name = "named_query", - Boost = 1.1, - Script = new InlineScript(_templateString) - { - Params = new Dictionary - { - { "param1", 50 } - } - }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "script": { - "_name": "named_query", - "boost": 1.1, - "script": { - "source": "doc['numberOfCommits'].value > params.param1", - "params": { - "param1": 50 - } - } - } -} ----- - diff --git a/docs/query-dsl/specialized/shape/shape-query-usage.asciidoc b/docs/query-dsl/specialized/shape/shape-query-usage.asciidoc deleted file mode 100644 index 70781995609..00000000000 --- a/docs/query-dsl/specialized/shape/shape-query-usage.asciidoc +++ /dev/null @@ -1,1011 +0,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/QueryDsl/Specialized/Shape/ShapeQueryUsageTests.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! -//// - -[[shape-query-usage]] -=== Shape Query Usage - -Like geo_shape, Elasticsearch supports the ability to index arbitrary two dimension (non Geospatial) geometries making -it possible to map out virtual worlds, sporting venues, theme parks, and CAD diagrams. The shape field type -supports points, lines, polygons, multi-polygons, envelope, etc. - -See the Elasticsearch documentation on {ref_current}/query-dsl-shape-query.html[shape queries] for more detail. - -[[shape-query-point]] -[float] -== Querying with Point - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .Point(PointCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new PointGeoShape(PointCoordinates), - Relation = ShapeRelation.Intersects -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "point", - "coordinates": [ - 38.897676, - -77.03653 - ] - } - } - } -} ----- - -[[shape-query-multipoint]] -[float] -== Querying with MultiPoint - -NOTE: Elasticsearch 7.7.0+ required when MultiPoint is indexed using BKD trees (the default). - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .MultiPoint(MultiPointCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new MultiPointGeoShape(MultiPointCoordinates), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "multipoint", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - } - } - } -} ----- - -[[shape-query-linestring]] -[float] -== Querying with LineString - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .LineString(LineStringCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new LineStringGeoShape(LineStringCoordinates), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "linestring", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - } - } - } -} ----- - -[[shape-query-multilinestring]] -[float] -== Querying with MultiLineString - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .MultiLineString(MultiLineStringCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new MultiLineStringGeoShape(MultiLineStringCoordinates), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "multilinestring", - "coordinates": [ - [ - [ - 2.0, - 12.0 - ], - [ - 2.0, - 13.0 - ], - [ - 3.0, - 13.0 - ], - [ - 3.0, - 12.0 - ] - ], - [ - [ - 0.0, - 10.0 - ], - [ - 0.0, - 11.0 - ], - [ - 1.0, - 11.0 - ], - [ - 1.0, - 10.0 - ] - ], - [ - [ - 0.2, - 10.2 - ], - [ - 0.2, - 10.8 - ], - [ - 0.8, - 10.8 - ], - [ - 0.8, - 12.0 - ] - ] - ] - } - } - } -} ----- - -[[shape-query-polygon]] -[float] -== Querying with Polygon - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .Polygon(PolygonCoordinates) - ) - .IgnoreUnmapped() - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new PolygonGeoShape(PolygonCoordinates), - IgnoreUnmapped = true, - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "ignore_unmapped": true, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "polygon", - "coordinates": [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ] - } - } - } -} ----- - -[[shape-query-multipolygon]] -[float] -== Querying with MultiPolygon - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .MultiPolygon(MultiPolygonCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new MultiPolygonGeoShape(MultiPolygonCoordinates), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "multipolygon", - "coordinates": [ - [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ], - [ - [ - [ - 8.0, - -15.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 8.0, - -15.0 - ] - ] - ] - ] - } - } - } -} ----- - -[[shape-query-geometrycollection]] -[float] -== Querying with GeometryCollection - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .GeometryCollection( - new PointGeoShape(PointCoordinates), - new MultiPointGeoShape(MultiPointCoordinates), - new LineStringGeoShape(LineStringCoordinates), - new MultiLineStringGeoShape(MultiLineStringCoordinates), - new PolygonGeoShape(PolygonCoordinates), - new MultiPolygonGeoShape(MultiPolygonCoordinates) - ) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new GeometryCollection(new IGeoShape[] - { - new PointGeoShape(PointCoordinates), - new MultiPointGeoShape(MultiPointCoordinates), - new LineStringGeoShape(LineStringCoordinates), - new MultiLineStringGeoShape(MultiLineStringCoordinates), - new PolygonGeoShape(PolygonCoordinates), - new MultiPolygonGeoShape(MultiPolygonCoordinates), - }), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "geometrycollection", - "geometries": [ - { - "type": "point", - "coordinates": [ - 38.897676, - -77.03653 - ] - }, - { - "type": "multipoint", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - }, - { - "type": "linestring", - "coordinates": [ - [ - 38.897676, - -77.03653 - ], - [ - 38.889939, - -77.009051 - ] - ] - }, - { - "type": "multilinestring", - "coordinates": [ - [ - [ - 2.0, - 12.0 - ], - [ - 2.0, - 13.0 - ], - [ - 3.0, - 13.0 - ], - [ - 3.0, - 12.0 - ] - ], - [ - [ - 0.0, - 10.0 - ], - [ - 0.0, - 11.0 - ], - [ - 1.0, - 11.0 - ], - [ - 1.0, - 10.0 - ] - ], - [ - [ - 0.2, - 10.2 - ], - [ - 0.2, - 10.8 - ], - [ - 0.8, - 10.8 - ], - [ - 0.8, - 12.0 - ] - ] - ] - }, - { - "type": "polygon", - "coordinates": [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ] - }, - { - "type": "multipolygon", - "coordinates": [ - [ - [ - [ - 10.0, - -17.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 10.0, - -17.0 - ] - ], - [ - [ - 8.2, - 18.2 - ], - [ - 8.2, - -18.8 - ], - [ - -8.8, - -10.8 - ], - [ - 8.8, - 18.2 - ] - ] - ], - [ - [ - [ - 8.0, - -15.0 - ], - [ - 15.0, - 16.0 - ], - [ - 0.0, - 12.0 - ], - [ - -15.0, - 16.0 - ], - [ - -10.0, - -17.0 - ], - [ - 8.0, - -15.0 - ] - ] - ] - ] - } - ] - } - } - } -} ----- - -[[shape-query-envelope]] -[float] -== Querying with Envelope - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .Envelope(EnvelopeCoordinates) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new EnvelopeGeoShape(EnvelopeCoordinates), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "envelope", - "coordinates": [ - [ - -45.0, - 45.0 - ], - [ - 45.0, - -45.0 - ] - ] - } - } - } -} ----- - -[[shape-query-circle]] -[float] -== Querying with Circle - -NOTE: Available in Elasticsearch 7.7.0+ - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .Shape(s => s - .Circle(CircleCoordinates, "100m") - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - Shape = new CircleGeoShape(CircleCoordinates, "100m"), - Relation = ShapeRelation.Intersects, -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "relation": "intersects", - "shape": { - "type": "circle", - "radius": "100m", - "coordinates": [ - 45.0, - -45.0 - ] - } - } - } -} ----- - -[[shape-query-indexedshape]] -[float] -== Querying with an indexed shape - -The Query also supports using a shape which has already been indexed in another index. This is particularly useful for when you have -a pre-defined list of shapes which are useful to your application and you want to reference this using a logical name (for example New Zealand) -rather than having to provide their coordinates each time. In this situation it is only necessary to provide: - -See the Elasticsearch documentation on {ref_current}/query-dsl-shape-query.html for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Shape(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.ArbitraryShape) - .IndexedShape(p => p - .Id(Project.Instance.Name) - .Path(pp => pp.ArbitraryShape) - .Routing(Project.Instance.Name) - ) - .Relation(ShapeRelation.Intersects) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ShapeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.ArbitraryShape), - IndexedShape = new FieldLookup - { - Id = Project.Instance.Name, - Index = Infer.Index(), - Path = Infer.Field(p => p.ArbitraryShape), - Routing = Project.Instance.Name - }, - Relation = ShapeRelation.Intersects -} ----- - -[source,javascript] -.Example json output ----- -{ - "shape": { - "_name": "named_query", - "boost": 1.1, - "arbitraryShape": { - "indexed_shape": { - "id": "Durgan LLC", - "index": "project", - "path": "arbitraryShape", - "routing": "Durgan LLC" - }, - "relation": "intersects" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/exists/exists-query-usage.asciidoc b/docs/query-dsl/term-level/exists/exists-query-usage.asciidoc deleted file mode 100644 index 5e56f669802..00000000000 --- a/docs/query-dsl/term-level/exists/exists-query-usage.asciidoc +++ /dev/null @@ -1,53 +0,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/QueryDsl/TermLevel/Exists/ExistsQueryUsageTests.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! -//// - -[[exists-query-usage]] -=== Exists Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Exists(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new ExistsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", -} ----- - -[source,javascript] -.Example json output ----- -{ - "exists": { - "_name": "named_query", - "boost": 1.1, - "field": "description" - } -} ----- - diff --git a/docs/query-dsl/term-level/fuzzy/fuzzy-date-query-usage.asciidoc b/docs/query-dsl/term-level/fuzzy/fuzzy-date-query-usage.asciidoc deleted file mode 100644 index 2f7ba73dc37..00000000000 --- a/docs/query-dsl/term-level/fuzzy/fuzzy-date-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/TermLevel/Fuzzy/FuzzyDateQueryUsageTests.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! -//// - -[[fuzzy-date-query-usage]] -=== Fuzzy Date Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.FuzzyDate(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Fuzziness(TimeSpan.FromDays(2)) - .Value(Project.Instance.StartedOn) - .MaxExpansions(100) - .PrefixLength(3) - .Rewrite(MultiTermQueryRewrite.ConstantScore) - .Transpositions() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FuzzyDateQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Fuzziness = TimeSpan.FromDays(2), - Value = Project.Instance.StartedOn, - MaxExpansions = 100, - PrefixLength = 3, - Rewrite = MultiTermQueryRewrite.ConstantScore, - Transpositions = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "fuzzy": { - "description": { - "_name": "named_query", - "boost": 1.1, - "fuzziness": "2d", - "max_expansions": 100, - "prefix_length": 3, - "rewrite": "constant_score", - "transpositions": true, - "value": "2015-01-01T00:00:00" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/fuzzy/fuzzy-numeric-query-usage.asciidoc b/docs/query-dsl/term-level/fuzzy/fuzzy-numeric-query-usage.asciidoc deleted file mode 100644 index 0f8a834bac5..00000000000 --- a/docs/query-dsl/term-level/fuzzy/fuzzy-numeric-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/TermLevel/Fuzzy/FuzzyNumericQueryUsageTests.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! -//// - -[[fuzzy-numeric-query-usage]] -=== Fuzzy Numeric Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.FuzzyNumeric(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Fuzziness(2) - .Value(12) - .MaxExpansions(100) - .PrefixLength(3) - .Rewrite(MultiTermQueryRewrite.ConstantScore) - .Transpositions() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FuzzyNumericQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Fuzziness = 2, - Value = 12, - MaxExpansions = 100, - PrefixLength = 3, - Rewrite = MultiTermQueryRewrite.ConstantScore, - Transpositions = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "fuzzy": { - "description": { - "_name": "named_query", - "boost": 1.1, - "fuzziness": 2.0, - "max_expansions": 100, - "prefix_length": 3, - "rewrite": "constant_score", - "transpositions": true, - "value": 12.0 - } - } -} ----- - diff --git a/docs/query-dsl/term-level/fuzzy/fuzzy-query-usage.asciidoc b/docs/query-dsl/term-level/fuzzy/fuzzy-query-usage.asciidoc deleted file mode 100644 index 98afc8f7b5b..00000000000 --- a/docs/query-dsl/term-level/fuzzy/fuzzy-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/TermLevel/Fuzzy/FuzzyQueryUsageTests.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! -//// - -[[fuzzy-query-usage]] -=== Fuzzy Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Fuzzy(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Fuzziness(Fuzziness.Auto) - .Value("ki") - .MaxExpansions(100) - .PrefixLength(3) - .Rewrite(MultiTermQueryRewrite.ConstantScore) - .Transpositions() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new FuzzyQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Fuzziness = Fuzziness.Auto, - Value = "ki", - MaxExpansions = 100, - PrefixLength = 3, - Rewrite = MultiTermQueryRewrite.ConstantScore, - Transpositions = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "fuzzy": { - "description": { - "_name": "named_query", - "boost": 1.1, - "fuzziness": "AUTO", - "max_expansions": 100, - "prefix_length": 3, - "rewrite": "constant_score", - "transpositions": true, - "value": "ki" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/ids/ids-query-usage.asciidoc b/docs/query-dsl/term-level/ids/ids-query-usage.asciidoc deleted file mode 100644 index e0848dc9354..00000000000 --- a/docs/query-dsl/term-level/ids/ids-query-usage.asciidoc +++ /dev/null @@ -1,58 +0,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/QueryDsl/TermLevel/Ids/IdsQueryUsageTests.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! -//// - -[[ids-query-usage]] -=== Ids Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Ids(c => c - .Name("named_query") - .Boost(1.1) - .Values(1, 2, 3, 4) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new IdsQuery -{ - Name = "named_query", - Boost = 1.1, - Values = new List { 1, 2, 3, 4 }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "ids": { - "_name": "named_query", - "boost": 1.1, - "values": [ - 1, - 2, - 3, - 4 - ] - } -} ----- - diff --git a/docs/query-dsl/term-level/prefix/prefix-query-usage.asciidoc b/docs/query-dsl/term-level/prefix/prefix-query-usage.asciidoc deleted file mode 100644 index 3c24df17764..00000000000 --- a/docs/query-dsl/term-level/prefix/prefix-query-usage.asciidoc +++ /dev/null @@ -1,60 +0,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/QueryDsl/TermLevel/Prefix/PrefixQueryUsageTests.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! -//// - -[[prefix-query-usage]] -=== Prefix Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Prefix(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Value("proj") - .Rewrite(MultiTermQueryRewrite.TopTerms(10)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new PrefixQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Value = "proj", - Rewrite = MultiTermQueryRewrite.TopTerms(10) -} ----- - -[source,javascript] -.Example json output ----- -{ - "prefix": { - "description": { - "_name": "named_query", - "boost": 1.1, - "rewrite": "top_terms_10", - "value": "proj" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/range/date-range-query-usage.asciidoc b/docs/query-dsl/term-level/range/date-range-query-usage.asciidoc deleted file mode 100644 index f92c237d54c..00000000000 --- a/docs/query-dsl/term-level/range/date-range-query-usage.asciidoc +++ /dev/null @@ -1,72 +0,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/QueryDsl/TermLevel/Range/DateRangeQueryUsageTests.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! -//// - -[[date-range-query-usage]] -=== Date Range Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.DateRange(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .GreaterThan(FixedDate) - .GreaterThanOrEquals(DateMath.Anchored(FixedDate).RoundTo(DateMathTimeUnit.Month)) - .LessThan("01/01/2012") - .LessThanOrEquals(DateMath.Now) - .Format("dd/MM/yyyy||yyyy") - .TimeZone("+01:00") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new DateRangeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - GreaterThan = FixedDate, - GreaterThanOrEqualTo = DateMath.Anchored(FixedDate).RoundTo(DateMathTimeUnit.Month), - LessThan = "01/01/2012", - LessThanOrEqualTo = DateMath.Now, - TimeZone = "+01:00", - Format = "dd/MM/yyyy||yyyy" -} ----- - -[source,javascript] -.Example json output ----- -{ - "range": { - "description": { - "_name": "named_query", - "boost": 1.1, - "format": "dd/MM/yyyy||yyyy", - "gt": "2015-06-06T12:01:02.123", - "gte": "2015-06-06T12:01:02.123||/M", - "lt": "01/01/2012", - "lte": "now", - "time_zone": "+01:00" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/range/long-range-query-usage.asciidoc b/docs/query-dsl/term-level/range/long-range-query-usage.asciidoc deleted file mode 100644 index e8a500af717..00000000000 --- a/docs/query-dsl/term-level/range/long-range-query-usage.asciidoc +++ /dev/null @@ -1,69 +0,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/QueryDsl/TermLevel/Range/LongRangeQueryUsageTests.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! -//// - -[[long-range-query-usage]] -=== Long Range Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.LongRange(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .GreaterThan(636634079999999999) - .GreaterThanOrEquals(636634080000000000) - .LessThan(636634080000000000) - .LessThanOrEquals(636634079999999999) - .Relation(RangeRelation.Within) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new LongRangeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - GreaterThan = 636634079999999999, - GreaterThanOrEqualTo = 636634080000000000, - LessThan = 636634080000000000, - LessThanOrEqualTo = 636634079999999999, - Relation = RangeRelation.Within -} ----- - -[source,javascript] -.Example json output ----- -{ - "range": { - "description": { - "_name": "named_query", - "boost": 1.1, - "gt": 636634079999999999, - "gte": 636634080000000000, - "lt": 636634080000000000, - "lte": 636634079999999999, - "relation": "within" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/range/numeric-range-query-usage.asciidoc b/docs/query-dsl/term-level/range/numeric-range-query-usage.asciidoc deleted file mode 100644 index 5c0c128f9a0..00000000000 --- a/docs/query-dsl/term-level/range/numeric-range-query-usage.asciidoc +++ /dev/null @@ -1,69 +0,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/QueryDsl/TermLevel/Range/NumericRangeQueryUsageTests.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! -//// - -[[numeric-range-query-usage]] -=== Numeric Range Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Range(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .GreaterThan(1.0) - .GreaterThanOrEquals(1.1) - .LessThan(2.1) - .LessThanOrEquals(2.0) - .Relation(RangeRelation.Within) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new NumericRangeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - GreaterThan = 1.0, - GreaterThanOrEqualTo = 1.1, - LessThan = 2.1, - LessThanOrEqualTo = 2.0, - Relation = RangeRelation.Within -} ----- - -[source,javascript] -.Example json output ----- -{ - "range": { - "description": { - "_name": "named_query", - "boost": 1.1, - "gt": 1.0, - "gte": 1.1, - "lt": 2.1, - "lte": 2.0, - "relation": "within" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/range/term-range-query-usage.asciidoc b/docs/query-dsl/term-level/range/term-range-query-usage.asciidoc deleted file mode 100644 index 32f90e9ee3e..00000000000 --- a/docs/query-dsl/term-level/range/term-range-query-usage.asciidoc +++ /dev/null @@ -1,66 +0,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/QueryDsl/TermLevel/Range/TermRangeQueryUsageTests.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! -//// - -[[term-range-query-usage]] -=== Term Range Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.TermRange(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .GreaterThan("foo") - .GreaterThanOrEquals("foof") - .LessThan("bar") - .LessThanOrEquals("barb") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermRangeQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - GreaterThan = "foo", - GreaterThanOrEqualTo = "foof", - LessThan = "bar", - LessThanOrEqualTo = "barb" -} ----- - -[source,javascript] -.Example json output ----- -{ - "range": { - "description": { - "_name": "named_query", - "boost": 1.1, - "gt": "foo", - "gte": "foof", - "lt": "bar", - "lte": "barb" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/regexp/regexp-query-usage.asciidoc b/docs/query-dsl/term-level/regexp/regexp-query-usage.asciidoc deleted file mode 100644 index 3a0b63d8b64..00000000000 --- a/docs/query-dsl/term-level/regexp/regexp-query-usage.asciidoc +++ /dev/null @@ -1,66 +0,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/QueryDsl/TermLevel/Regexp/RegexpQueryUsageTests.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! -//// - -[[regexp-query-usage]] -=== Regexp Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Regexp(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Value("s.*y") - .Flags("INTERSECTION|COMPLEMENT|EMPTY") - .MaximumDeterminizedStates(20000) - .Rewrite(MultiTermQueryRewrite.TopTerms(10)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new RegexpQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Value = "s.*y", - Flags = "INTERSECTION|COMPLEMENT|EMPTY", - MaximumDeterminizedStates = 20000, - Rewrite = MultiTermQueryRewrite.TopTerms(10) -} ----- - -[source,javascript] -.Example json output ----- -{ - "regexp": { - "description": { - "_name": "named_query", - "boost": 1.1, - "flags": "INTERSECTION|COMPLEMENT|EMPTY", - "max_determinized_states": 20000, - "value": "s.*y", - "rewrite": "top_terms_10" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/term/term-query-usage.asciidoc b/docs/query-dsl/term-level/term/term-query-usage.asciidoc deleted file mode 100644 index 9e38493720c..00000000000 --- a/docs/query-dsl/term-level/term/term-query-usage.asciidoc +++ /dev/null @@ -1,100 +0,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/QueryDsl/TermLevel/Term/TermQueryUsageTests.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! -//// - -[[term-query-usage]] -=== Term Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Term(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Value("project description") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Value = "project description" -} ----- - -[source,javascript] -.Example json output ----- -{ - "term": { - "description": { - "_name": "named_query", - "boost": 1.1, - "value": "project description" - } - } -} ----- - -[float] -== Verbatim term query - -By default an empty term is conditionless so will be rewritten. Sometimes sending an empty term to -match nothing makes sense. You can either use the `ConditionlessQuery` construct from NEST to provide a fallback or make the -query verbatim as followed: - -==== Fluent DSL example - -[source,csharp] ----- -q -.Term(c => c - .Verbatim() - .Field(p => p.Description) - .Value(string.Empty) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermQuery -{ - IsVerbatim = true, - Field = "description", - Value = "", -} ----- - -[source,javascript] -.Example json output ----- -{ - "term": { - "description": { - "value": "" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc b/docs/query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc deleted file mode 100644 index 97517707bda..00000000000 --- a/docs/query-dsl/term-level/terms-set/terms-set-query-usage.asciidoc +++ /dev/null @@ -1,132 +0,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/QueryDsl/TermLevel/TermsSet/TermsSetQueryUsageTests.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! -//// - -[[terms-set-query-usage]] -=== Terms Set Query Usage - -Returns any documents that match with at least one or more of the provided terms. The terms are not -analyzed and thus must match exactly. The number of terms that must match varies per document and -is either controlled by a minimum should match field or computed per document in a minimum should match script. - -Be sure to read the Elasticsearch documentation on {ref_current}/query-dsl-terms-set-query.html[Terms Set query] for more information. - -[float] -=== Minimum should match with field - -The field that controls the number of required terms that must match must be a number field - -==== Fluent DSL example - -[source,csharp] ----- -q -.TermsSet(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Branches) - .Terms("master", "dev") - .MinimumShouldMatchField(p => p.RequiredBranches) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsSetQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.Branches), - Terms = new[] { "master", "dev" }, - MinimumShouldMatchField = Infer.Field(p => p.RequiredBranches) -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms_set": { - "branches": { - "_name": "named_query", - "boost": 1.1, - "terms": [ - "master", - "dev" - ], - "minimum_should_match_field": "requiredBranches" - } - } -} ----- - -[float] -=== Minimum should match with script - -Scripts can also be used to control how many terms are required to match in a more dynamic way. - -The `params.num_terms` parameter is available in the script to indicate the number of -terms that have been specified in the query. - -==== Fluent DSL example - -[source,csharp] ----- -q -.TermsSet(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Branches) - .Terms("master", "dev") - .MinimumShouldMatchScript(s => s - .Source("doc['requiredBranches'].size() == 0 ? params.num_terms : Math.min(params.num_terms, doc['requiredBranches'].value)") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsSetQuery -{ - Name = "named_query", - Boost = 1.1, - Field = Infer.Field(p => p.Branches), - Terms = new[] { "master", "dev" }, - MinimumShouldMatchScript = new InlineScript("doc['requiredBranches'].size() == 0 ? params.num_terms : Math.min(params.num_terms, doc['requiredBranches'].value)") -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms_set": { - "branches": { - "_name": "named_query", - "boost": 1.1, - "terms": [ - "master", - "dev" - ], - "minimum_should_match_script": { - "source": "doc['requiredBranches'].size() == 0 ? params.num_terms : Math.min(params.num_terms, doc['requiredBranches'].value)" - } - } - } -} ----- - diff --git a/docs/query-dsl/term-level/terms/terms-list-query-usage.asciidoc b/docs/query-dsl/term-level/terms/terms-list-query-usage.asciidoc deleted file mode 100644 index 8cb23632d27..00000000000 --- a/docs/query-dsl/term-level/terms/terms-list-query-usage.asciidoc +++ /dev/null @@ -1,172 +0,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/QueryDsl/TermLevel/Terms/TermsListQueryUsageTests.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! -//// - -[[terms-list-query-usage]] -=== Terms List Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Terms(new List { "term1", "term2" }) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Terms = new List { "term1", "term2" } -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "_name": "named_query", - "boost": 1.1, - "description": [ - "term1", - "term2" - ] - } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Terms(_terms) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Terms = _terms -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "_name": "named_query", - "boost": 1.1, - "description": [ - [ - "term1", - "term2" - ] - ] - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ShouldNotBeValid(); - -response.ServerError.Should().NotBeNull(); -response.ServerError.Status.Should().Be(400); -response.ServerError.Error.Should().NotBeNull(); -var rootCauses = response.ServerError.Error.RootCause; -rootCauses.Should().NotBeNullOrEmpty(); -var rootCause = rootCauses.First(); -rootCause.Type.Should().Be("parsing_exception"); ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.NumberOfCommits) - .Terms(_terms) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "numberOfCommits", - Terms = _terms, -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "_name": "named_query", - "boost": 1.1, - "numberOfCommits": [ - [ - "term1", - "term2" - ] - ] - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -response.ServerError.Should().NotBeNull(); -response.ServerError.Status.Should().Be(400); -response.ServerError.Error.Should().NotBeNull(); -var rootCauses = response.ServerError.Error.RootCause; -rootCauses.Should().NotBeNullOrEmpty(); -var rootCause = rootCauses.First(); -rootCause.Type.Should().Be("parsing_exception"); ----- - diff --git a/docs/query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc b/docs/query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc deleted file mode 100644 index 1003b63047b..00000000000 --- a/docs/query-dsl/term-level/terms/terms-lookup-query-usage.asciidoc +++ /dev/null @@ -1,70 +0,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/QueryDsl/TermLevel/Terms/TermsLookupQueryUsageTests.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! -//// - -[[terms-lookup-query-usage]] -=== Terms Lookup Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .TermsLookup(e => e - .Path(p => p.LastName) - .Id("12") - .Routing("myroutingvalue") - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - TermsLookup = new FieldLookup - { - Id = "12", - Index = Index(), - Path = Field(p => p.LastName), - Routing = "myroutingvalue" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "_name": "named_query", - "boost": 1.1, - "description": { - "id": "12", - "index": "devs", - "path": "lastName", - "routing": "myroutingvalue" - } - } -} ----- - diff --git a/docs/query-dsl/term-level/terms/terms-query-usage.asciidoc b/docs/query-dsl/term-level/terms/terms-query-usage.asciidoc deleted file mode 100644 index 2d121f28f45..00000000000 --- a/docs/query-dsl/term-level/terms/terms-query-usage.asciidoc +++ /dev/null @@ -1,119 +0,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/QueryDsl/TermLevel/Terms/TermsQueryUsageTests.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! -//// - -[[terms-query-usage]] -=== Terms Query Usage - -Filters documents that have fields that match any of the provided terms (not analyzed). - -Be sure to read the Elasticsearch documentation on {ref_current}/query-dsl-terms-query.html[Terms query] for more information. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Terms("term1", "term2") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Terms = ExpectedTerms, -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "_name": "named_query", - "boost": 1.1, - "description": [ - "term1", - "term2" - ] - } -} ----- - -[float] -== Single term Terms Query - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Terms("term1") -) ----- - -[float] -== Verbatim terms query - -By default an empty terms array is conditionless so will be rewritten. Sometimes sending an empty an empty array to mean -match nothing makes sense. You can either use the `ConditionlessQuery` construct from NEST to provide a fallback or make the -query verbatim as followed: - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermsQuery -{ - IsVerbatim = true, - Field = "description", - Terms = new string[] { }, -} ----- - -[source,javascript] -.Example json output ----- -{ - "terms": { - "description": [] - } -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -q -.Terms(c => c - .Verbatim() - .Field(p => p.Description) - .Terms(new string[] { }) -) ----- - diff --git a/docs/query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc b/docs/query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc deleted file mode 100644 index a62a3d56e55..00000000000 --- a/docs/query-dsl/term-level/wildcard/wildcard-query-usage.asciidoc +++ /dev/null @@ -1,60 +0,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/QueryDsl/TermLevel/Wildcard/WildcardQueryUsageTests.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! -//// - -[[wildcard-query-usage]] -=== Wildcard Query Usage - -==== Fluent DSL example - -[source,csharp] ----- -q -.Wildcard(c => c - .Name("named_query") - .Boost(1.1) - .Field(p => p.Description) - .Value("p*oj") - .Rewrite(MultiTermQueryRewrite.TopTermsBoost(10)) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new WildcardQuery -{ - Name = "named_query", - Boost = 1.1, - Field = "description", - Value = "p*oj", - Rewrite = MultiTermQueryRewrite.TopTermsBoost(10) -} ----- - -[source,javascript] -.Example json output ----- -{ - "wildcard": { - "description": { - "_name": "named_query", - "boost": 1.1, - "rewrite": "top_terms_boost_10", - "value": "p*oj" - } - } -} ----- - diff --git a/docs/query-dsl/verbatim/verbatim-and-strict-query-usage.asciidoc b/docs/query-dsl/verbatim/verbatim-and-strict-query-usage.asciidoc deleted file mode 100644 index 9c16471b689..00000000000 --- a/docs/query-dsl/verbatim/verbatim-and-strict-query-usage.asciidoc +++ /dev/null @@ -1,234 +0,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/QueryDsl/Verbatim/VerbatimAndStrictQueryUsageTests.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! -//// - -[[verbatim-and-strict-query-usage]] -=== Verbatim and Strict Query Usage - -[float] -=== Verbatim Query Usage - -An individual query can be marked as verbatim in order take effect; a verbatim query will be serialized and -sent in the request to Elasticsearch, bypassing NEST's conditionless checks. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Bool(b => b - .Must(qt => qt - .Term(t => t - .Verbatim() - .Field(p => p.Description) - .Value("") - ), qt => qt - .Term(t => t - .Field(p => p.Name) - .Value("foo") - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermQuery -{ - IsVerbatim = true, - Field = "description", - Value = "" -} -&& new TermQuery -{ - Field = "name", - Value = "foo" -} ----- - -[source,javascript] -.Example json output ----- -{ - "bool": { - "must": [ - { - "term": { - "description": { - "value": "" - } - } - }, - { - "term": { - "name": { - "value": "foo" - } - } - } - ] - } -} ----- - -A compound query can also be marked as verbatim, demonstrated here with a `bool` query. - -==== Fluent DSL example - -[source,csharp] ----- -q -.Bool(b => b - .Verbatim() -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new BoolQuery -{ - IsVerbatim = true, -} ----- - -[source,javascript] -.Example json output ----- -{ - "bool": {} -} ----- - -A single verbatim query will be serialized as-is - -==== Fluent DSL example - -[source,csharp] ----- -q -.Term(t => t - .Verbatim() - .Field(p => p.Description) - .Value("") -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new TermQuery -{ - IsVerbatim = true, - Field = "description", - Value = "" -} ----- - -[source,javascript] -.Example json output ----- -{ - "term": { - "description": { - "value": "" - } - } -} ----- - -Leaf queries within a compound query marked as verbatim will also be serialized as-is - -==== Fluent DSL example - -[source,csharp] ----- -q -.Bool(b => b - .Filter(f => !f - .Term(t => t - .Verbatim() - .Field(p => p.Name) - .Value("") - ) && f - .Exists(e => e - .Field(p => p.NumberOfCommits) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new BoolQuery -{ - Filter = new QueryContainer[] - { - !new TermQuery - { - IsVerbatim = true, - Field = "name", - Value = "" - } && - new ExistsQuery - { - Field = "numberOfCommits" - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "bool": { - "filter": [ - { - "bool": { - "must": [ - { - "exists": { - "field": "numberOfCommits" - } - } - ], - "must_not": [ - { - "term": { - "name": { - "value": "" - } - } - } - ] - } - } - ] - } -} ----- - -[float] -=== Strict Query Usage - -A query can be marked as strict meaning that _if_ it is determined to be _conditionless_, it will throw an -exception. The following example demonstrates this by trying to send an empty string as the value for -a `term` query marked as strict - diff --git a/docs/search.asciidoc b/docs/search.asciidoc deleted file mode 100644 index 8c37727b7e4..00000000000 --- a/docs/search.asciidoc +++ /dev/null @@ -1,91 +0,0 @@ -[[reference-search]] -= Search - -//// -IMPORTANT NOTE -============== -This file has been generated from https://github.com/elastic/elasticsearch-net/tree/master/src/Tests/Tests/search.asciidoc. -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! -//// - -[partintro] --- -NEST exposes all of the search request parameters available in Elasticsearch - -:anchor-list: search/request - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -* <> - -See the documentation on <> for how to use them in NEST. - --- - -:includes-from-dirs: search/request - -include::search/request/explain-usage.asciidoc[] - -include::search/request/fields-usage.asciidoc[] - -include::search/request/from-and-size-usage.asciidoc[] - -include::search/request/highlighting-usage.asciidoc[] - -include::search/request/indices-boost-usage.asciidoc[] - -include::search/request/inner-hits-usage.asciidoc[] - -include::search/request/min-score-usage.asciidoc[] - -include::search/request/point-in-time-usage.asciidoc[] - -include::search/request/post-filter-usage.asciidoc[] - -include::search/request/profile-usage.asciidoc[] - -include::search/request/query-usage.asciidoc[] - -include::search/request/script-fields-usage.asciidoc[] - -include::search/request/search-after-usage.asciidoc[] - -include::search/request/sliced-scroll-search-usage.asciidoc[] - -include::search/request/sort-usage.asciidoc[] - -include::search/request/source-filtering-usage.asciidoc[] - -include::search/request/suggest-usage.asciidoc[] - diff --git a/docs/search/request/explain-usage.asciidoc b/docs/search/request/explain-usage.asciidoc deleted file mode 100644 index 761f9de8324..00000000000 --- a/docs/search/request/explain-usage.asciidoc +++ /dev/null @@ -1,46 +0,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/Search/Request/ExplainUsageTests.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! -//// - -[[explain-usage]] -== Explain Usage - -Enables explanation for each hit on how its score was computed. - -See the Elasticsearch documentation on {ref_current}/search-explain.html[Explain] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Explain() ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest { Explain = true } ----- - -[source,javascript] -.Example json output ----- -{ - "explain": true -} ----- - diff --git a/docs/search/request/fields-usage.asciidoc b/docs/search/request/fields-usage.asciidoc deleted file mode 100644 index 4a92f9a56a4..00000000000 --- a/docs/search/request/fields-usage.asciidoc +++ /dev/null @@ -1,79 +0,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/Search/Request/FieldsUsageTests.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! -//// - -[[fields-usage]] -== Fields Usage - -Allows to selectively load specific stored fields for each document represented by a search hit. - -WARNING: The `fields` parameter is about fields that are explicitly marked as stored in the mapping, -which is off by default and generally not recommended. -Use <> instead to select subsets of the original source document to be returned. - -See the Elasticsearch documentation on {ref_current}/search-request-body.html#request-body-search-stored-fields[Fields] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Query(q => ProjectFilter) -.StoredFields(fs => fs - .Field(p => p.Name) - .Field(p => p.StartedOn) - .Field(p => p.NumberOfCommits) - .Field(p => p.NumberOfContributors) - .Field(p => p.DateString) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Query = ProjectFilter, - StoredFields = Fields( - p => p.Name, - p => p.StartedOn, - p => p.NumberOfCommits, - p => p.NumberOfContributors, - p => p.DateString) -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "term": { - "type": { - "value": "project" - } - } - }, - "stored_fields": [ - "name", - "startedOn", - "numberOfCommits", - "numberOfContributors", - "dateString" - ] -} ----- - diff --git a/docs/search/request/from-and-size-usage.asciidoc b/docs/search/request/from-and-size-usage.asciidoc deleted file mode 100644 index c41d2e15d1c..00000000000 --- a/docs/search/request/from-and-size-usage.asciidoc +++ /dev/null @@ -1,58 +0,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/Search/Request/FromAndSizeUsageTests.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! -//// - -[[from-and-size-usage]] -== From And Size Usage - -Pagination of results can be done by using the `from` and `size` parameters. - -`from` parameter:: - -defines the offset from the first result you want to fetch. - -`size` parameter:: - -allows you to configure the maximum amount of hits to be returned. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.From(10) -.Size(12) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest() -{ - From = 10, - Size = 12 -} ----- - -[source,javascript] -.Example json output ----- -{ - "from": 10, - "size": 12 -} ----- - diff --git a/docs/search/request/highlighting-usage.asciidoc b/docs/search/request/highlighting-usage.asciidoc deleted file mode 100644 index bf46fc399a2..00000000000 --- a/docs/search/request/highlighting-usage.asciidoc +++ /dev/null @@ -1,264 +0,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/Search/Request/HighlightingUsageTests.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! -//// - -[[highlighting-usage]] -== Highlighting Usage - -Allows to highlight search results on one or more fields. -The implementation uses either the lucene `highlighter` or `fast-vector-highlighter`. - -See the Elasticsearch documentation on {ref_current}/search-request-body.html#request-body-search-highlighting[highlighting] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Query(q => q - .Match(m => m - .Field(f => f.Name.Suffix("standard")) - .Query("Upton Sons Shield Rice Rowe Roberts") - ) -) -.Highlight(h => h - .PreTags("") - .PostTags("") - .Encoder(HighlighterEncoder.Html) - .HighlightQuery(q => q - .Match(m => m - .Field(f => f.Name.Suffix("standard")) - .Query("Upton Sons Shield Rice Rowe Roberts") - ) - ) - .Fields( - fs => fs - .Field(p => p.Name.Suffix("standard")) - .Type("plain") - .ForceSource() - .FragmentSize(150) - .Fragmenter(HighlighterFragmenter.Span) - .NumberOfFragments(3) - .NoMatchSize(150), - fs => fs - .Field(p => p.LeadDeveloper.FirstName) - .Type(HighlighterType.Fvh) - .PreTags("") - .PostTags("") - .BoundaryMaxScan(50) - .PhraseLimit(10) - .HighlightQuery(q => q - .Match(m => m - .Field(p => p.LeadDeveloper.FirstName) - .Query("Kurt Edgardo Naomi Dariana Justice Felton") - ) - ), - fs => fs - .Field(p => p.LeadDeveloper.LastName) - .Type(HighlighterType.Unified) - .PreTags("") - .PostTags("") - .HighlightQuery(q => q - .Match(m => m - .Field(p => p.LeadDeveloper.LastName) - .Query(LastNameSearch) - ) - ) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Query = new MatchQuery - { - Query = "Upton Sons Shield Rice Rowe Roberts", - Field = "name.standard" - }, - Highlight = new Highlight - { - PreTags = new[] { "" }, - PostTags = new[] { "" }, - Encoder = HighlighterEncoder.Html, - HighlightQuery = new MatchQuery - { - Query = "Upton Sons Shield Rice Rowe Roberts", - Field = "name.standard" - }, - Fields = new Dictionary - { - { - "name.standard", new HighlightField - { - Type = HighlighterType.Plain, - ForceSource = true, - FragmentSize = 150, - Fragmenter = HighlighterFragmenter.Span, - NumberOfFragments = 3, - NoMatchSize = 150 - } - }, - { - "leadDeveloper.firstName", new HighlightField - { - Type = "fvh", - PhraseLimit = 10, - BoundaryMaxScan = 50, - PreTags = new[] { "" }, - PostTags = new[] { "" }, - HighlightQuery = new MatchQuery - { - Field = "leadDeveloper.firstName", - Query = "Kurt Edgardo Naomi Dariana Justice Felton" - } - } - }, - { - "leadDeveloper.lastName", new HighlightField - { - Type = HighlighterType.Unified, - PreTags = new[] { "" }, - PostTags = new[] { "" }, - HighlightQuery = new MatchQuery - { - Field = "leadDeveloper.lastName", - Query = LastNameSearch - } - } - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "match": { - "name.standard": { - "query": "Upton Sons Shield Rice Rowe Roberts" - } - } - }, - "highlight": { - "pre_tags": [ - "" - ], - "post_tags": [ - "" - ], - "encoder": "html", - "highlight_query": { - "match": { - "name.standard": { - "query": "Upton Sons Shield Rice Rowe Roberts" - } - } - }, - "fields": { - "name.standard": { - "type": "plain", - "force_source": true, - "fragment_size": 150, - "fragmenter": "span", - "number_of_fragments": 3, - "no_match_size": 150 - }, - "leadDeveloper.firstName": { - "type": "fvh", - "phrase_limit": 10, - "boundary_max_scan": 50, - "pre_tags": [ - "" - ], - "post_tags": [ - "" - ], - "highlight_query": { - "match": { - "leadDeveloper.firstName": { - "query": "Kurt Edgardo Naomi Dariana Justice Felton" - } - } - } - }, - "leadDeveloper.lastName": { - "type": "unified", - "pre_tags": [ - "" - ], - "post_tags": [ - "" - ], - "highlight_query": { - "match": { - "leadDeveloper.lastName": { - "query": "Stokes" - } - } - } - } - } - } -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -foreach (var highlightsInEachHit in response.Hits.Select(d => d.Highlight)) -{ - foreach (var highlightField in highlightsInEachHit) - { - if (highlightField.Key == "name.standard") - { - foreach (var highlight in highlightField.Value) - { - highlight.Should().Contain(""); - highlight.Should().Contain(""); - } - } - else if (highlightField.Key == "leadDeveloper.firstName") - { - foreach (var highlight in highlightField.Value) - { - highlight.Should().Contain(""); - highlight.Should().Contain(""); - } - } - else if (highlightField.Key == "leadDeveloper.lastName") - { - foreach (var highlight in highlightField.Value) - { - highlight.Should().Contain(""); - highlight.Should().Contain(""); - } - } - else - Assert.True(false, $"highlights contains unexpected key {highlightField.Key}"); - } -} ----- - diff --git a/docs/search/request/indices-boost-usage.asciidoc b/docs/search/request/indices-boost-usage.asciidoc deleted file mode 100644 index 1132f663520..00000000000 --- a/docs/search/request/indices-boost-usage.asciidoc +++ /dev/null @@ -1,66 +0,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/Search/Request/IndicesBoostUsageTests.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! -//// - -[[indices-boost-usage]] -== Indices Boost Usage - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.IndicesBoost(b => b - .Add("project", 1.4) - .Add("devs", 1.3) -) -.Query(q => q - .MatchAll() -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - IndicesBoost = new Dictionary - { - { "project", 1.4 }, - { "devs", 1.3 } - }, - Query = new MatchAllQuery() -} ----- - -[source,javascript] -.Example json output ----- -{ - "indices_boost": [ - { - "project": 1.4 - }, - { - "devs": 1.3 - } - ], - "query": { - "match_all": {} - } -} ----- - diff --git a/docs/search/request/inner-hits-usage.asciidoc b/docs/search/request/inner-hits-usage.asciidoc deleted file mode 100644 index 5403ac8ad11..00000000000 --- a/docs/search/request/inner-hits-usage.asciidoc +++ /dev/null @@ -1,179 +0,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/Search/Request/InnerHitsUsageTests.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! -//// - -[[inner-hits-usage]] -== Inner Hits Usage - -The {ref_current}/parent-join.html[parent/child] and {ref_current}/nested.html[nested] features allow the -return of documents that have matches in a different scope. -In the parent/child case, parent document are returned based on matches in child documents or child document -are returned based on matches in parent documents. In the nested case, documents are returned based on matches in nested inner objects. - -In both cases, the actual matches in the different scopes that caused a document to be returned is hidden. -In many cases, it’s very useful to know _which_ inner nested objects (in the case of nested) or children/parent -documents (in the case of parent/child) caused certain information to be returned. -The inner hits feature can be used for this. This feature returns per search hit in the search response additional -nested hits that caused a search hit to match in a different scope. - -Inner hits can be used by defining an `inner_hits` definition on a `nested`, `has_child` or `has_parent` query and filter. - -See the Elasticsearch documentation on {ref_current}/search-request-body.html#request-body-search-inner-hits[Inner hits] for more detail. - -[float] -=== Query Inner Hits - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Index(Index) -.Query(q => - q.HasChild(hc => hc - .Query(hcq => hcq.Match(m => m.Field(p => p.FullTextField).Query("default"))) - .InnerHits(ih => ih - .DocValueFields(f => f.Field(p => p.Name)) - .Name("princes") - .Highlight(h => h.Fields(f => f.Field(p => p.FullTextField))) - .IgnoreUnmapped(false) - .Version() - ) - ) || q.Nested(n => n - .Path(p => p.Foes) - .Query(nq => nq.MatchAll()) - .InnerHits(i => i.Version()) - ) -) -.Version() ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest(Index) -{ - Query = new HasChildQuery - { - Type = typeof(Prince), - Query = new MatchQuery { Field = Field(p => p.FullTextField), Query = "default" }, - InnerHits = new InnerHits - { - Name = "princes", - DocValueFields = Field(p => p.Name), - Highlight = Highlight.Field(Field(p => p.FullTextField)), - IgnoreUnmapped = false, - Version = true - } - } || new NestedQuery - { - Path = Field(p => p.Foes), - Query = new MatchAllQuery(), - InnerHits = new InnerHits() - { - Version = true - } - }, - Version = true -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "bool": { - "should": [ - { - "has_child": { - "type": "prince", - "query": { - "match": { - "fullTextField": { - "query": "default" - } - } - }, - "inner_hits": { - "name": "princes", - "docvalue_fields": [ - "name" - ], - "highlight": { - "fields": { - "fullTextField": {} - } - }, - "ignore_unmapped": false, - "version": true - } - } - }, - { - "nested": { - "query": { - "match_all": {} - }, - "path": "foes", - "inner_hits": { - "version": true - } - } - } - ] - } - }, - "version": true -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -response.Hits.Should().NotBeEmpty(); -foreach (var hit in response.Hits) -{ - hit.Id.Should().NotBeNullOrEmpty(); - hit.Index.Should().NotBeNullOrEmpty(); - hit.Version.Should().Be(1); - - var princes = hit.InnerHits["princes"].Documents(); - princes.Should().NotBeEmpty(); - foreach (var princeHit in hit.InnerHits["princes"].Hits.Hits) - { - var highlights = princeHit.Highlight; - highlights.Should().NotBeNull("princes should have highlights"); - highlights.Should().ContainKey("fullTextField", "we are highlighting this field"); - var hl = highlights["fullTextField"]; - hl.Should() - .NotBeEmpty("all docs have the same text so should all highlight") - .And.Contain(s => s.Contains("default"), "default to be highlighted as its part of the query"); - - princeHit.Fields.Should().NotBeNull("all princes have a keyword name so fields should be returned"); - var docValueName = princeHit.Fields.ValueOf(p => p.Name); - docValueName.Should().NotBeNullOrWhiteSpace("value of name on Fields"); - - princeHit.Version.Should().Be(1); - } - - var foes = hit.InnerHits["foes"].Documents(); - foes.Should().NotBeEmpty(); -} ----- - diff --git a/docs/search/request/min-score-usage.asciidoc b/docs/search/request/min-score-usage.asciidoc deleted file mode 100644 index 8bb3103cffd..00000000000 --- a/docs/search/request/min-score-usage.asciidoc +++ /dev/null @@ -1,60 +0,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/Search/Request/MinScoreUsageTests.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! -//// - -[[min-score-usage]] -== Min Score Usage - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.MinScore(0.5) -.Query(q => q - .Term(p => p.Name, "elasticsearch") -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - MinScore = 0.5, - Query = new TermQuery - { - Field = "name", - Value = "elasticsearch" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "min_score": 0.5, - "query": { - "term": { - "name": { - "value": "elasticsearch" - } - } - } -} ----- - diff --git a/docs/search/request/point-in-time-usage.asciidoc b/docs/search/request/point-in-time-usage.asciidoc deleted file mode 100644 index da1c012f365..00000000000 --- a/docs/search/request/point-in-time-usage.asciidoc +++ /dev/null @@ -1,58 +0,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/Search/Request/PointInTimeUsageTests.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! -//// - -[[point-in-time-usage]] -== Point In Time Usage - -A search request by default executes against the most recent visible data of the target indices, which is called point in time. -Elasticsearch pit (point in time) is a lightweight view into the state of the data as it existed when initiated. In some cases, -it's preferred to perform multiple search requests using the same point in time. - -IMPORTANT: Point in time search requests should not specify an index path parameter. When including a point in time in a -search request, it will cause the URL path of the request to become the rooted '/_search' path instead of '/{index}/_search'. - -See the Elasticsearch documentation on {ref_current}/point-in-time-api.html[point in time API] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.PointInTime("a-point-in-time-id", p => p -.KeepAlive("1m")) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - PointInTime = new Nest.PointInTime("a-point-in-time-id", "1m") -} ----- - -[source,javascript] -.Example json output ----- -{ - "pit": { - "id": "a-point-in-time-id", - "keep_alive": "1m" - } -} ----- - diff --git a/docs/search/request/post-filter-usage.asciidoc b/docs/search/request/post-filter-usage.asciidoc deleted file mode 100644 index 541286ab1f3..00000000000 --- a/docs/search/request/post-filter-usage.asciidoc +++ /dev/null @@ -1,47 +0,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/Search/Request/PostFilterUsageTests.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! -//// - -[[post-filter-usage]] -== Post Filter Usage - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.PostFilter(f => f.MatchAll()) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest() -{ - PostFilter = new QueryContainer(new MatchAllQuery()) -} ----- - -[source,javascript] -.Example json output ----- -{ - "post_filter": { - "match_all": {} - } -} ----- - diff --git a/docs/search/request/profile-usage.asciidoc b/docs/search/request/profile-usage.asciidoc deleted file mode 100644 index f6a8207c949..00000000000 --- a/docs/search/request/profile-usage.asciidoc +++ /dev/null @@ -1,71 +0,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/Search/Request/ProfileUsageTests.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! -//// - -[[profile-usage]] -== Profile Usage - -WARNING: This functionality is experimental and may be changed or removed completely in a future release. - -The Profile API provides detailed timing information about the execution of individual components in a query. -It gives the user insight into how queries are executed at a low level so that the user can understand -why certain queries are slow, and take steps to improve their slow queries. - -The output from the Profile API is very verbose, especially for complicated queries executed across many shards. -Pretty-printing the response is recommended to help understand the output - -See the Elasticsearch documentation on {ref_current}/search-profile.html[Profile API] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Profile() -.Query(q => q - .Term(p => p.Name, Project.First.Name) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Profile = true, - Query = new TermQuery - { - Field = "name", - Value = Project.First.Name - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "profile": true, - "query": { - "term": { - "name": { - "value": "Lesch Group" - } - } - } -} ----- - diff --git a/docs/search/request/query-usage.asciidoc b/docs/search/request/query-usage.asciidoc deleted file mode 100644 index 3b49f52b0cb..00000000000 --- a/docs/search/request/query-usage.asciidoc +++ /dev/null @@ -1,59 +0,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/Search/Request/QueryUsageTests.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! -//// - -[[query-usage]] -== Query Usage - -The query element within the search request body allows to define a query using the <>. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Query(q => q - .Term(p => p.Name, "elasticsearch") -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Query = new TermQuery - { - Field = "name", - Value = "elasticsearch" - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "term": { - "name": { - "value": "elasticsearch" - } - } - } -} ----- - diff --git a/docs/search/request/script-fields-usage.asciidoc b/docs/search/request/script-fields-usage.asciidoc deleted file mode 100644 index 2a8adbf9811..00000000000 --- a/docs/search/request/script-fields-usage.asciidoc +++ /dev/null @@ -1,106 +0,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/Search/Request/ScriptFieldsUsageTests.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! -//// - -[[script-fields-usage]] -== Script Fields Usage - -Allows to return a script evaluation (based on different fields) for each hit. - -Script fields can work on fields that are not stored, and allow to return custom values to -be returned (the evaluated value of the script). - -Script fields can also access the actual `_source` document and extract specific elements to -be returned from it by using `params['_source']`. - -Script fields can be accessed on the response using <>, similarly to stored fields. - -See the Elasticsearch documentation on {ref_current}/search-request-body.html#request-body-search-script-fields[script fields] -for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.ScriptFields(sf => sf - .ScriptField("test1", sc => sc - .Source("doc['numberOfCommits'].value * 2") - ) - .ScriptField("test2", sc => sc - .Source("doc['numberOfCommits'].value * params.factor") - .Params(p => p - .Add("factor", 2.0) - ) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - ScriptFields = new ScriptFields - { - { "test1", new ScriptField { Script = new InlineScript("doc['numberOfCommits'].value * 2") } }, - { - "test2", new InlineScript("doc['numberOfCommits'].value * params.factor") - { - Params = new FluentDictionary - { - { "factor", 2.0 } - } - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "script_fields": { - "test1": { - "script": { - "source": "doc['numberOfCommits'].value * 2" - } - }, - "test2": { - "script": { - "source": "doc['numberOfCommits'].value * params.factor", - "params": { - "factor": 2.0 - } - } - } - } -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -foreach (var fields in response.Fields) -{ - fields.Value("test1").Should().BeGreaterOrEqualTo(0); - fields.Value("test2").Should().BeGreaterOrEqualTo(0); -} ----- - diff --git a/docs/search/request/search-after-usage.asciidoc b/docs/search/request/search-after-usage.asciidoc deleted file mode 100644 index a945658bf0a..00000000000 --- a/docs/search/request/search-after-usage.asciidoc +++ /dev/null @@ -1,128 +0,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/Search/Request/SearchAfterUsageTests.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! -//// - -[[search-after-usage]] -== Search After Usage - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Sort(srt => srt - .Descending(p => p.NumberOfCommits) - .Descending(p => p.Name) -) -.SearchAfter( - Project.First.NumberOfCommits, - Project.First.Name -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest() -{ - Sort = new List - { - new FieldSort { Field = Field(p => p.NumberOfCommits), Order = SortOrder.Descending }, - new FieldSort { Field = Field(p => p.Name), Order = SortOrder.Descending } - }, - SearchAfter = new List - { - Project.First.NumberOfCommits, - Project.First.Name, - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "sort": [ - { - "numberOfCommits": { - "order": "desc" - } - }, - { - "name": { - "order": "desc" - } - } - ], - "search_after": [ - 775, - "Lesch Group" - ] -} ----- - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Sort(srt => srt - .Descending(p => p.NumberOfCommits) - .Descending(p => p.Name) -) -.SearchAfter(_previousSort) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest() -{ - Sort = new List - { - new FieldSort { Field = Field(p => p.NumberOfCommits), Order = SortOrder.Descending }, - new FieldSort { Field = Field(p => p.Name), Order = SortOrder.Descending } - }, - SearchAfter = _previousSort.ToList() -} ----- - -[source,javascript] -.Example json output ----- -{ - "sort": [ - { - "numberOfCommits": { - "order": "desc" - } - }, - { - "name": { - "order": "desc" - } - } - ], - "search_after": [ - 775, - "Lesch Group" - ] -} ----- - diff --git a/docs/search/request/sliced-scroll-search-usage.asciidoc b/docs/search/request/sliced-scroll-search-usage.asciidoc deleted file mode 100644 index d0c4b91d65b..00000000000 --- a/docs/search/request/sliced-scroll-search-usage.asciidoc +++ /dev/null @@ -1,50 +0,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/Search/Request/SlicedScrollSearchUsageTests.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! -//// - -[[sliced-scroll-search-usage]] -== Sliced Scroll Search Usage - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Scroll("1m") -.Slice(ss => ss.Id(0).Max(5)) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest() -{ - Scroll = "1m", - Slice = new SlicedScroll { Id = 0, Max = 5 } -} ----- - -[source,javascript] -.Example json output ----- -{ - "slice": { - "id": 0, - "max": 5 - } -} ----- - diff --git a/docs/search/request/sort-usage.asciidoc b/docs/search/request/sort-usage.asciidoc deleted file mode 100644 index 9be8f77dd02..00000000000 --- a/docs/search/request/sort-usage.asciidoc +++ /dev/null @@ -1,303 +0,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/Search/Request/SortUsageTests.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! -//// - -[[sort-usage]] -== Sort Usage - -Allows to add one or more sort on specific fields. Each sort can be reversed as well. -The sort is defined on a per field level, with special field name for `_score` to sort by score. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Sort(ss => ss - .Ascending(p => p.StartedOn) - .Descending(p => p.Name) - .Descending(SortSpecialField.Score) - .Ascending(SortSpecialField.DocumentIndexOrder) - .Field(f => f - .Field(p => p.Tags.First().Added) - .Order(SortOrder.Descending) - .MissingLast() - .UnmappedType(FieldType.Date) - .Mode(SortMode.Average) - .Nested(n => n - .Path(p => p.Tags) - .Filter(q => q.MatchAll()) - ) - ) - .Field(f => f - .Field(p => p.NumberOfCommits) - .Order(SortOrder.Descending) - .Missing(-1) - ) - .GeoDistance(g => g - .Field(p => p.LocationPoint) - .DistanceType(GeoDistanceType.Arc) - .Order(SortOrder.Ascending) - .Unit(DistanceUnit.Centimeters) - .Mode(SortMode.Min) - .Points(new GeoLocation(70, -70), new GeoLocation(-12, 12)) - ) - .GeoDistance(g => g - .Field(p => p.LocationPoint) - .Points(new GeoLocation(70, -70), new GeoLocation(-12, 12)) - ) - .Script(sc => sc - .Type("number") - .Ascending() - .Script(script => script - .Source("doc['numberOfCommits'].value * params.factor") - .Params(p => p.Add("factor", 1.1)) - ) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Sort = new List - { - new FieldSort { Field = "startedOn", Order = SortOrder.Ascending }, - new FieldSort { Field = "name", Order = SortOrder.Descending }, - new FieldSort { Field = "_score", Order = SortOrder.Descending }, - new FieldSort { Field = "_doc", Order = SortOrder.Ascending }, - new FieldSort - { - Field = Field(p => p.Tags.First().Added), - Order = SortOrder.Descending, - Missing = "_last", - UnmappedType = FieldType.Date, - Mode = SortMode.Average, - Nested = new NestedSort - { - Path = Field(p => p.Tags), - Filter = new MatchAllQuery() - } - }, - new FieldSort - { - Field = Field(p => p.NumberOfCommits), - Order = SortOrder.Descending, - Missing = -1 - }, - new GeoDistanceSort - { - Field = "locationPoint", - Order = SortOrder.Ascending, - DistanceType = GeoDistanceType.Arc, - Unit = DistanceUnit.Centimeters, - Mode = SortMode.Min, - Points = new[] { new GeoLocation(70, -70), new GeoLocation(-12, 12) } - }, - new GeoDistanceSort - { - Field = "locationPoint", - Points = new[] { new GeoLocation(70, -70), new GeoLocation(-12, 12) } - }, - new ScriptSort - { - Type = "number", - Order = SortOrder.Ascending, - Script = new InlineScript("doc['numberOfCommits'].value * params.factor") - { - Params = new Dictionary - { - { "factor", 1.1 } - } - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "sort": [ - { - "startedOn": { - "order": "asc" - } - }, - { - "name": { - "order": "desc" - } - }, - { - "_score": { - "order": "desc" - } - }, - { - "_doc": { - "order": "asc" - } - }, - { - "tags.added": { - "missing": "_last", - "order": "desc", - "mode": "avg", - "nested": { - "path": "tags", - "filter": { - "match_all": {} - } - }, - "unmapped_type": "date" - } - }, - { - "numberOfCommits": { - "missing": -1, - "order": "desc" - } - }, - { - "_geo_distance": { - "locationPoint": [ - { - "lat": 70.0, - "lon": -70.0 - }, - { - "lat": -12.0, - "lon": 12.0 - } - ], - "order": "asc", - "mode": "min", - "distance_type": "arc", - "unit": "cm" - } - }, - { - "_geo_distance": { - "locationPoint": [ - { - "lat": 70.0, - "lon": -70.0 - }, - { - "lat": -12.0, - "lon": 12.0 - } - ] - } - }, - { - "_script": { - "order": "asc", - "type": "number", - "script": { - "params": { - "factor": 1.1 - }, - "source": "doc['numberOfCommits'].value * params.factor" - } - } - } - ] -} ----- - -[float] -=== Nested sort usage - -In Elasticsearch 6.1.0+, using `nested_path` and `nested_filter` for sorting on fields mapped as -`nested` types is deprecated. Instead, you should use the `nested` sort instead. - -[source,csharp] ----- -s => s -.Sort(ss => ss - .Field(f => f - .Field(p => p.Tags.First().Added) - .Order(SortOrder.Descending) - .MissingLast() - .UnmappedType(FieldType.Date) - .Mode(SortMode.Average) - .Nested(n => n - .Path(p => p.Tags) - .Filter(ff => ff - .MatchAll() - ) - .MaxChildren(50) - ) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Sort = new List - { - new FieldSort - { - Field = Field(p => p.Tags.First().Added), - Order = SortOrder.Descending, - Missing = "_last", - UnmappedType = FieldType.Date, - Mode = SortMode.Average, - Nested = new NestedSort - { - Path = Field(p => p.Tags), - Filter = new MatchAllQuery(), - MaxChildren = 50 - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "sort": [ - { - "tags.added": { - "missing": "_last", - "order": "desc", - "mode": "avg", - "nested": { - "path": "tags", - "filter": { - "match_all": {} - }, - "max_children": 50 - }, - "unmapped_type": "date" - } - } - ] -} ----- - diff --git a/docs/search/request/source-filtering-usage.asciidoc b/docs/search/request/source-filtering-usage.asciidoc deleted file mode 100644 index def90e999b2..00000000000 --- a/docs/search/request/source-filtering-usage.asciidoc +++ /dev/null @@ -1,130 +0,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/Search/Request/SourceFilteringUsageTests.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! -//// - -[[source-filtering-usage]] -== Source Filtering Usage - -Allows to control how the `_source` field is returned with every hit. -By default operations return the contents of the `_source` field unless -you have used the fields parameter or if the `_source` field is disabled. - -See the Elasticsearch documentation on {ref_current}/search-request-body.html#request-body-search-source-filtering[Source Filtering] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Query(q => ProjectFilter) -.Source(src => src - .IncludeAll() - .Excludes(e => e - .Fields( - p => p.Description - ) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Query = ProjectFilter, - Source = new SourceFilter - { - Includes = "*", - Excludes = Fields(p => p.Description) - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "term": { - "type": { - "value": "project" - } - } - }, - "_source": { - "includes": [ - "*" - ], - "excludes": [ - "description" - ] - } -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); - -foreach (var document in response.Documents) -{ - document.Name.Should().NotBeNull(); - document.StartedOn.Should().NotBe(default(DateTime)); - document.Description.Should().BeNull(); -} ----- - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s.Source(false) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Source = false -} ----- - -[source,javascript] -.Example json output ----- -{ - "_source": false -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -response.ShouldBeValid(); -foreach (var hit in response.Hits) - hit.Source.Should().BeNull(); ----- - diff --git a/docs/search/request/suggest-usage.asciidoc b/docs/search/request/suggest-usage.asciidoc deleted file mode 100644 index 2dd8504d2fd..00000000000 --- a/docs/search/request/suggest-usage.asciidoc +++ /dev/null @@ -1,293 +0,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/Search/Request/SuggestUsageTests.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! -//// - -[[suggest-usage]] -== Suggest Usage - -The suggest feature suggests similar looking terms based on a provided text by using a suggester. - -See the Elasticsearch documentation on {ref_current}/search-suggesters.html[Suggesters] for more detail. - -[float] -=== Fluent DSL example - -[source,csharp] ----- -s => s -.Query(q => ProjectFilter) -.DocValueFields(d => d - .Field(f => f.State) -) -.Suggest(ss => ss - .Term("my-term-suggest", t => t - .MaxEdits(1) - .MaxInspections(2) - .MaxTermFrequency(3) - .MinDocFrequency(4) - .MinWordLength(5) - .PrefixLength(6) - .SuggestMode(SuggestMode.Always) - .Analyzer("standard") - .Field(p => p.Name) - .ShardSize(7) - .Size(8) - .Text("hello world") - ) - .Completion("my-completion-suggest", c => c - .Contexts(ctxs => ctxs - .Context("color", - ctx => ctx.Context(Project.First.Suggest.Contexts.Values.SelectMany(v => v).First()) - ) - ) - .Fuzzy(f => f - .Fuzziness(Fuzziness.Auto) - .MinLength(1) - .PrefixLength(2) - .Transpositions() - .UnicodeAware(false) - ) - .Analyzer("simple") - .Field(p => p.Suggest) - .Size(8) - .Prefix(Project.Instance.Name) - .SkipDuplicates() - ) - .Phrase("my-phrase-suggest", ph => ph - .Collate(c => c - .Query(q => q - .Source("{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}") - ) - .Params(p => p.Add("field_name", "title")) - .Prune() - ) - .Confidence(10.1) - .DirectGenerator(d => d - .Field(p => p.Description) - ) - .GramSize(1) - .Field(p => p.Name) - .Text("hello world") - .RealWordErrorLikelihood(0.5) - .TokenLimit(5) - .ForceUnigrams(false) - ) -) ----- - -[float] -=== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - Query = ProjectFilter, - DocValueFields = Fields(f => f.State), - Suggest = new SuggestContainer - { - { - "my-term-suggest", new SuggestBucket - { - Text = "hello world", - Term = new TermSuggester - { - MaxEdits = 1, - MaxInspections = 2, - MaxTermFrequency = 3, - MinDocFrequency = 4, - MinWordLength = 5, - PrefixLength = 6, - SuggestMode = SuggestMode.Always, - Analyzer = "standard", - Field = Field(p => p.Name), - ShardSize = 7, - Size = 8 - } - } - }, - { - "my-completion-suggest", new SuggestBucket - { - Prefix = Project.Instance.Name, - Completion = new CompletionSuggester - { - Contexts = new Dictionary> - { - { - "color", - new List - { new SuggestContextQuery { Context = Project.First.Suggest.Contexts.Values.SelectMany(v => v).First() } } - } - }, - Fuzzy = new SuggestFuzziness - { - Fuzziness = Fuzziness.Auto, - MinLength = 1, - PrefixLength = 2, - Transpositions = true, - UnicodeAware = false - }, - Analyzer = "simple", - Field = Field(p => p.Suggest), - Size = 8, - SkipDuplicates = true - } - } - }, - { - "my-phrase-suggest", new SuggestBucket - { - Text = "hello world", - Phrase = new PhraseSuggester - { - Collate = new PhraseSuggestCollate - { - Query = new PhraseSuggestCollateQuery - { - Source = "{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}", - }, - Params = new Dictionary - { - { "field_name", "title" } - }, - Prune = true - }, - Confidence = 10.1, - DirectGenerator = new List - { - new DirectGenerator { Field = "description" } - }, - GramSize = 1, - Field = "name", - RealWordErrorLikelihood = 0.5, - TokenLimit = 5, - ForceUnigrams = false - } - } - }, - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "query": { - "term": { - "type": { - "value": "project" - } - } - }, - "docvalue_fields": [ - "state" - ], - "suggest": { - "my-completion-suggest": { - "completion": { - "analyzer": "simple", - "contexts": { - "color": [ - { - "context": "red" - } - ] - }, - "field": "suggest", - "fuzzy": { - "fuzziness": "AUTO", - "min_length": 1, - "prefix_length": 2, - "transpositions": true, - "unicode_aware": false - }, - "size": 8, - "skip_duplicates": true - }, - "prefix": "Durgan LLC" - }, - "my-phrase-suggest": { - "phrase": { - "collate": { - "query": { - "source": "{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}" - }, - "params": { - "field_name": "title" - }, - "prune": true - }, - "confidence": 10.1, - "direct_generator": [ - { - "field": "description" - } - ], - "field": "name", - "gram_size": 1, - "real_word_error_likelihood": 0.5, - "token_limit": 5, - "force_unigrams": false - }, - "text": "hello world" - }, - "my-term-suggest": { - "term": { - "analyzer": "standard", - "field": "name", - "max_edits": 1, - "max_inspections": 2, - "max_term_freq": 3.0, - "min_doc_freq": 4.0, - "min_word_length": 5, - "prefix_length": 6, - "shard_size": 7, - "size": 8, - "suggest_mode": "always" - }, - "text": "hello world" - } - } -} ----- - -[float] -=== Handling Responses - -[source,csharp] ----- -var myCompletionSuggest = response.Suggest["my-completion-suggest"]; - -myCompletionSuggest.Should().NotBeNull(); -var suggest = myCompletionSuggest.First(); -suggest.Text.Should().Be(Project.Instance.Name); -suggest.Length.Should().BeGreaterThan(0); -var option = suggest.Options.First(); -option.Text.Should().NotBeNullOrEmpty(); -option.Index.Should().Be("project"); -option.Id.Should().NotBeNull(); -option.Source.Should().NotBeNull(); -option.Source.Name.Should().NotBeNullOrWhiteSpace(); -option.Source.ShouldAdhereToSourceSerializerWhenSet(); -option.Score.Should().BeGreaterThan(0); -option.Fields.Should().NotBeNull().And.NotBeEmpty(); -option.Fields.Should().ContainKey("state"); -option.Contexts.Should().NotBeNull().And.NotBeEmpty(); -option.Contexts.Should().ContainKey("color"); -var colorContexts = option.Contexts["color"].ToArray(); -colorContexts.Should().NotBeNull().And.HaveCount(1); -colorContexts.First().Category.Should().Be(Project.First.Suggest.Contexts.Values.SelectMany(v => v).First()); ----- - diff --git a/docs/search/returned-fields.asciidoc b/docs/search/returned-fields.asciidoc deleted file mode 100644 index 2d141b7395f..00000000000 --- a/docs/search/returned-fields.asciidoc +++ /dev/null @@ -1,139 +0,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/Search/ReturnedFields.doc.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! -//// - -[[returned-fields]] -=== Selecting fields to return - -Sometimes you don't need to return all of the fields of a document from a search query; for example, when showing -most recent posts on a blog, you may only need the title of the blog to be returned from the -query that finds the most recent posts. - -There are two approaches that you can take to return only some of the fields from a document i.e. a _partial_ -document (we use this term _loosely_ here); using stored fields and source filtering. Both are quite different -in how they work. - -[[stored-fields]] -==== Stored fields - -When indexing a document, by default, Elasticsearch stores the originally sent JSON document in a special -field called {ref_current}/mapping-source-field.html[_source]. Documents returned from -a search query are materialized from the `_source` field returned from Elasticsearch for each hit. - -It is also possible to store a field from the JSON document _separately_ within Elasticsearch -by using {ref_current}/mapping-store.html[store] on the mapping. Why would you ever want to do this? -Well, you may disable `_source` so that the source is not stored and select to store only specific fields. -Another possibility is that the `_source` contains a field with large values, for example, the body of -a blog post, but typically only another field is needed, for example, the title of the blog post. -In this case, we don't want to pay the cost of Elasticsearch deserializing the entire `_soure` just to -get a small field. - -[IMPORTANT] --- -Opting to disable source for a type mapping means that the original JSON document sent to Elasticsearch -is *not* stored and hence can never be retrieved. Whilst you may save disk space in doing so, certain -features are not going to work when source is disabled such as the Reindex API or on the fly -highlighting. - -Seriously consider whether disabling source is what you really want to do for your use case. - --- - -When storing fields in this manner, the individual field values to return can be specified using -`.StoredFields` on the search request - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .StoredFields(sf => sf - .Fields( - f => f.Name, - f => f.StartedOn, - f => f.Branches - ) - ) - .Query(q => q - .MatchAll() - ) -); ----- - -And retrieving them is possible using `.Fields` on the response - -[source,csharp] ----- -foreach (var fieldValues in searchResponse.Fields) -{ - var document = new <1> - { - Name = fieldValues.ValueOf(p => p.Name), - StartedOn = fieldValues.Value(Infer.Field(p => p.StartedOn)), - Branches = fieldValues.Values(p => p.Branches.First()) - }; -} ----- -<1> Construct a partial document as an anonymous type from the stored fields requested - -This works when storing fields separately. A much more common scenario however is to return -only a selection of fields from the `_source`; this is where source filtering comes in. - -[[source-filtering]] -==== Source filtering - -Only some of the fields of a document can be returned from a search query -using source filtering - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Source(sf => sf - .Includes(i => i <1> - .Fields( - f => f.Name, - f => f.StartedOn, - f => f.Branches - ) - ) - .Excludes(e => e <2> - .Fields("num*") <3> - ) - ) - .Query(q => q - .MatchAll() - ) -); ----- -<1> **Include** the following fields -<2> **Exclude** the following fields -<3> Fields can be included or excluded through wildcard patterns - -With source filtering specified on the request, `.Documents` will -now contain _partial_ documents, materialized from the source fields specified to include - -[source,csharp] ----- -var partialProjects = searchResponse.Documents; ----- - -It's possible to exclude `_source` from being returned altogether from a query with - -[source,csharp] ----- -searchResponse = _client.Search(s => s - .Source(false) - .Query(q => q - .MatchAll() - ) -); ----- - diff --git a/docs/search/scrolling-documents.asciidoc b/docs/search/scrolling-documents.asciidoc deleted file mode 100644 index 91f7c642357..00000000000 --- a/docs/search/scrolling-documents.asciidoc +++ /dev/null @@ -1,120 +0,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/Search/ScrollingDocuments.doc.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! -//// - -[[scrolling-documents]] -=== Scrolling documents - -The scroll API can be used to return a large collection of documents from Elasticsearch. - -NEST exposes the scroll API and an observable scroll implementation that can be used -to write concurrent scroll requests. - -==== Simple use - -The simplest use of the scroll API is to perform a search request with a -scroll timeout, then pass the scroll id returned in each response to -the next request to the scroll API, until no more documents are returned - -[source,csharp] ----- -var searchResponse = Client.Search(s => s - .Query(q => q - .Term(f => f.State, StateOfBeing.Stable) - ) - .Scroll("10s") <1> -); - -while (searchResponse.Documents.Any()) <2> -{ - ProcessResponse(searchResponse); <3> - searchResponse = Client.Scroll("10s", searchResponse.ScrollId); -} ----- -<1> Specify a scroll time for how long Elasticsearch should keep this scroll open on the server side. The time specified should be sufficient to process the response on the client side. -<2> make subsequent requests to the scroll API to keep fetching documents, whilst documents are returned -<3> do something with the response - -[[scrollall-observable]] -==== ScrollAllObservable - -Similar to <> for bulk indexing a large number of documents, -NEST exposes an observable scroll implementation, `ScrollAllObservable`, that can be used -to write concurrent scroll requests. `ScrollAllObservable` uses sliced scrolls to split the scroll into -multiple slices that can be consumed concurrently. - -The simplest use of `ScrollAllObservable` is - -[source,csharp] ----- -int numberOfSlices = Environment.ProcessorCount; <1> - -var scrollAllObservable = Client.ScrollAll("10s", numberOfSlices, sc => sc - .MaxDegreeOfParallelism(numberOfSlices) <2> - .Search(s => s - .Query(q => q - .Term(f => f.State, StateOfBeing.Stable) - ) - ) -); - -scrollAllObservable.Wait(TimeSpan.FromMinutes(10), response => <3> -{ - ProcessResponse(response.SearchResponse); <4> -}); ----- -<1> See https://www.elastic.co/guide/en/elasticsearch/reference/current/paginate-search-results.html[sliced scroll] documentation for choosing an appropriate number of slices. -<2> Number of concurrent sliced scroll requests. Usually want to set this to the same value as the number of slices -<3> Total overall time for scrolling **all** documents. Ensure this is a sufficient value to scroll all documents -<4> do something with the response - -More control over how the observable is consumed can be achieved by writing -your own observer and subscribing to the observable, which will initiate scrolling - -[source,csharp] ----- -int numberOfSlices = Environment.ProcessorCount; - -var scrollAllObservable = Client.ScrollAll("10s", numberOfSlices, sc => sc - .MaxDegreeOfParallelism(numberOfSlices) - .Search(s => s - .Query(q => q - .Term(f => f.State, StateOfBeing.Stable) - ) - ) -); - -var waitHandle = new ManualResetEvent(false); -ExceptionDispatchInfo info = null; - -var scrollAllObserver = new ScrollAllObserver( - onNext: response => ProcessResponse(response.SearchResponse), <1> - onError: e => - { - info = ExceptionDispatchInfo.Capture(e); <2> - waitHandle.Set(); - }, - onCompleted: () => waitHandle.Set() -); - -scrollAllObservable.Subscribe(scrollAllObserver); <3> - -waitHandle.WaitOne(); <4> -info?.Throw(); <5> ----- -<1> do something with the response -<2> if an exception is thrown, capture it to throw outside of the observer -<3> initiate scrolling -<4> block the current thread until the wait handle is set -<5> if an exception was captured whilst scrolling, throw it - diff --git a/docs/search/search/collapsing/field-collapse-usage.asciidoc b/docs/search/search/collapsing/field-collapse-usage.asciidoc deleted file mode 100644 index 4127f8e73e9..00000000000 --- a/docs/search/search/collapsing/field-collapse-usage.asciidoc +++ /dev/null @@ -1,192 +0,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/Search/Search/Collapsing/FieldCollapseUsageTests.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! -//// - -[[field-collapse-usage]] -=== Field Collapse Usage - -==== Fluent DSL example - -[source,csharp] ----- -s => s -.Index(DefaultSeeder.ProjectsAliasFilter) -.Collapse(c => c - .Field(f => f.State) - .MaxConcurrentGroupSearches(1000) - .InnerHits(i => i - .Name(nameof(StateOfBeing).ToLowerInvariant()) - .Size(5) - .From(1) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest(DefaultSeeder.ProjectsAliasFilter) -{ - Collapse = new FieldCollapse - { - Field = Field(p => p.State), - MaxConcurrentGroupSearches = 1000, - InnerHits = new InnerHits - { - Name = nameof(StateOfBeing).ToLowerInvariant(), - Size = 5, - From = 1 - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "collapse": { - "field": "state", - "max_concurrent_group_searches": 1000, - "inner_hits": { - "from": 1, - "name": "stateofbeing", - "size": 5 - } - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -var numberOfStates = Enum.GetValues(typeof(StateOfBeing)).Length; -response.HitsMetadata.Total.Value.Should().BeGreaterThan(numberOfStates); -response.Hits.Count.Should().Be(numberOfStates); -foreach (var hit in response.Hits) -{ - var name = nameof(StateOfBeing).ToLowerInvariant(); - hit.InnerHits.Should().NotBeNull().And.ContainKey(name); - var innerHits = hit.InnerHits[name]; - innerHits.Hits.Total.Should().NotBeNull(); - innerHits.Hits.Total.Value.Should().BeGreaterThan(0); -} ----- - -==== Fluent DSL example - -[source,csharp] ----- -s => s -.Source(source => source.ExcludeAll()) -.Index(DefaultSeeder.ProjectsAliasFilter) -.Collapse(c => c - .Field(f => f.State) - .MaxConcurrentGroupSearches(1000) - .InnerHits(i => i - .Source(source => source.ExcludeAll()) - .Name(nameof(StateOfBeing).ToLowerInvariant()) - .Size(5) - .From(1) - .Collapse(c2 => c2 - .Field(p => p.Name) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest(DefaultSeeder.ProjectsAliasFilter) -{ - Source = SourceFilter.ExcludeAll, - Collapse = new FieldCollapse - { - Field = Field(p => p.State), - MaxConcurrentGroupSearches = 1000, - InnerHits = new InnerHits - { - Source = SourceFilter.ExcludeAll, - Name = nameof(StateOfBeing).ToLowerInvariant(), - Size = 5, - From = 1, - Collapse = new FieldCollapse - { - Field = Field(p => p.Name) - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "_source": { - "excludes": [ - "*" - ] - }, - "collapse": { - "field": "state", - "inner_hits": { - "_source": { - "excludes": [ - "*" - ] - }, - "collapse": { - "field": "name" - }, - "from": 1, - "name": "stateofbeing", - "size": 5 - }, - "max_concurrent_group_searches": 1000 - } -} ----- - -==== Handling Responses - -[source,csharp] ----- -var numberOfStates = Enum.GetValues(typeof(StateOfBeing)).Length; -response.HitsMetadata.Total.Value.Should().BeGreaterThan(numberOfStates); -response.Hits.Count.Should().Be(numberOfStates); -foreach (var hit in response.Hits) -{ - var name = nameof(StateOfBeing).ToLowerInvariant(); - hit.InnerHits.Should().NotBeNull().And.ContainKey(name); - var innerHits = hit.InnerHits[name]; - innerHits.Hits.Total.Should().NotBeNull(); - innerHits.Hits.Total.Value.Should().BeGreaterThan(0); - - var i = 0; - foreach (var innerHit in innerHits.Hits.Hits) - { - i++; - innerHit.Fields.Should() - .NotBeEmpty() - .And.ContainKey("name"); - } - - i.Should().NotBe(0, "we expect to inspect 2nd level collapsed fields"); -} ----- - diff --git a/docs/search/search/rescoring/rescore-usage.asciidoc b/docs/search/search/rescoring/rescore-usage.asciidoc deleted file mode 100644 index afbae292eec..00000000000 --- a/docs/search/search/rescoring/rescore-usage.asciidoc +++ /dev/null @@ -1,160 +0,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/Search/Search/Rescoring/RescoreUsageTests.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! -//// - -[[rescore-usage]] -=== Rescore Usage - -Rescoring can help to improve precision by reordering just the top (eg 100 - 500) documents -returned by the query and post_filter phases, using a secondary (usually more costly) algorithm, -instead of applying the costly algorithm to all documents in the index. - -See the Elasticsearch documentation on {ref_current}/search-request-rescore.html[Rescoring] for more detail. - -==== Fluent DSL example - -[source,csharp] ----- -s => s -.From(10) -.Size(20) -.Query(q => q - .MatchAll() -) -.Rescore(r => r - .Rescore(rr => rr - .WindowSize(20) - .RescoreQuery(rq => rq - .ScoreMode(ScoreMode.Multiply) - .Query(q => q - .ConstantScore(cs => cs - .Filter(f => f - .Terms(t => t - .Field(p => p.Tags.First()) - .Terms("eos", "sit", "sed") - ) - ) - ) - ) - ) - ) - .Rescore(rr => rr - .RescoreQuery(rq => rq - .ScoreMode(ScoreMode.Total) - .Query(q => q - .FunctionScore(fs => fs - .Functions(f => f - .RandomScore(rs => rs.Seed(1337).Field("_seq_no")) - ) - ) - ) - ) - ) -) ----- - -==== Object Initializer syntax example - -[source,csharp] ----- -new SearchRequest -{ - From = 10, - Size = 20, - Query = new QueryContainer(new MatchAllQuery()), - Rescore = new List - { - new Rescore - { - WindowSize = 20, - Query = new RescoreQuery - { - ScoreMode = ScoreMode.Multiply, - Query = new ConstantScoreQuery - { - Filter = new TermsQuery - { - Field = Field(p => p.Tags.First()), - Terms = new[] { "eos", "sit", "sed" } - } - } - } - }, - new Rescore - { - Query = new RescoreQuery - { - ScoreMode = ScoreMode.Total, - Query = new FunctionScoreQuery - { - Functions = new List - { - new RandomScoreFunction { Seed = 1337, Field = "_seq_no" }, - } - } - } - } - } -} ----- - -[source,javascript] -.Example json output ----- -{ - "from": 10, - "size": 20, - "query": { - "match_all": {} - }, - "rescore": [ - { - "window_size": 20, - "query": { - "score_mode": "multiply", - "rescore_query": { - "constant_score": { - "filter": { - "terms": { - "tags": [ - "eos", - "sit", - "sed" - ] - } - } - } - } - } - }, - { - "query": { - "score_mode": "total", - "rescore_query": { - "function_score": { - "functions": [ - { - "random_score": { - "seed": 1337, - "field": "_seq_no" - } - } - ] - } - } - } - } - ] -} ----- - diff --git a/docs/search/searching-runtime-fields.asciidoc b/docs/search/searching-runtime-fields.asciidoc deleted file mode 100644 index 75e89183272..00000000000 --- a/docs/search/searching-runtime-fields.asciidoc +++ /dev/null @@ -1,149 +0,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/Search/SearchingRuntimeFields.doc.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! -//// - -[[searching-runtime-fields]] -=== Searching runtime fields - -Runtime fields can be returned with search requests by specifying the fields using `.Fields` -on the search request. - -[WARNING] --- -This functionality is in beta and is subject to change. The design and code is less mature -than official GA features and is being provided as-is with no warranties. Beta features -are not subject to the support SLA of official GA features. - --- - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .MatchAll() - ) - .Fields(fs => fs - .Field(f => f.StartedOnDayOfWeek) - .Field(f => f.ThirtyDaysFromStarted, format: DateFormat.basic_date) - ) -); ----- - -which serializes to the following JSON - -[source,javascript] ----- -{ - "query": { - "match_all": {} - }, - "fields": [ - "runtime_started_on_day_of_week", - { - "field": "runtime_thirty_days_after_started", - "format": "basic_date" - } - ] -} ----- - -The previous example used the Fluent API to express the query. NEST also exposes an -Object Initializer syntax to compose queries - -[source,csharp] ----- -var searchRequest = new SearchRequest -{ - Query = new MatchAllQuery(), - Fields = Infer.Field(p => p.StartedOnDayOfWeek) <1> - .And(p => p.ThirtyDaysFromStarted, format: DateFormat.basic_date) <2> -}; - -searchResponse = _client.Search(searchRequest); ----- -<1> Here we infer the field name from a property on a POCO class -<2> For runtime fields which return a date, a format may be specified. - -==== Defining runtime fields - -You may define runtime fields that exist only as part of a query by specifying `.RuntimeFields` on -the search request. You may return this field using `.Fields` or use it for an aggregation. - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .MatchAll() - ) - .Fields(fs => fs - .Field(f => f.StartedOnDayOfWeek) - .Field(f => f.ThirtyDaysFromStarted, format: DateFormat.basic_date) - .Field("search_runtime_field") - ) - .RuntimeFields(rtf => rtf.RuntimeField("search_runtime_field", FieldType.Keyword, r => r - .Script("if (doc['type'].size() != 0) {emit(doc['type'].value.toUpperCase())}"))) -); ----- - -which yields the following query JSON - -[source,javascript] ----- -{ - "query": { - "match_all": {} - }, - "fields": [ - "runtime_started_on_day_of_week", - { - "field": "runtime_thirty_days_after_started", - "format": "basic_date" - }, - "search_runtime_field" - ], - "runtime_mappings": { - "search_runtime_field": { - "script": { - "source": "if (doc['type'].size() != 0) {emit(doc['type'].value.toUpperCase())}" - }, - "type": "keyword" - } - } -} ----- - -The previous example used the Fluent API to express the query. Here is the same query using the -Object Initializer syntax. - -[source,csharp] ----- -var searchRequest = new SearchRequest -{ - Query = new MatchAllQuery(), - Fields = Infer.Field(p => p.StartedOnDayOfWeek) - .And(p => p.ThirtyDaysFromStarted, format: DateFormat.basic_date) - .And("search_runtime_field"), - RuntimeFields = new RuntimeFields - { - { "search_runtime_field", new RuntimeField - { - Type = FieldType.Keyword, - Script = new InlineScript("if (doc['type'].size() != 0) {emit(doc['type'].value.toUpperCase())}") - } - } - } -}; - -searchResponse = _client.Search(searchRequest); ----- - diff --git a/docs/search/writing-queries.asciidoc b/docs/search/writing-queries.asciidoc deleted file mode 100644 index b31ea08830a..00000000000 --- a/docs/search/writing-queries.asciidoc +++ /dev/null @@ -1,401 +0,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/Search/WritingQueries.doc.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! -//// - -[[writing-queries]] -=== Writing queries - -Once you have data indexed within Elasticsearch, you're going to want to be able to search it. Elasticsearch -offers a powerful query DSL to define queries to execute against Elasticsearch. This DSL is based on JSON -and is exposed in NEST in the form of both a Fluent API and an Object Initializer syntax - -==== Match All query - -The simplest of queries is the {ref_current}/query-dsl-match-all-query.html[match_all] query; -this will return all documents, giving them all a `_score` of 1.0 - -[NOTE] --- -Not _all_ of the matching documents are returned in the one response; by default, only the first ten documents -are returned. You can use `from` and `size` to paginate results. - --- - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .MatchAll() - ) -); ----- - -which serializes to the following JSON - -[source,javascript] ----- -{ - "query": { - "match_all": {} - } -} ----- - -Since `match_all` queries are common, the previous example also has a shorthand which -serializes to the same query DSL JSON - -[source,csharp] ----- -searchResponse = _client.Search(s => s - .MatchAll() -); ----- - -The two previous examples both used the Fluent API to express the query. NEST also exposes an -Object Initializer syntax to compose queries - -[source,csharp] ----- -var searchRequest = new SearchRequest -{ - Query = new MatchAllQuery() -}; - -searchResponse = _client.Search(searchRequest); ----- - -==== Search request parameters - -There are several parameters available on a search request; take a look at the reference section -on <> for more details. - -[float] -=== Common queries - -By default, documents will be returned in `_score` descending order, where the `_score` for each hit -is the relevancy score calculated for how well the document matched the query criteria. - -There are a number of search queries at your disposal, all of which are documented in -the <> reference section. Here, we want to highlight the three types of query -operations that users typically want to perform - -* <> - -* <> - -* <> - -[[structured-search]] -==== Structured search - -Structured search is about querying data that has inherent structure. Dates, times and numbers -are all structured and it is common to want to query against fields of these types to look -for exact matches, values that fall within a range, etc. Text can also be structured, for example, -the keyword tags applied to a blog post. - -With structured search, the answer to a query is *always* yes or no; a document is either a match -for the query or it isn't. - -The <> are typically used for structured search. Here's an -example that looks for documents whose started on date falls within a specified range - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .DateRange(r => r - .Field(f => f.StartedOn) - .GreaterThanOrEquals(new DateTime(2017, 01, 01)) - .LessThan(new DateTime(2018, 01, 01))<1> - ) - ) -); ----- -<1> Find all the projects that have been started in 2017 - -which yields the following query JSON - -[source,javascript] ----- -{ - "query": { - "range": { - "startedOn": { - "lt": "2018-01-01T00:00:00", - "gte": "2017-01-01T00:00:00" - } - } - } -} ----- - -Since the answer to this query is always yes or no, we don't want to _score_ the query. To do this, -we can get the query to be __executed in a filter context__ by wrapping it in a `bool` query `filter` -clause - -[source,csharp] ----- -searchResponse = _client.Search(s => s - .Query(q => q - .Bool(b => b - .Filter(bf => bf - .DateRange(r => r - .Field(f => f.StartedOn) - .GreaterThanOrEquals(new DateTime(2017, 01, 01)) - .LessThan(new DateTime(2018, 01, 01)) - ) - ) - ) - - ) -); ----- - -[source,javascript] ----- -{ - "query": { - "bool": { - "filter": [ - { - "range": { - "startedOn": { - "lt": "2018-01-01T00:00:00", - "gte": "2017-01-01T00:00:00" - } - } - } - ] - } - } -} ----- - -The benefit of executing a query in a filter context is that Elasticsearch is able to -forgo calculating a relevancy score, as well as cache filters for faster subsequent performance. - -[IMPORTANT] --- -<> have no analysis phase, that is, the query input -is not analyzed, and an *exact match* to the input is looked for in the inverted index. This can -trip many new users up when using a term level query against a field that is analyzed at index -time. - -When a field is _only_ to be used for exact matching, you should consider indexing it as a -{ref_current}/keyword.html[keyword] datatype. If a field is used for both exact matches and -full text search, you should consider indexing it with <>. - --- - -[[unstructured-search]] -==== Unstructured search - -Another common use case is to search within full text fields in order to find the most relevant documents. - -<> are used for unstructured search; here we use the `match` query -to find all documents that contain `"Russ"` in the lead developer first name field - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .Match(m => m - .Field(f => f.LeadDeveloper.FirstName) - .Query("Russ") - ) - ) -); ----- - -which yields the following query JSON - -[source,javascript] ----- -{ - "query": { - "match": { - "leadDeveloper.firstName": { - "query": "Russ" - } - } - } -} ----- - -[IMPORTANT] --- -<> have an analysis phase, that is, the query input -is analyzed, and the resulting terms from query analysis are compared to the terms in the inverted -index. - -You have full control over the analysis that is applied at both search time and index time, by applying -<> to {ref_current}/text.html[text] datatype fields through -<>. - --- - -[[combining-queries]] -==== Combining queries - -An extremely common scenario is to combine separate queries together to form a -<>, the most common of which is the `bool` query - -[source,csharp] ----- -var searchResponse = _client.Search(s => s - .Query(q => q - .Bool(b => b - .Must(mu => mu - .Match(m => m <1> - .Field(f => f.LeadDeveloper.FirstName) - .Query("Russ") - ), mu => mu - .Match(m => m <2> - .Field(f => f.LeadDeveloper.LastName) - .Query("Cam") - ) - ) - .Filter(fi => fi - .DateRange(r => r - .Field(f => f.StartedOn) - .GreaterThanOrEquals(new DateTime(2017, 01, 01)) - .LessThan(new DateTime(2018, 01, 01)) <3> - ) - ) - ) - ) -); ----- -<1> match documents where lead developer first name contains Russ -<2> ...and where the lead developer last name contains Cam -<3> ...and where the project started in 2017 - -which yields the following query JSON - -[source,javascript] ----- -{ - "query": { - "bool": { - "must": [ - { - "match": { - "leadDeveloper.firstName": { - "query": "Russ" - } - } - }, - { - "match": { - "leadDeveloper.lastName": { - "query": "Cam" - } - } - } - ], - "filter": [ - { - "range": { - "startedOn": { - "lt": "2018-01-01T00:00:00", - "gte": "2017-01-01T00:00:00" - } - } - } - ] - } - } -} ----- - -A document must -satisfy all three queries in this example to be a match - -. the `match` queries on both first name and last name will contribute to -the relevancy score calculated, since both queries are running in a query context - -. the `range` query against the started on date is running in a filter context, -so no score is calculated for matching documents (all documents have the same score -of 1.0 for this query). - -Because `bool` queries are so common, NEST overloads operators on queries to make forming -`bool` queries much more succinct. The previous `bool` query can be more concisely -expressed as - -[source,csharp] ----- -searchResponse = _client.Search(s => s - .Query(q => q - .Match(m => m - .Field(f => f.LeadDeveloper.FirstName) - .Query("Russ") - ) && q <1> - .Match(m => m - .Field(f => f.LeadDeveloper.LastName) - .Query("Cam") - ) && +q <2> - .DateRange(r => r - .Field(f => f.StartedOn) - .GreaterThanOrEquals(new DateTime(2017, 01, 01)) - .LessThan(new DateTime(2018, 01, 01)) - ) - ) -); ----- -<1> combine queries using the binary `&&` operator -<2> wrap a query in a `bool` query filter clause using the unary `+` operator and combine using the binary `&&` operator - -Take a look at the dedicated section on <> for more detail -and further examples. - -==== Search response - -The response returned from a search query is an `SearchResponse`, where `T` is the -generic parameter type defined in the search method call. There are a fair few properties -on the response, but the most common you're likely to work with is `.Documents`, -which we'll demonstrate below. - -==== Matching documents - -To get the documents in the response that match the search query is easy enough - -[source,csharp] ----- -var searchResponse = client.Search(s => s - .Query(q => q - .MatchAll() - ) -); - -var projects = searchResponse.Documents; ----- - -`.Documents` is a convenient shorthand for retrieving the `_source` -for each hit - -[source,csharp] ----- -var sources = searchResponse.HitsMetadata.Hits.Select(h => h.Source); ----- - -and it's possible to retrieve other metadata about each hit from the hits collection. Here's -an example that retrieves the highlights for a hit, when using <> - -[source,csharp] ----- -var highlights = searchResponse.HitsMetadata.Hits.Select(h => h - .Highlight <1> -); ----- -<1> Get the highlights for the hit, when using highlighting - diff --git a/docs/timeoutplot.png b/docs/timeoutplot.png deleted file mode 100644 index ceb819bff0b789818ffdafb129d5c63735ea138a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10018 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"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.Authentication(new Base64ApiKey(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 - { - AuthenticationHeader = new Base64ApiKey(response.Id, response.ApiKey) - } - }; ----- - -==== Handling Responses - -[source,csharp] ----- -response.IsValid.Should().BeTrue(); -response.Nodes.Should().NotBeEmpty(); ----- - diff --git a/docs/x-pack/security/role-mapping/role-mapping-rules.asciidoc b/docs/x-pack/security/role-mapping/role-mapping-rules.asciidoc deleted file mode 100644 index e529066a8f4..00000000000 --- a/docs/x-pack/security/role-mapping/role-mapping-rules.asciidoc +++ /dev/null @@ -1,157 +0,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/RoleMapping/RoleMappingRules.doc.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! -//// - -[[role-mapping-rules]] -=== Role Mapping Rules - -X-Pack Security allows you to map role rules through the API as of 5.5 -NEST exposes this role rules DSL in a strongy typed fashion - -==== Rule Conjunction - -You can create a conjuction of many rules using either `+` or `&` which are both overloaded to produce an `all` rule. - -[source,csharp] ----- -var allRule = new UsernameRule("u1") + new UsernameRule("u2") & new UsernameRule("u3"); -allRule.All.Should().NotBeEmpty().And.HaveCount(3); ----- - -using `+=` assignments you can build rules more dynamically * - -[source,csharp] ----- -RoleMappingRuleBase rules = null; -for(var i = 0;i<10;i++) - rules += new UsernameRule($"user_{i}"); -rules.Should().BeOfType(); - -allRule = (AllRoleMappingRule) rules; -allRule.All.Should().NotBeEmpty().And.HaveCount(10); ----- - -==== Rule Disjunction - -The produce an `any` disjunction rule over many rules you can use the overloaded `|` - -[source,csharp] ----- -var anyRule = new UsernameRule("u1") | new UsernameRule("u2") | new UsernameRule("u3"); -anyRule.Any.Should().NotBeEmpty().And.HaveCount(3); ----- - -using `|=` assignments you can build disjunction rules more dynamically * - -[source,csharp] ----- -RoleMappingRuleBase rules = null; -for(var i = 0;i<10;i++) - rules |= new UsernameRule($"user_{i}"); -rules.Should().BeOfType(); - -anyRule = (AnyRoleMappingRule) rules; -anyRule.Any.Should().NotBeEmpty().And.HaveCount(10); ----- - -==== Rule Negation - -You can automatically negate any rule by using the `!` infix operator - -[source,csharp] ----- -var exceptRule = !new UsernameRule("user_1"); -exceptRule.Should().BeOfType(); ----- - -==== Full Example - -Combining all of these you can build role mapping rules quite elegantly - -[source,csharp] ----- -var dn = "*,ou=admin,dc=example,dc=com"; -var username = "mpdreamz"; -var realm = "some_realm"; -var metadata = Tuple.Create("a", "b"); -var groups = new [] {"group1", "group2"}; ----- - -using the operators we can succintly combine field rules - -[source,csharp] ----- -var dsl = - (new DistinguishedNameRule(dn) | new UsernameRule(username) | new RealmRule(realm)) - & new MetadataRule(metadata.Item1, metadata.Item2) - & !new GroupsRule(groups); ----- - -We can also use an explicit object initializer syntax to compose the same graph - -[source,csharp] ----- -var ois = new AllRoleMappingRule( - new AnyRoleMappingRule( - new DistinguishedNameRule(dn), - new UsernameRule(username), - new RealmRule(realm) - ) - , new MetadataRule(metadata.Item1, metadata.Item2) - , new ExceptRoleMappingRole(new GroupsRule(groups)) -); - -var writingStyles = Setup(dsl, ois); - -Assert(writingStyles, json: new { - all = new object[] { - new { - any = new object[] { - new { field = new { dn = "*,ou=admin,dc=example,dc=com" } }, - new { field = new { username = "mpdreamz" } }, - new { field = new Dictionary(){ {"realm.name", "some_realm" } } } - } - }, - new { field = new Dictionary(){ {"metadata.a", "b" } } }, - new { except = new { field = new { groups = new [] { "group1", "group2" } } } } - } -}); - -Tuple.Create(dsl, ois) -Assert(json, rules.Item1); -Assert(json, rules.Item2); - -SerializationTestHelper.Expect(new -{ - enabled = true, - roles = new[] {"admin"}, - rules = json, - metadata = new - { - x = "y", - //TODO test for null here again, limitation of Expect() - //z = (object) null - } -}).WhenSerializing(new PutRoleMappingRequest("x") -{ - Enabled = true, - Roles = new[] {"admin"}, - Rules = rules, - Metadata = new Dictionary - { - {"x", "y"}, - //{"z", null} - } -}); ----- - diff --git a/exclusion.dic b/exclusion.dic new file mode 100644 index 00000000000..fbef39248b3 --- /dev/null +++ b/exclusion.dic @@ -0,0 +1,6 @@ +deserialize +json +async +inferrer +elasticsearch +asciidocs \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/Api/BulkRequest.cs b/src/Elastic.Clients.Elasticsearch/Api/BulkRequest.cs index ccf3905ea2a..9918407c49d 100644 --- a/src/Elastic.Clients.Elasticsearch/Api/BulkRequest.cs +++ b/src/Elastic.Clients.Elasticsearch/Api/BulkRequest.cs @@ -34,11 +34,14 @@ public void Serialize(Stream stream, IElasticsearchClientSettings settings, Seri foreach (var op in Operations) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } op.PrepareIndex(index); - serializable.Serialize(stream, settings, formatting); + serializable.Serialize(stream, settings, SerializationFormatting.None); stream.WriteByte((byte)'\n'); } } @@ -53,11 +56,14 @@ public async Task SerializeAsync(Stream stream, IElasticsearchClientSettings set foreach (var op in Operations) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } op.PrepareIndex(index); - await serializable.SerializeAsync(stream, settings, formatting).ConfigureAwait(false); + await serializable.SerializeAsync(stream, settings, SerializationFormatting.None).ConfigureAwait(false); stream.WriteByte((byte)'\n'); } } @@ -200,11 +206,14 @@ public void Serialize(Stream stream, IElasticsearchClientSettings settings, Seri foreach (var op in _operations) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } op.PrepareIndex(index); - serializable.Serialize(stream, settings, formatting); + serializable.Serialize(stream, settings, SerializationFormatting.None); stream.WriteByte((byte)'\n'); } } @@ -219,11 +228,14 @@ public async Task SerializeAsync(Stream stream, IElasticsearchClientSettings set foreach (var op in _operations) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } op.PrepareIndex(index); - await serializable.SerializeAsync(stream, settings, formatting).ConfigureAwait(false); + await serializable.SerializeAsync(stream, settings, SerializationFormatting.None).ConfigureAwait(false); stream.WriteByte((byte)'\n'); } } diff --git a/src/Elastic.Clients.Elasticsearch/Api/CreateRequest.cs b/src/Elastic.Clients.Elasticsearch/Api/CreateRequest.cs index 4e03c9f85f0..f2b80e97a09 100644 --- a/src/Elastic.Clients.Elasticsearch/Api/CreateRequest.cs +++ b/src/Elastic.Clients.Elasticsearch/Api/CreateRequest.cs @@ -19,5 +19,5 @@ public CreateRequest(TDocument documentWithId, IndexName index = null, Id id = n : this(index ?? typeof(TDocument), id ?? Id.From(documentWithId)) => Document = documentWithId; - public void WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialisation.Serialize(Document, writer, sourceSerializer); + public void WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialization.Serialize(Document, writer, sourceSerializer); } diff --git a/src/Elastic.Clients.Elasticsearch/Api/IndexRequest.cs b/src/Elastic.Clients.Elasticsearch/Api/IndexRequest.cs index 5059b3197a0..6f4c01cda15 100644 --- a/src/Elastic.Clients.Elasticsearch/Api/IndexRequest.cs +++ b/src/Elastic.Clients.Elasticsearch/Api/IndexRequest.cs @@ -24,7 +24,7 @@ public partial class IndexRequest : ICustomJsonWriter [JsonIgnore] private Id? Id => RouteValues.Get("id"); - void ICustomJsonWriter.WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialisation.Serialize(Document, writer, sourceSerializer); + void ICustomJsonWriter.WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialization.Serialize(Document, writer, sourceSerializer); internal static HttpMethod GetHttpMethod(IndexRequest request) => request.Id?.StringOrLongValue != null || request.RouteValues.ContainsId ? HttpMethod.PUT : HttpMethod.POST; @@ -40,7 +40,7 @@ public IndexRequestDescriptor Document(TDocument document) internal Id _id; - public void WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialisation.Serialize(DocumentValue, writer, sourceSerializer); + public void WriteJson(Utf8JsonWriter writer, Serializer sourceSerializer) => SourceSerialization.Serialize(DocumentValue, writer, sourceSerializer); protected override HttpMethod? DynamicHttpMethod => _id is not null || RouteValues.ContainsId ? HttpMethod.PUT : HttpMethod.POST; } diff --git a/src/Elastic.Clients.Elasticsearch/Client/ElasticsearchClient.cs b/src/Elastic.Clients.Elasticsearch/Client/ElasticsearchClient.cs index 448966b775b..177359d05bc 100644 --- a/src/Elastic.Clients.Elasticsearch/Client/ElasticsearchClient.cs +++ b/src/Elastic.Clients.Elasticsearch/Client/ElasticsearchClient.cs @@ -76,8 +76,10 @@ internal ElasticsearchClient(HttpTransport transpo public IElasticsearchClientSettings ElasticsearchClientSettings => _transport.Settings; public Inferrer Infer => _transport.Settings.Inferrer; + public Serializer RequestResponseSerializer => _transport.Settings.RequestResponseSerializer; public Serializer SourceSerializer => _transport.Settings.SourceSerializer; + public HttpTransport Transport => _transport; private ProductCheckStatus _productCheckStatus; diff --git a/src/Elastic.Clients.Elasticsearch/Core/Configuration/ElasticsearchClientSettings.cs b/src/Elastic.Clients.Elasticsearch/Core/Configuration/ElasticsearchClientSettings.cs index 4b6816eedf7..2a0e63b9445 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Configuration/ElasticsearchClientSettings.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Configuration/ElasticsearchClientSettings.cs @@ -115,18 +115,12 @@ public abstract class : base(nodePool, connection, null, ElasticsearchClientProductRegistration.DefaultForElasticsearchClientsElasticsearch) { var requestResponseSerializer = new DefaultRequestResponseSerializer(this); - var sourceSerializer = sourceSerializerFactory?.Invoke(requestResponseSerializer, this) ?? new DefaultSourceSerializer(this); + var sourceSerializer = new DefaultSourceSerializer(this); - _propertyMappingProvider = propertyMappingProvider ?? sourceSerializer as IPropertyMappingProvider ?? new DefaultPropertyMappingProvider(); - - // TODO - Serializer implementations should directly call diagnostics to avoid wrapping - //We wrap these in an internal proxy to facilitate serialization diagnostics - //_sourceSerializer = new DiagnosticsSerializerProxy(sourceSerializer, "source"); - _sourceSerializer = sourceSerializer; - - //UseThisRequestResponseSerializer = new DiagnosticsSerializerProxy(defaultSerializer); UseThisRequestResponseSerializer = requestResponseSerializer; + _sourceSerializer = sourceSerializerFactory?.Invoke(sourceSerializer, this) ?? sourceSerializer; + _propertyMappingProvider = propertyMappingProvider ?? sourceSerializer as IPropertyMappingProvider ?? new DefaultPropertyMappingProvider(); _defaultFieldNameInferrer = p => p.ToCamelCase(); _defaultIndices = new FluentDictionary(); _defaultRelationNames = new FluentDictionary(); diff --git a/src/Elastic.Clients.Elasticsearch/Core/Exceptions/ThrowHelper.cs b/src/Elastic.Clients.Elasticsearch/Core/Exceptions/ThrowHelper.cs index 4ed175ae85b..637ea39559c 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Exceptions/ThrowHelper.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Exceptions/ThrowHelper.cs @@ -15,7 +15,7 @@ internal static class ThrowHelper [MethodImpl(MethodImplOptions.NoInlining)] internal static void ThrowUnknownTaggedUnionVariantJsonException(string variantTag, Type interfaceType) => - throw new JsonException($"Encounted an unsupported variant tag '{variantTag}' on '{SimplifiedFullName(interfaceType)}', which could not be deserialised."); + throw new JsonException($"Encountered an unsupported variant tag '{variantTag}' on '{SimplifiedFullName(interfaceType)}', which could not be deserialized."); [MethodImpl(MethodImplOptions.NoInlining)] internal static void ThrowInvalidOperationException(string message) => @@ -25,4 +25,10 @@ internal static class ThrowHelper #pragma warning disable IDE0057 // Use range operator private static string SimplifiedFullName(Type type) => type.FullName.Substring(30); #pragma warning restore IDE0057 // Use range operator + + [MethodImpl(MethodImplOptions.NoInlining)] + internal static void ThrowJsonExceptionForMissingSettings() => throw new JsonException("Unable to retrieve client settings for JsonSerializerOptions."); + + [MethodImpl(MethodImplOptions.NoInlining)] + internal static void ThrowInvalidOperationForBulkWhenNotIStreamSerializable() => throw new InvalidOperationException("Operation must implement IStreamSerializable."); } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValue.cs b/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValue.cs index 5c7fe52b9db..276516d1c60 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValue.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValue.cs @@ -374,9 +374,9 @@ public override void Write(Utf8JsonWriter writer, FieldValue value, JsonSerializ else if (value.TryGetComposite(out var objectValue)) { if (!options.TryGetClientSettings(out var settings)) - throw new JsonException("Unable to retrieve ElasticsearchClientSettings in order to access source serializer."); + ThrowHelper.ThrowJsonExceptionForMissingSettings(); - SourceSerialisation.Serialize(objectValue, objectValue.GetType(), writer, settings); + SourceSerialization.Serialize(objectValue, objectValue.GetType(), writer, settings); } else if (value.Kind == FieldValue.ValueKind.Null) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValues.cs b/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValues.cs index 7431de9cf2a..cf2ef28ec16 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValues.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Fields/FieldValues.cs @@ -8,6 +8,7 @@ using System.Linq.Expressions; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch; @@ -98,12 +99,12 @@ private TValue[] FieldArray(string field) internal sealed class FieldValuesConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public FieldValuesConverter(IElasticsearchClientSettings settings) => _settings = settings; + private IElasticsearchClientSettings _settings; public override FieldValues? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { + InitializeSettings(options); + if (reader.TokenType != JsonTokenType.StartObject) { return null; @@ -126,4 +127,15 @@ internal sealed class FieldValuesConverter : JsonConverter } public override void Write(Utf8JsonWriter writer, FieldValues value, JsonSerializerOptions options) => throw new NotImplementedException(); + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 1406e7fcaea..131f00f8704 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -5,17 +5,20 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; internal sealed class FieldConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; + private IElasticsearchClientSettings _settings; - public FieldConverter(IElasticsearchClientSettings settings) => _settings = settings; - - public override void WriteAsPropertyName(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) => writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + public override void WriteAsPropertyName(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) + { + InitializeSettings(options); + writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + } public override Field ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.GetString(); @@ -72,6 +75,8 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) { + InitializeSettings(options); + if (value is null) { writer.WriteNullValue(); @@ -94,4 +99,15 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt writer.WriteEndObject(); } } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdConverter.cs index d723880259e..4e4781092d8 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdConverter.cs @@ -5,17 +5,20 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; internal sealed class IdConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; + private IElasticsearchClientSettings? _settings; - public IdConverter(IElasticsearchClientSettings settings) => _settings = settings; - - public override void WriteAsPropertyName(Utf8JsonWriter writer, Id value, JsonSerializerOptions options) => writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + public override void WriteAsPropertyName(Utf8JsonWriter writer, Id value, JsonSerializerOptions options) + { + InitializeSettings(options); + writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + } public override Id ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.GetString(); @@ -34,6 +37,7 @@ public override void Write(Utf8JsonWriter writer, Id value, JsonSerializerOption if (value.Document is not null) { + InitializeSettings(options); var documentId = _settings.Inferrer.Id(value.Document.GetType(), value.Document); writer.WriteStringValue(documentId); } @@ -46,4 +50,15 @@ public override void Write(Utf8JsonWriter writer, Id value, JsonSerializerOption writer.WriteStringValue(value.StringValue); } } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs index 7bf874043da..05310377a8d 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs @@ -87,10 +87,6 @@ public override int GetHashCode() internal sealed class IdsConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public IdsConverter(IElasticsearchClientSettings settings) => _settings = settings; - public override Ids? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType != JsonTokenType.StartArray) diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexName.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexName.cs index 073c2974bd1..9109432ffa2 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexName.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexName.cs @@ -4,6 +4,7 @@ using System; using System.Diagnostics; +using System.Text.Json.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; @@ -11,6 +12,7 @@ namespace Elastic.Clients.Elasticsearch; /// /// Represents the name of an index, which may be inferred from a . /// +[JsonConverter(typeof(IndexNameConverter))] [DebuggerDisplay("{DebugDisplay,nq}")] public class IndexName : IEquatable, IUrlParameter { @@ -48,7 +50,7 @@ private IndexName(string index, Type type, string cluster = null) string IUrlParameter.GetString(ITransportConfiguration settings) { if (settings is not IElasticsearchClientSettings elasticsearchClientSettings) - throw new Exception("Tried to pass index name on querystring but it could not be resolved because no Elastic.Clients.Elasticsearch settings are available."); + throw new Exception("Tried to pass index name on query string but it could not be resolved because no Elastic.Clients.Elasticsearch settings are available."); return elasticsearchClientSettings.Inferrer.IndexName(this); } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexNameConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexNameConverter.cs index 1c083c60a77..675f04d48a5 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexNameConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/IndexName/IndexNameConverter.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; @@ -12,13 +13,15 @@ namespace Elastic.Clients.Elasticsearch; /// /// Converts an to and from its JSON representation. /// -internal class IndexNameConverter : JsonConverter +internal class IndexNameConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; + private IElasticsearchClientSettings _settings; - public IndexNameConverter(IElasticsearchClientSettings settings) => _settings = settings; - - public override void WriteAsPropertyName(Utf8JsonWriter writer, IndexName value, JsonSerializerOptions options) => writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + public override void WriteAsPropertyName(Utf8JsonWriter writer, IndexName value, JsonSerializerOptions options) + { + InitializeSettings(options); + writer.WritePropertyName(((IUrlParameter)value).GetString(_settings)); + } public override IndexName ReadAsPropertyName(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.GetString(); @@ -36,6 +39,8 @@ internal class IndexNameConverter : JsonConverter public override void Write(Utf8JsonWriter writer, IndexName? value, JsonSerializerOptions options) { + InitializeSettings(options); + if (value is null) { writer.WriteNullValue(); @@ -44,4 +49,15 @@ public override void Write(Utf8JsonWriter writer, IndexName? value, JsonSerializ writer.WriteStringValue(_settings.Inferrer.IndexName(value)); } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Indices/Indices.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Indices/Indices.cs index 74050207b1e..8134c97b8ba 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Indices/Indices.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Indices/Indices.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; @@ -191,9 +192,7 @@ public override int GetHashCode() internal sealed class IndicesJsonConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public IndicesJsonConverter(IElasticsearchClientSettings settings) => _settings = settings; + private IElasticsearchClientSettings _settings; public override Indices? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { @@ -219,6 +218,8 @@ internal sealed class IndicesJsonConverter : JsonConverter public override void Write(Utf8JsonWriter writer, Indices value, JsonSerializerOptions options) { + InitializeSettings(options); + if (value == null) { writer.WriteNullValue(); @@ -227,4 +228,15 @@ public override void Write(Utf8JsonWriter writer, Indices value, JsonSerializerO writer.WriteStringValue(((IUrlParameter)value).GetString(_settings)); } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldConverter.cs index a389b788388..7aff28193fd 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldConverter.cs @@ -6,14 +6,14 @@ using System.Text.Json.Serialization; using System.Text.Json; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Serialization; +using System.Runtime; namespace Elastic.Clients.Elasticsearch; internal sealed class JoinFieldConverter : JsonConverter { - private readonly IElasticsearchClientSettings _elasticsearchClientSettings; - - public JoinFieldConverter(IElasticsearchClientSettings elasticsearchClientSettings) => _elasticsearchClientSettings = elasticsearchClientSettings; + private IElasticsearchClientSettings _settings; public override JoinField? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { @@ -67,14 +67,26 @@ public override void Write(Utf8JsonWriter writer, JoinField value, JsonSerialize break; case 1: + InitializeSettings(options); writer.WriteStartObject(); writer.WritePropertyName("name"); JsonSerializer.Serialize(writer, value.ChildOption.Name, options); writer.WritePropertyName("parent"); - var id = (value.ChildOption.ParentId as IUrlParameter)?.GetString(_elasticsearchClientSettings); + var id = (value.ChildOption.ParentId as IUrlParameter)?.GetString(_settings); writer.WriteStringValue(id); writer.WriteEndObject(); break; } } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldRouting/RoutingConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldRouting/RoutingConverter.cs index 1ee6b32718c..1691211f273 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldRouting/RoutingConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/JoinFieldRouting/RoutingConverter.cs @@ -5,14 +5,13 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch; internal sealed class RoutingConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public RoutingConverter(IElasticsearchClientSettings settings) => _settings = settings; + private IElasticsearchClientSettings _settings; public override Routing? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => reader.TokenType == JsonTokenType.Number @@ -29,6 +28,8 @@ public override void Write(Utf8JsonWriter writer, Routing value, JsonSerializerO if (value.Document is not null) { + InitializeSettings(options); + var documentId = _settings.Inferrer.Routing(value.Document.GetType(), value.Document); if (documentId is null) @@ -42,6 +43,7 @@ public override void Write(Utf8JsonWriter writer, Routing value, JsonSerializerO else if (value.DocumentGetter is not null) { var doc = value.DocumentGetter(); + InitializeSettings(options); var documentId = _settings.Inferrer.Routing(doc.GetType(), doc); writer.WriteStringValue(documentId); } @@ -54,4 +56,15 @@ public override void Write(Utf8JsonWriter writer, Routing value, JsonSerializerO writer.WriteStringValue(value.StringValue); } } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/RelationName/RelationName.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/RelationName/RelationName.cs index 8a9cdb31dd6..7808bed02b4 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/RelationName/RelationName.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/RelationName/RelationName.cs @@ -6,6 +6,7 @@ using Elastic.Transport; using System.Text.Json.Serialization; using System.Text.Json; +using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch; @@ -80,9 +81,7 @@ public bool EqualsMarker(RelationName other) internal sealed class RelationNameConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public RelationNameConverter(IElasticsearchClientSettings settings) => _settings = settings; + private IElasticsearchClientSettings? _settings; public override RelationName? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { @@ -103,7 +102,19 @@ public override void Write(Utf8JsonWriter writer, RelationName value, JsonSerial return; } + InitializeSettings(options); var relationName = _settings.Inferrer.RelationName(value); writer.WriteStringValue(relationName); } + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/LazyJson.cs b/src/Elastic.Clients.Elasticsearch/Core/LazyJson.cs index a09bd9c56bd..6a231c9a501 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/LazyJson.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/LazyJson.cs @@ -5,6 +5,7 @@ using System; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch; @@ -41,12 +42,12 @@ internal LazyJson(byte[] bytes, IElasticsearchClientSettings settings) internal sealed class LazyJsonConverter : JsonConverter { - private readonly IElasticsearchClientSettings _settings; - - public LazyJsonConverter(IElasticsearchClientSettings settings) => _settings = settings; + private IElasticsearchClientSettings _settings; public override LazyJson Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { + InitializeSettings(options); + using var jsonDoc = JsonSerializer.Deserialize(ref reader); using var stream = _settings.MemoryStreamFactory.Create(); @@ -58,4 +59,15 @@ public override LazyJson Read(ref Utf8JsonReader reader, Type typeToConvert, Jso } public override void Write(Utf8JsonWriter writer, LazyJson value, JsonSerializerOptions options) => throw new NotImplementedException("We only ever expect to deserialize LazyJson on responses."); + + private void InitializeSettings(JsonSerializerOptions options) + { + if (_settings is null) + { + if (!options.TryGetClientSettings(out var settings)) + ThrowHelper.ThrowJsonExceptionForMissingSettings(); + + _settings = settings; + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/DefaultRequestResponseSerializer.cs b/src/Elastic.Clients.Elasticsearch/Serialization/DefaultRequestResponseSerializer.cs index ae1b1e21400..1f3a4771c3d 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/DefaultRequestResponseSerializer.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/DefaultRequestResponseSerializer.cs @@ -7,58 +7,44 @@ using System.Text.Json.Serialization; using System.Threading; using System.Threading.Tasks; -using Elastic.Clients.Elasticsearch.Aggregations; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch.Serialization; /// -/// The built in internal serializer that the high level client Elastic.Clients.Elasticsearch uses. +/// The built in internal serializer that the uses to serialize +/// built in types. /// internal class DefaultRequestResponseSerializer : SystemTextJsonSerializer { - private readonly IElasticsearchClientSettings _settings; + private readonly JsonSerializerOptions _jsonSerializerOptions; - public DefaultRequestResponseSerializer(IElasticsearchClientSettings settings) + public DefaultRequestResponseSerializer(IElasticsearchClientSettings settings) : base(settings) { - Options = new JsonSerializerOptions + _jsonSerializerOptions = new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, IncludeFields = true, Converters = { new KeyValuePairConverterFactory(settings), - new SourceConverterFactory(settings), - new CalendarIntervalConverter(), - new IndexNameConverter(settings), new ObjectToInferredTypesConverter(), - new IdConverter(settings), - new FieldConverter(settings), - new FieldValuesConverter(settings), - new LazyJsonConverter(settings), - new RelationNameConverter(settings), - new JoinFieldConverter(settings), + new SourceConverterFactory(settings), new CustomJsonWriterConverterFactory(settings), - new RoutingConverter(settings), new SelfSerializableConverterFactory(settings), new SelfDeserializableConverterFactory(settings), new SelfTwoWaySerializableConverterFactory(settings), - new IndicesJsonConverter(settings), - new IdsConverter(settings), + new FieldValuesConverter(), // explicitly registered before IsADictionaryConverterFactory as we want this specialised converter to match new IsADictionaryConverterFactory(), - //new ResolvableReadonlyDictionaryConverterFactory(settings), new ResponseItemConverterFactory(), - new UnionConverter(), - new ExtraSerializationData(settings), - new DictionaryResponseConverterFactory(settings) + new DictionaryResponseConverterFactory(settings), + new UnionConverter() }, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals }; - ElasticsearchClient.SettingsTable.Add(Options, settings); - - _settings = settings; + Initialize(); } public override void Serialize(T data, Stream writableStream, @@ -66,7 +52,7 @@ public DefaultRequestResponseSerializer(IElasticsearchClientSettings settings) { if (data is IStreamSerializable streamSerializable) { - streamSerializable.Serialize(writableStream, _settings, formatting); + streamSerializable.Serialize(writableStream, Settings, SerializationFormatting.None); return; } @@ -79,9 +65,11 @@ public DefaultRequestResponseSerializer(IElasticsearchClientSettings settings) { if (data is IStreamSerializable streamSerializable) { - return streamSerializable.SerializeAsync(stream, _settings, formatting); + return streamSerializable.SerializeAsync(stream, Settings, SerializationFormatting.None); } return base.SerializeAsync(data, stream, formatting, cancellationToken); } + + protected override JsonSerializerOptions CreateJsonSerializerOptions() => _jsonSerializerOptions; } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/DefaultSourceSerializer.cs b/src/Elastic.Clients.Elasticsearch/Serialization/DefaultSourceSerializer.cs index baa1a7092f7..32fb91a675f 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/DefaultSourceSerializer.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/DefaultSourceSerializer.cs @@ -2,29 +2,97 @@ // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; using System.Text.Json; using System.Text.Json.Serialization; namespace Elastic.Clients.Elasticsearch.Serialization; -internal class DefaultSourceSerializer : SystemTextJsonSerializer +/// +/// The built in internal serializer that the uses to serialize +/// source document types. +/// +public class DefaultSourceSerializer : SystemTextJsonSerializer { - public DefaultSourceSerializer(IElasticsearchClientSettings settings, JsonSerializerOptions? options = null) => - Options = options ?? new JsonSerializerOptions + /// + /// Returns an array of the built in s that are used registered with the + /// source serializer by default. + /// + public static JsonConverter[] DefaultBuiltInConverters => new JsonConverter[] + { + new JsonStringEnumConverter() + }; + + private readonly JsonSerializerOptions _jsonSerializerOptions; + + internal DefaultSourceSerializer(IElasticsearchClientSettings settings) : base(settings) + { + _jsonSerializerOptions = CreateDefaultJsonSerializerOptions(); + + Initialize(); + } + + /// + /// Constructs a new instance that accepts an that can + /// be provided to customize the default . + /// + /// An instance to which this + /// serializers will be linked. + /// An to customize the configuration of the + /// default . + public DefaultSourceSerializer(IElasticsearchClientSettings settings, Action configureOptions) : base(settings) + { + var options = CreateDefaultJsonSerializerOptions(); + + configureOptions?.Invoke(options); + + _jsonSerializerOptions = options; + + Initialize(); + } + + /// + /// A factory method which returns a new instance of configured with the + /// default configuration applied to for serialization by the . + /// + /// + /// + public static JsonSerializerOptions CreateDefaultJsonSerializerOptions(bool includeDefaultConverters = true) + { + var options = new JsonSerializerOptions() { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, - Converters = - { - new JsonStringEnumConverter(), - new UnionConverter(), - new IdConverter(settings), - new RelationNameConverter(settings), - new RoutingConverter(settings), - new JoinFieldConverter(settings), - new LazyJsonConverter(settings), - new IdsConverter(settings) - }, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.AllowNamedFloatingPointLiterals }; + + if (includeDefaultConverters) + { + foreach (var converter in DefaultBuiltInConverters) + { + options.Converters.Add(converter); + } + } + + return options; + } + + /// + /// A helper method which applies the default converters for the built in source serializer to an + /// existing instance. + /// + /// The instance to which to append the default + /// built in s. + /// The instance that was provided as an argument. + public static JsonSerializerOptions AddDefaultConverters(JsonSerializerOptions options) + { + foreach (var converter in DefaultBuiltInConverters) + { + options.Converters.Add(converter); + } + + return options; + } + + protected sealed override JsonSerializerOptions CreateJsonSerializerOptions() => _jsonSerializerOptions; } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/ExtraSerializationData.cs b/src/Elastic.Clients.Elasticsearch/Serialization/ExtraSerializationData.cs deleted file mode 100644 index 44259e2e77a..00000000000 --- a/src/Elastic.Clients.Elasticsearch/Serialization/ExtraSerializationData.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Licensed to Elasticsearch B.V under one or more agreements. -// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. -// See the LICENSE file in the project root for more information. - -using System; -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Elastic.Clients.Elasticsearch.Serialization; - -/// -/// This actually does not ever get used as a converter. It's just an ugly hack to provide a way to -/// access out settings in generated converters without requiring a mechanism to conditionally add them. -/// -internal sealed class ExtraSerializationData : JsonConverter -{ - public ExtraSerializationData(IElasticsearchClientSettings settings) => Settings = settings; - - public IElasticsearchClientSettings Settings { get; } - - public override ExtraSerializationData? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => throw new NotImplementedException(); - public override void Write(Utf8JsonWriter writer, ExtraSerializationData value, JsonSerializerOptions options) => throw new NotImplementedException(); -} diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/IStreamSerializable.cs b/src/Elastic.Clients.Elasticsearch/Serialization/IStreamSerializable.cs index 048e6506041..8bd24041108 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/IStreamSerializable.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/IStreamSerializable.cs @@ -9,7 +9,7 @@ namespace Elastic.Clients.Elasticsearch.Serialization; /// -/// Used to mark types which expect to directly serialise into a stream. This supports non-json compliant output such as NDJSON. +/// Used to mark types which expect to directly serialize into a stream. This supports non-json compliant output such as NDJSON. /// internal interface IStreamSerializable { diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/JsonSerializerOptionsExtensions.cs b/src/Elastic.Clients.Elasticsearch/Serialization/JsonSerializerOptionsExtensions.cs index 7314769f00d..3a8742c1962 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/JsonSerializerOptionsExtensions.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/JsonSerializerOptionsExtensions.cs @@ -8,6 +8,6 @@ namespace Elastic.Clients.Elasticsearch.Serialization; internal static class JsonSerializerOptionsExtensions { - public static bool TryGetClientSettings(this JsonSerializerOptions options, out IElasticsearchClientSettings settings) => + internal static bool TryGetClientSettings(this JsonSerializerOptions options, out IElasticsearchClientSettings settings) => ElasticsearchClient.SettingsTable.TryGetValue(options, out settings); } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/QueryConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/QueryConverter.cs new file mode 100644 index 00000000000..2210f6ad23d --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/Serialization/QueryConverter.cs @@ -0,0 +1,15 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System; + +namespace Elastic.Clients.Elasticsearch.QueryDsl; + +// This converter is generated for the Query container type. We add the CanConvert override here (for now) +// as the Query type may be used in source POCOs. + +internal sealed partial class QueryConverter +{ + public override bool CanConvert(Type typeToConvert) => typeToConvert == typeof(Query); +} diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/SourceConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/SourceConverter.cs index dc4172d270b..ae9e007ed6e 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/SourceConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/SourceConverter.cs @@ -16,8 +16,8 @@ internal sealed class SourceConverter : JsonConverter> public override SourceMarker? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) => new() { - Source = SourceSerialisation.Deserialize(ref reader, _settings) + Source = SourceSerialization.Deserialize(ref reader, _settings) }; - public override void Write(Utf8JsonWriter writer, SourceMarker value, JsonSerializerOptions options) => SourceSerialisation.Serialize(value.Source, writer, _settings); + public override void Write(Utf8JsonWriter writer, SourceMarker value, JsonSerializerOptions options) => SourceSerialization.Serialize(value.Source, writer, _settings); } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialisation.cs b/src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialization.cs similarity index 93% rename from src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialisation.cs rename to src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialization.cs index d5045dca5bf..c034c941857 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialisation.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/SourceSerialization.cs @@ -5,15 +5,14 @@ using System; using System.IO; using System.Text.Json; -using System.Text.Json.Serialization; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch.Serialization; /// -/// May be used by requests that need to serialise only part of their source rather than the request object itself. +/// May be used by requests that need to serialize only part of their source rather than the request object itself. /// -internal static class SourceSerialisation +internal static class SourceSerialization { public static void SerializeParams(T toSerialize, Utf8JsonWriter writer, IElasticsearchClientSettings settings) { @@ -49,7 +48,7 @@ public static void Serialize(T toSerialize, Utf8JsonWriter writer, Serializer { if (sourceSerializer is DefaultSourceSerializer defaultSerializer) { - // When the serializer is our own, which uses STJ we can avoid unneccesary allocations and serialise straight into the writer + // When the serializer is our own, which uses STJ we can avoid unnecessary allocations and serialize straight into the writer // In most cases this is not the case as it's wrapped in the DiagnosticsSerializerProxy // Ideally, we'd short-circuit here if we know there are no listeners or avoid wrapping the default source serializer. JsonSerializer.Serialize(writer, toSerialize, defaultSerializer.Options); @@ -75,7 +74,7 @@ public static void Serialize(object toSerialize, Type type, Utf8JsonWriter write { if (sourceSerializer is DefaultSourceSerializer defaultSerializer) { - // When the serializer is our own, which uses STJ we can avoid unneccesary allocations and serialise straight into the writer + // When the serializer is our own, which uses STJ we can avoid unnecessary allocations and serialize straight into the writer // In most cases this is not the case as it's wrapped in the DiagnosticsSerializerProxy // Ideally, we'd short-circuit here if we know there are no listeners or avoid wrapping the default source serializer. JsonSerializer.Serialize(writer, toSerialize, type, defaultSerializer.Options); @@ -103,7 +102,7 @@ public static T Deserialize(ref Utf8JsonReader reader, IElasticsearchClientSe if (sourceSerializer is DefaultSourceSerializer defaultSerializer) { - // When the serializer is our own which uses STJ we can avoid unneccesary allocations and serialise straight into the writer + // When the serializer is our own which uses STJ we can avoid unnecessary allocations and serialize straight into the writer return JsonSerializer.Deserialize(ref reader, defaultSerializer.Options); } else diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/SystemTextJsonSerializer.cs b/src/Elastic.Clients.Elasticsearch/Serialization/SystemTextJsonSerializer.cs index 35f5e94f0db..b6c4ec03bb1 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/SystemTextJsonSerializer.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/SystemTextJsonSerializer.cs @@ -11,45 +11,151 @@ namespace Elastic.Clients.Elasticsearch.Serialization; +/// +/// An abstract implementation of the transport which serializes +/// using the Microsoft System.Text.Json library. +/// +/// This serializer is aware and able to register its +/// in such a way that built in converters for types defined in +/// Elastic.Clients.Elasticsearch can access those settings during serialization. +/// +/// public abstract class SystemTextJsonSerializer : Serializer { - public JsonSerializerOptions Options { get; init; } + private bool _initialized; + /// + /// Initializes a new instance of the class, linked to an + /// instance of . + /// + /// An instance to which this + /// serializers will be linked. + /// is null + public SystemTextJsonSerializer(IElasticsearchClientSettings settings) + { + if (settings is null) + throw new ArgumentNullException(nameof(settings)); + + Settings = settings; + } + + internal JsonSerializerOptions? Options { get; private set; } + + internal JsonSerializerOptions? IndentedOptions { get; private set; } + + /// + /// Provides access to the instance to which this + /// serializers are be linked. + /// + protected IElasticsearchClientSettings Settings { get; } + + /// + /// A factory method that can create an instance of that will + /// be used when serializing. + /// + /// + protected abstract JsonSerializerOptions CreateJsonSerializerOptions(); + + /// public override T Deserialize(Stream stream) { + Initialize(); + if (TryReturnDefault(stream, out T deserialize)) return deserialize; return JsonSerializer.Deserialize(stream, Options); } + /// public override object Deserialize(Type type, Stream stream) { + Initialize(); + if (TryReturnDefault(stream, out object deserialize)) return deserialize; return JsonSerializer.Deserialize(stream, type, Options); } - private static bool TryReturnDefault(Stream stream, out T deserialize) + /// + public override ValueTask DeserializeAsync(Stream stream, CancellationToken cancellationToken = default) { - deserialize = default; - return stream == null || stream == Stream.Null || (stream.CanSeek && stream.Length == 0); + Initialize(); + return JsonSerializer.DeserializeAsync(stream, Options, cancellationToken); } - public override ValueTask DeserializeAsync(Stream stream, CancellationToken cancellationToken = default) => JsonSerializer.DeserializeAsync(stream, Options, cancellationToken); - - public override ValueTask DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default) => - JsonSerializer.DeserializeAsync(stream, type, Options, cancellationToken); + /// + public override ValueTask DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default) + { + Initialize(); + return JsonSerializer.DeserializeAsync(stream, type, Options, cancellationToken); + } + /// public override void Serialize(T data, Stream writableStream, SerializationFormatting formatting = SerializationFormatting.None) { + Initialize(); using var writer = new Utf8JsonWriter(writableStream); - JsonSerializer.Serialize(writer, data, typeof(T), Options); + JsonSerializer.Serialize(writer, data, typeof(T), formatting == SerializationFormatting.Indented && IndentedOptions is not null ? IndentedOptions : Options); } + /// public override Task SerializeAsync(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None, - CancellationToken cancellationToken = default) => JsonSerializer.SerializeAsync(stream, data, Options, cancellationToken); + CancellationToken cancellationToken = default) + { + Initialize(); + return JsonSerializer.SerializeAsync(stream, data, formatting == SerializationFormatting.Indented && IndentedOptions is not null ? IndentedOptions : Options, cancellationToken); + } + + private static bool TryReturnDefault(Stream stream, out T deserialize) + { + deserialize = default; + return stream == null || stream == Stream.Null || (stream.CanSeek && stream.Length == 0); + } + + /// + /// Initializes a serializer instance such that its + /// are populated and linked to the . + /// + protected void Initialize() + { + if (_initialized) + return; + + var options = CreateJsonSerializerOptions(); + + if (options is null) + { + Options = new JsonSerializerOptions(); + IndentedOptions = new JsonSerializerOptions { WriteIndented = true }; + } + else + { + Options = options; + IndentedOptions = new JsonSerializerOptions(options) + { + WriteIndented = true + }; + } + + LinkOptionsAndSettings(); + + _initialized = true; + } + + private void LinkOptionsAndSettings() + { + if (!ElasticsearchClient.SettingsTable.TryGetValue(Options, out _)) + { + ElasticsearchClient.SettingsTable.Add(Options, Settings); + } + + if (!ElasticsearchClient.SettingsTable.TryGetValue(IndentedOptions, out _)) + { + ElasticsearchClient.SettingsTable.Add(IndentedOptions, Settings); + } + } } diff --git a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkOperationsCollection.cs b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkOperationsCollection.cs index 8a9314e6190..80cc7e01cdb 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkOperationsCollection.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkOperationsCollection.cs @@ -235,9 +235,12 @@ public void Serialize(Stream stream, IElasticsearchClientSettings settings, Seri foreach (var op in this) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } - serializable.Serialize(stream, settings, formatting); + serializable.Serialize(stream, settings, SerializationFormatting.None); stream.WriteByte((byte)'\n'); } } @@ -247,9 +250,12 @@ public async Task SerializeAsync(Stream stream, IElasticsearchClientSettings set foreach (var op in this) { if (op is not IStreamSerializable serializable) - throw new InvalidOperationException(""); + { + ThrowHelper.ThrowInvalidOperationForBulkWhenNotIStreamSerializable(); + return; + } - await serializable.SerializeAsync(stream, settings, formatting).ConfigureAwait(false); + await serializable.SerializeAsync(stream, settings, SerializationFormatting.None).ConfigureAwait(false); stream.WriteByte((byte)'\n'); } } diff --git a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateBody.cs b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateBody.cs index 72cabc973d8..3978d017306 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateBody.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateBody.cs @@ -57,7 +57,7 @@ protected override void SerializeProperties(Utf8JsonWriter writer, JsonSerialize if (PartialUpdate is not null) { writer.WritePropertyName("doc"); - SourceSerialisation.Serialize(PartialUpdate, writer, settings.SourceSerializer); + SourceSerialization.Serialize(PartialUpdate, writer, settings.SourceSerializer); } if (Script is not null) @@ -81,7 +81,7 @@ protected override void SerializeProperties(Utf8JsonWriter writer, JsonSerialize if (Upsert is not null) { writer.WritePropertyName("upsert"); - SourceSerialisation.Serialize(Upsert, writer, settings.SourceSerializer); + SourceSerialization.Serialize(Upsert, writer, settings.SourceSerializer); } if (Source is not null) diff --git a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateOperationDescriptor.cs b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateOperationDescriptor.cs index d4cb1721287..d46235860ec 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateOperationDescriptor.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/BulkUpdateOperationDescriptor.cs @@ -155,7 +155,7 @@ private void WriteBody(IElasticsearchClientSettings settings, Utf8JsonWriter wri if (_document is not null) { writer.WritePropertyName("doc"); - SourceSerialisation.Serialize(_document, writer, settings.SourceSerializer); + SourceSerialization.Serialize(_document, writer, settings.SourceSerializer); } if (_scriptedUpsert.HasValue) @@ -173,7 +173,7 @@ private void WriteBody(IElasticsearchClientSettings settings, Utf8JsonWriter wri if (_upsert is not null) { writer.WritePropertyName("upsert"); - SourceSerialisation.Serialize(_upsert, writer, settings.SourceSerializer); + SourceSerialization.Serialize(_upsert, writer, settings.SourceSerializer); } if (_source is not null) diff --git a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/PartialBulkUpdateBody.cs b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/PartialBulkUpdateBody.cs index 2d8b41ab60f..76eebb08e2b 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/PartialBulkUpdateBody.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/PartialBulkUpdateBody.cs @@ -24,7 +24,7 @@ protected override void SerializeProperties(Utf8JsonWriter writer, JsonSerialize if (PartialUpdate is not null) { writer.WritePropertyName("doc"); - SourceSerialisation.Serialize(PartialUpdate, writer, settings.SourceSerializer); + SourceSerialization.Serialize(PartialUpdate, writer, settings.SourceSerializer); } } } diff --git a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/ScriptedBulkUpdateBody.cs b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/ScriptedBulkUpdateBody.cs index 2233aa69d07..3da68f1113c 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/ScriptedBulkUpdateBody.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Core/Bulk/ScriptedBulkUpdateBody.cs @@ -36,7 +36,7 @@ protected override void SerializeProperties(Utf8JsonWriter writer, JsonSerialize if (Upsert is not null) { writer.WritePropertyName("upsert"); - SourceSerialisation.Serialize(Upsert, writer, settings.SourceSerializer); + SourceSerialization.Serialize(Upsert, writer, settings.SourceSerializer); } } } diff --git a/src/Elastic.Clients.Elasticsearch/Types/Mapping/Properties.cs b/src/Elastic.Clients.Elasticsearch/Types/Mapping/Properties.cs index 5a96b4c05e1..6b0ebb9d460 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Mapping/Properties.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Mapping/Properties.cs @@ -27,7 +27,7 @@ internal sealed class PropertiesConverter : JsonConverter public override Properties? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (!options.TryGetClientSettings(out var settings)) - throw new JsonException("Unable to retrive client settings during properties deserialization."); + ThrowHelper.ThrowJsonExceptionForMissingSettings(); if (reader.TokenType != JsonTokenType.StartObject) throw new JsonException("Expected start object token."); @@ -51,7 +51,7 @@ internal sealed class PropertiesConverter : JsonConverter public override void Write(Utf8JsonWriter writer, Properties value, JsonSerializerOptions options) { if (!options.TryGetClientSettings(out var settings)) - throw new JsonException("Unable to retrive client settings during properties serialization."); + ThrowHelper.ThrowJsonExceptionForMissingSettings(); if (value is null) { diff --git a/src/Elastic.Clients.Elasticsearch/Types/Scripting/InlineScript.cs b/src/Elastic.Clients.Elasticsearch/Types/Scripting/InlineScript.cs index 60600f755c5..93d20e6cac9 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/Scripting/InlineScript.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/Scripting/InlineScript.cs @@ -40,7 +40,7 @@ void ISelfTwoWaySerializable.Serialize(Utf8JsonWriter writer, JsonSerializerOpti if (Params is not null) { writer.WritePropertyName("params"); - SourceSerialisation.SerializeParams(Params, writer, settings); + SourceSerialization.SerializeParams(Params, writer, settings); } writer.WriteEndObject(); @@ -89,7 +89,7 @@ void ISelfTwoWaySerializable.Deserialize(ref Utf8JsonReader reader, JsonSerializ if (reader.ValueTextEquals("params")) { - var value = SourceSerialisation.DeserializeParams>(ref reader, settings); + var value = SourceSerialization.DeserializeParams>(ref reader, settings); if (value is not null) { Params = value; diff --git a/src/Elastic.Clients.Elasticsearch/Types/SortOptions.cs b/src/Elastic.Clients.Elasticsearch/Types/SortOptions.cs index 57dfd5e8a7d..9fa7e91b1a2 100644 --- a/src/Elastic.Clients.Elasticsearch/Types/SortOptions.cs +++ b/src/Elastic.Clients.Elasticsearch/Types/SortOptions.cs @@ -73,7 +73,7 @@ public override SortOptions Read(ref Utf8JsonReader reader, Type typeToConvert, public override void Write(Utf8JsonWriter writer, SortOptions value, JsonSerializerOptions options) { if (!options.TryGetClientSettings(out var settings)) - throw new JsonException("Unable to retrieve IElasticsearchClientSettings."); + ThrowHelper.ThrowJsonExceptionForMissingSettings(); string? fieldName = null; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/AsyncSearch/SubmitAsyncSearchRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/AsyncSearch/SubmitAsyncSearchRequest.g.cs index 5f2a1d82102..466898be79f 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/AsyncSearch/SubmitAsyncSearchRequest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/AsyncSearch/SubmitAsyncSearchRequest.g.cs @@ -126,7 +126,7 @@ public sealed class SubmitAsyncSearchRequestParameters : RequestParameters public string? QueryLuceneSyntax { get => Q("q"); set => Q("q", value); } } -internal sealed class SubmitAsyncSearchRequestConverter : JsonConverter +internal sealed partial class SubmitAsyncSearchRequestConverter : JsonConverter { public override SubmitAsyncSearchRequest Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CreateRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CreateRequest.g.cs index e956a817c7c..9c564a288c5 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/CreateRequest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/CreateRequest.g.cs @@ -130,6 +130,6 @@ public CreateRequestDescriptor Index(Elastic.Clients.Elasticsearch.In protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) { - SourceSerialisation.Serialize(DocumentValue, writer, settings.SourceSerializer); + SourceSerialization.Serialize(DocumentValue, writer, settings.SourceSerializer); } } \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexRequest.g.cs index da78733858c..fad1add5d1c 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexRequest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/IndexRequest.g.cs @@ -166,6 +166,6 @@ public IndexRequestDescriptor Index(Elastic.Clients.Elasticsearch.Ind protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings) { - SourceSerialisation.Serialize(DocumentValue, writer, settings.SourceSerializer); + SourceSerialization.Serialize(DocumentValue, writer, settings.SourceSerializer); } } \ No newline at end of file diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/SearchRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/SearchRequest.g.cs index 06e36e2517d..3b71a89e3de 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/SearchRequest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/SearchRequest.g.cs @@ -117,7 +117,7 @@ public sealed class SearchRequestParameters : RequestParameters public string? QueryLuceneSyntax { get => Q("q"); set => Q("q", value); } } -internal sealed class SearchRequestConverter : JsonConverter +internal sealed partial class SearchRequestConverter : JsonConverter { public override SearchRequest Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Api/UpdateRequest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Api/UpdateRequest.g.cs index 10c7c6a84c0..fb189ce32eb 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Api/UpdateRequest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Api/UpdateRequest.g.cs @@ -260,7 +260,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o if (DocValue is not null) { writer.WritePropertyName("doc"); - SourceSerialisation.Serialize(DocValue, writer, settings); + SourceSerialization.Serialize(DocValue, writer, settings); } if (DocAsUpsertValue.HasValue) @@ -284,7 +284,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o if (UpsertValue is not null) { writer.WritePropertyName("upsert"); - SourceSerialisation.Serialize(UpsertValue, writer, settings); + SourceSerialization.Serialize(UpsertValue, writer, settings); } writer.WriteEndObject(); diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Aggregation.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Aggregation.g.cs index b7bc78d5e9a..f313f339c15 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Aggregation.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Aggregation.g.cs @@ -32,7 +32,7 @@ public sealed partial class Aggregation internal ISearchAggregation Variant { get; } } -internal sealed class AggregationConverter : JsonConverter +internal sealed partial class AggregationConverter : JsonConverter { public override Aggregation Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/InferenceConfig.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/InferenceConfig.g.cs index e5397bb818d..de209c6bb42 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/InferenceConfig.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/InferenceConfig.g.cs @@ -48,7 +48,7 @@ internal InferenceConfig(string variantName, object variant) public static InferenceConfig Regression(Elastic.Clients.Elasticsearch.Ml.RegressionInferenceOptions regressionInferenceOptions) => new InferenceConfig("regression", regressionInferenceOptions); } -internal sealed class InferenceConfigConverter : JsonConverter +internal sealed partial class InferenceConfigConverter : JsonConverter { public override InferenceConfig Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/FieldSuggester.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/FieldSuggester.g.cs index 1f89421b395..48f8880def1 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/FieldSuggester.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/FieldSuggester.g.cs @@ -57,7 +57,7 @@ internal FieldSuggester(string variantName, object variant) public string? Text { get; set; } } -internal sealed class FieldSuggesterConverter : JsonConverter +internal sealed partial class FieldSuggesterConverter : JsonConverter { public override FieldSuggester Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SmoothingModel.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SmoothingModel.g.cs index 8816b2e2439..49725467457 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SmoothingModel.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SmoothingModel.g.cs @@ -49,7 +49,7 @@ internal SmoothingModel(string variantName, object variant) public static SmoothingModel StupidBackoff(Elastic.Clients.Elasticsearch.Core.Search.StupidBackoffSmoothingModel stupidBackoffSmoothingModel) => new SmoothingModel("stupid_backoff", stupidBackoffSmoothingModel); } -internal sealed class SmoothingModelConverter : JsonConverter +internal sealed partial class SmoothingModelConverter : JsonConverter { public override SmoothingModel Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SourceFilter.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SourceFilter.g.cs index ae1b7dd82d9..7962bffdfe8 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SourceFilter.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/SourceFilter.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.Core.Search; -internal sealed class SourceFilterConverter : JsonConverter +internal sealed partial class SourceFilterConverter : JsonConverter { public override SourceFilter Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/Suggester.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/Suggester.g.cs index 6e11ab57373..8fe6b9a779f 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/Suggester.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Search/Suggester.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.Core.Search; -internal sealed class SuggesterConverter : JsonConverter +internal sealed partial class SuggesterConverter : JsonConverter { public override Suggester Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/ErrorCause.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/ErrorCause.g.cs index a894230812c..dd9a8a2e196 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/ErrorCause.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/ErrorCause.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch; -internal sealed class ErrorCauseConverter : JsonConverter +internal sealed partial class ErrorCauseConverter : JsonConverter { public override ErrorCause Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/IndexSettings.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/IndexSettings.g.cs index 577ee8c38d9..2ca1bec82cd 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/IndexSettings.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/IndexManagement/IndexSettings.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.IndexManagement; -internal sealed class IndexSettingsConverter : JsonConverter +internal sealed partial class IndexSettingsConverter : JsonConverter { public override IndexSettings Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigCreate.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigCreate.g.cs index 7c0f338e39e..8418446f2a1 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigCreate.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigCreate.g.cs @@ -55,7 +55,7 @@ internal InferenceConfigCreate(string variantName, object variant) public static InferenceConfigCreate ZeroShotClassification(Elastic.Clients.Elasticsearch.Ml.ZeroShotClassificationInferenceOptions zeroShotClassificationInferenceOptions) => new InferenceConfigCreate("zero_shot_classification", zeroShotClassificationInferenceOptions); } -internal sealed class InferenceConfigCreateConverter : JsonConverter +internal sealed partial class InferenceConfigCreateConverter : JsonConverter { public override InferenceConfigCreate Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigUpdate.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigUpdate.g.cs index 81c6903fe8f..a17f473097e 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigUpdate.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/InferenceConfigUpdate.g.cs @@ -55,7 +55,7 @@ internal InferenceConfigUpdate(string variantName, object variant) public static InferenceConfigUpdate ZeroShotClassification(Elastic.Clients.Elasticsearch.Ml.ZeroShotClassificationInferenceUpdateOptions zeroShotClassificationInferenceUpdateOptions) => new InferenceConfigUpdate("zero_shot_classification", zeroShotClassificationInferenceUpdateOptions); } -internal sealed class InferenceConfigUpdateConverter : JsonConverter +internal sealed partial class InferenceConfigUpdateConverter : JsonConverter { public override InferenceConfigUpdate Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/TokenizationConfig.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/TokenizationConfig.g.cs index ccfaad58084..ecbd06c1c97 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/TokenizationConfig.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Ml/TokenizationConfig.g.cs @@ -49,7 +49,7 @@ internal TokenizationConfig(string variantName, object variant) public static TokenizationConfig Roberta(Elastic.Clients.Elasticsearch.Ml.NlpRobertaTokenizationConfig nlpRobertaTokenizationConfig) => new TokenizationConfig("roberta", nlpRobertaTokenizationConfig); } -internal sealed class TokenizationConfigConverter : JsonConverter +internal sealed partial class TokenizationConfigConverter : JsonConverter { public override TokenizationConfig Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FunctionScore.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FunctionScore.g.cs index 76b62bf5564..c27d510c66f 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FunctionScore.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FunctionScore.g.cs @@ -54,7 +54,7 @@ internal FunctionScore(string variantName, object variant) public double? Weight { get; set; } } -internal sealed class FunctionScoreConverter : JsonConverter +internal sealed partial class FunctionScoreConverter : JsonConverter { public override FunctionScore Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FuzzyQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FuzzyQuery.g.cs index 71bf87e29a3..beefd808e28 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FuzzyQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/FuzzyQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class FuzzyQueryConverter : JsonConverter +internal sealed partial class FuzzyQueryConverter : JsonConverter { public override FuzzyQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Intervals.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Intervals.g.cs index 290af59dca3..4d7aee5a8e7 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Intervals.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Intervals.g.cs @@ -52,7 +52,7 @@ internal Intervals(string variantName, object variant) public static Intervals Wildcard(Elastic.Clients.Elasticsearch.QueryDsl.IntervalsWildcard intervalsWildcard) => new Intervals("wildcard", intervalsWildcard); } -internal sealed class IntervalsConverter : JsonConverter +internal sealed partial class IntervalsConverter : JsonConverter { public override Intervals Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsFilter.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsFilter.g.cs index fb17b05b9ed..23b0f297d38 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsFilter.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsFilter.g.cs @@ -45,7 +45,7 @@ internal IntervalsFilter(string variantName, object variant) internal string VariantName { get; } } -internal sealed class IntervalsFilterConverter : JsonConverter +internal sealed partial class IntervalsFilterConverter : JsonConverter { public override IntervalsFilter Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsQuery.g.cs index 50c2c4c4eea..2509cd8bd55 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/IntervalsQuery.g.cs @@ -65,7 +65,7 @@ internal IntervalsQuery(Field field, string variantName, object variant) public static implicit operator Query(IntervalsQuery intervalsQuery) => QueryDsl.Query.Intervals(intervalsQuery); } -internal sealed class IntervalsQueryConverter : JsonConverter +internal sealed partial class IntervalsQueryConverter : JsonConverter { public override IntervalsQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchBoolPrefixQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchBoolPrefixQuery.g.cs index 40d89fa1948..56e3cdd8403 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchBoolPrefixQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchBoolPrefixQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class MatchBoolPrefixQueryConverter : JsonConverter +internal sealed partial class MatchBoolPrefixQueryConverter : JsonConverter { public override MatchBoolPrefixQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhrasePrefixQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhrasePrefixQuery.g.cs index 1884e852687..f317da081cb 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhrasePrefixQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhrasePrefixQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class MatchPhrasePrefixQueryConverter : JsonConverter +internal sealed partial class MatchPhrasePrefixQueryConverter : JsonConverter { public override MatchPhrasePrefixQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhraseQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhraseQuery.g.cs index d483d6a403b..70a7ad833f6 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhraseQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchPhraseQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class MatchPhraseQueryConverter : JsonConverter +internal sealed partial class MatchPhraseQueryConverter : JsonConverter { public override MatchPhraseQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchQuery.g.cs index e6979f588a3..eafaa5242a1 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/MatchQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class MatchQueryConverter : JsonConverter +internal sealed partial class MatchQueryConverter : JsonConverter { public override MatchQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/PrefixQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/PrefixQuery.g.cs index 7891d9ede26..cae914f5aab 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/PrefixQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/PrefixQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class PrefixQueryConverter : JsonConverter +internal sealed partial class PrefixQueryConverter : JsonConverter { public override PrefixQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Query.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Query.g.cs index 913f8161667..10c8a64ff20 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Query.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Query.g.cs @@ -90,7 +90,7 @@ internal Query(string variantName, object variant) public static Query Wrapper(Elastic.Clients.Elasticsearch.QueryDsl.WrapperQuery wrapperQuery) => new Query("wrapper", wrapperQuery); } -internal sealed class QueryConverter : JsonConverter +internal sealed partial class QueryConverter : JsonConverter { public override Query Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/RegexpQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/RegexpQuery.g.cs index 5dc299d9400..4c6d1dbae04 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/RegexpQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/RegexpQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class RegexpQueryConverter : JsonConverter +internal sealed partial class RegexpQueryConverter : JsonConverter { public override RegexpQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanQuery.g.cs index a13c4fb4a60..9f113eeecc2 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanQuery.g.cs @@ -55,7 +55,7 @@ internal SpanQuery(string variantName, object variant) public static SpanQuery SpanWithin(Elastic.Clients.Elasticsearch.QueryDsl.SpanWithinQuery spanWithinQuery) => new SpanQuery("span_within", spanWithinQuery); } -internal sealed class SpanQueryConverter : JsonConverter +internal sealed partial class SpanQueryConverter : JsonConverter { public override SpanQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanTermQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanTermQuery.g.cs index 7b6132a7c5a..57c553400a0 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanTermQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/SpanTermQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class SpanTermQueryConverter : JsonConverter +internal sealed partial class SpanTermQueryConverter : JsonConverter { public override SpanTermQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermQuery.g.cs index a0236ce2470..42b1c3fa958 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class TermQueryConverter : JsonConverter +internal sealed partial class TermQueryConverter : JsonConverter { public override TermQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsQuery.g.cs index f7375e82676..0417f9e428c 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class TermsQueryConverter : JsonConverter +internal sealed partial class TermsQueryConverter : JsonConverter { public override TermsQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { @@ -65,7 +65,7 @@ public override void Write(Utf8JsonWriter writer, TermsQuery value, JsonSerializ { if (!options.TryGetClientSettings(out var settings)) { - throw new JsonException("Unable to retrive client settings for JsonSerializerOptions."); + ThrowHelper.ThrowJsonExceptionForMissingSettings(); } var propertyName = settings.Inferrer.Field(value.Field); diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsSetQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsSetQuery.g.cs index db0c9943c13..8367096d433 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsSetQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsSetQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class TermsSetQueryConverter : JsonConverter +internal sealed partial class TermsSetQueryConverter : JsonConverter { public override TermsSetQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/WildcardQuery.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/WildcardQuery.g.cs index b1f137890ff..549745d5710 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/WildcardQuery.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/WildcardQuery.g.cs @@ -25,7 +25,7 @@ #nullable restore namespace Elastic.Clients.Elasticsearch.QueryDsl; -internal sealed class WildcardQueryConverter : JsonConverter +internal sealed partial class WildcardQueryConverter : JsonConverter { public override WildcardQuery Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/TransformManagement/PivotGroupBy.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/TransformManagement/PivotGroupBy.g.cs index 851a5117b90..3bdd48d00f6 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/TransformManagement/PivotGroupBy.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/TransformManagement/PivotGroupBy.g.cs @@ -49,7 +49,7 @@ internal PivotGroupBy(string variantName, object variant) public static PivotGroupBy Terms(Elastic.Clients.Elasticsearch.Aggregations.TermsAggregation termsAggregation) => new PivotGroupBy("terms", termsAggregation); } -internal sealed class PivotGroupByConverter : JsonConverter +internal sealed partial class PivotGroupByConverter : JsonConverter { public override PivotGroupBy Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { diff --git a/tests/Tests.Configuration/tests.default.yaml b/tests/Tests.Configuration/tests.default.yaml index 625ff159ab8..c5d56e86ba0 100644 --- a/tests/Tests.Configuration/tests.default.yaml +++ b/tests/Tests.Configuration/tests.default.yaml @@ -8,7 +8,7 @@ mode: u # the elasticsearch version that should be started # Can be a snapshot version of sonatype or "latest" to get the latest snapshot of sonatype -elasticsearch_version: 8.5.3 +elasticsearch_version: latest-8 # cluster filter allows you to only run the integration tests of a particular cluster (cluster suffix not needed) # cluster_filter: # whether we want to forcefully reseed on the node, if you are starting the tests with a node already running diff --git a/tests/Tests/Documentation/.editorconfig b/tests/Tests/Documentation/.editorconfig new file mode 100644 index 00000000000..4ce8de103f6 --- /dev/null +++ b/tests/Tests/Documentation/.editorconfig @@ -0,0 +1,2 @@ +[*] +indent_style = space \ No newline at end of file diff --git a/tests/Tests/Documentation/ClientConcepts/Serialization/CustomSerializationTests.cs b/tests/Tests/Documentation/ClientConcepts/Serialization/CustomSerializationTests.cs new file mode 100644 index 00000000000..ab37d95281e --- /dev/null +++ b/tests/Tests/Documentation/ClientConcepts/Serialization/CustomSerializationTests.cs @@ -0,0 +1,459 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +// ********************************** +// IMPORTANT: These tests have a secondary use as code snippets used in documentation. +// We disable formatting in sections of this file to ensure the correct indentation when tagged regions are +// included in the asciidocs. While hard to read, this formatting should be left as-is for docs generation. +// We also include using directives that are not required due to global using directives, but remain here +// so that can appear in the documentation. +// ********************************** + +#pragma warning disable CS0105 // Using directive appeared previously in this namespace +#pragma warning disable IDE0005 // Remove unnecessary using directives +//tag::usings[] +//tag::converter-usings[] +using System; +using System.Text.Json; +//tag::usings-serialization[] +using System.Text.Json.Serialization; +//end::usings-serialization[] +//end::converter-usings[] +using System.Threading.Tasks; +using Elastic.Transport; +using Elastic.Clients.Elasticsearch; +using Elastic.Clients.Elasticsearch.Serialization; +//end::usings[] +//tag::derived-converter-usings[] +using System.Text.Json; +using Elastic.Clients.Elasticsearch.Serialization; +//end::derived-converter-usings[] +//tag::vanilla-serializer-using-directives[] +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; +using Elastic.Transport; +//end::vanilla-serializer-using-directives[] +using System.Text; +using VerifyXunit; +using System.IO; +using System.Threading; +//tag::querydsl-using-directives[] +using Elastic.Clients.Elasticsearch.QueryDsl; +//end::querydsl-using-directives[] +#pragma warning restore IDE0005 // Remove unnecessary using directives +#pragma warning restore CS0105 // Using directive appeared previously in this namespace + +namespace Tests.Documentation.Serialization; + +[UsesVerify] +public class CustomSerializationTests : DocumentationTestBase +{ + [U] + public async Task CustomizingJsonSerializerOptions() + { + // This example resets the PropertyNamingPolicy, such that the existing C# Pascal case is sent in the JSON. + + #pragma warning disable format + //tag::custom-options-local-function[] + static void ConfigureOptions(JsonSerializerOptions o) => // <1> + o.PropertyNamingPolicy = null; + //end::custom-options-local-function[] + + //tag::create-client[] + var nodePool = new SingleNodePool(new Uri("http://localhost:9200")); + var settings = new ElasticsearchClientSettings( + nodePool, + sourceSerializer: (defaultSerializer, settings) => + new DefaultSourceSerializer(settings, ConfigureOptions)); // <2> + var client = new ElasticsearchClient(settings); + //end::create-client[] + #pragma warning restore format + + // Needed for the test assertion as we should use the in memory connection and disable direct streaming. + // We don't want to include those in the docs as it may mislead or confuse developers. + // Any changes to the documentation code needs to be applied here also. + settings = new ElasticsearchClientSettings( + nodePool, + new InMemoryConnection(), + sourceSerializer: (defaultSerializer, settings) => + new DefaultSourceSerializer(settings, ConfigureOptions)) + .DisableDirectStreaming(); + client = new ElasticsearchClient(settings); + + #pragma warning disable format + //tag::index-person[] + var person = new Person { FirstName = "Steve" }; + var indexResponse = await client.IndexAsync(person, "my-index-name"); + //end::index-person[] + #pragma warning restore format + + var requestJson = Encoding.UTF8.GetString(indexResponse.ApiCallDetails.RequestBodyInBytes); + await Verifier.Verify(requestJson); + + var ms = new MemoryStream(indexResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedPerson = client.SourceSerializer.Deserialize(ms); + deserializedPerson.FirstName.Should().Be("Steve"); + +// Alternative example using an Action +//tag::custom-options-action[] +Action configureOptions = o => o.PropertyNamingPolicy = null; +//end::custom-options-action[] + } + +#pragma warning disable format +//tag::person-class[] +public class Person +{ + public string FirstName { get; set; } +} +//end::person-class[] +#pragma warning restore format +} + +[UsesVerify] +public class CustomSerializationTests_WithAttributes : DocumentationTestBase +{ + [U] + public async Task UsingSystemTextJsonAttributes() + { + // This example uses a STJ attribute on the property to provide a specific name to use in the JSON. + +#pragma warning disable format +//tag::index-person-with-attributes[] +var person = new Person { FirstName = "Steve", Age = 35 }; +var indexResponse = await Client.IndexAsync(person, "my-index-name"); +//end::index-person-with-attributes[] +#pragma warning restore format + + var requestJson = Encoding.UTF8.GetString(indexResponse.ApiCallDetails.RequestBodyInBytes); + await Verifier.Verify(requestJson); + } + + [U] + public async Task UsingSystemTextJsonConverterAttributes() + { +#pragma warning disable format +//tag::index-customer-with-converter[] +var customer = new Customer +{ + CustomerName = "Customer Ltd", + CustomerType = CustomerType.Enhanced +}; +var indexResponse = await Client.IndexAsync(customer, "my-index-name"); +//end::index-customer-with-converter[] +#pragma warning restore format + + var requestJson = Encoding.UTF8.GetString(indexResponse.ApiCallDetails.RequestBodyInBytes); + await Verifier.Verify(requestJson); + + var ms = new MemoryStream(indexResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedCustomer = Client.SourceSerializer.Deserialize(ms); + deserializedCustomer.CustomerName.Should().Be("Customer Ltd"); + deserializedCustomer.CustomerType.Should().Be(CustomerType.Enhanced); + } + +#pragma warning disable format +//tag::person-class-with-attributes[] +public class Person +{ + [JsonPropertyName("forename")] // <1> + public string FirstName { get; set; } + + [JsonIgnore] // <2> + public int Age { get; set; } +} +//end::person-class-with-attributes[] +#pragma warning restore format + +#pragma warning disable format +//tag::customer-with-jsonconverter-attribute[] +[JsonConverter(typeof(CustomerConverter))] // <1> +public class Customer +{ + public string CustomerName { get; set; } + public CustomerType CustomerType { get; set; } +} + +public enum CustomerType +{ + Standard, + Enhanced +} +//end::customer-with-jsonconverter-attribute[] +#pragma warning restore format + +#pragma warning disable format +//tag::customer-converter[] +public class CustomerConverter : JsonConverter +{ + public override Customer Read(ref Utf8JsonReader reader, + Type typeToConvert, JsonSerializerOptions options) + { + var customer = new Customer(); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + if (reader.TokenType == JsonTokenType.PropertyName) + { + if (reader.ValueTextEquals("customerName")) + { + reader.Read(); + customer.CustomerName = reader.GetString(); + continue; + } + + if (reader.ValueTextEquals("isStandard")) // <1> + { + reader.Read(); + var isStandard = reader.GetBoolean(); + + if (isStandard) + { + customer.CustomerType = CustomerType.Standard; + } + else + { + customer.CustomerType = CustomerType.Enhanced; + } + + continue; + } + } + } + + return customer; + } + + public override void Write(Utf8JsonWriter writer, + Customer value, JsonSerializerOptions options) + { + if (value is null) + { + writer.WriteNullValue(); + return; + } + + writer.WriteStartObject(); + + if (!string.IsNullOrEmpty(value.CustomerName)) + { + writer.WritePropertyName("customerName"); + writer.WriteStringValue(value.CustomerName); + } + + writer.WritePropertyName("isStandard"); + + if (value.CustomerType == CustomerType.Standard) // <2> + { + writer.WriteBooleanValue(true); + } + else + { + writer.WriteBooleanValue(false); + } + + writer.WriteEndObject(); + } +} +//end::customer-converter[] +#pragma warning restore format + + private class CustomerTypeConverter : JsonConverter + { + public override CustomerType Read(ref Utf8JsonReader reader, + Type typeToConvert, JsonSerializerOptions options) + { + return reader.GetString() switch + { + "basic" => CustomerType.Standard, + "premium" => CustomerType.Enhanced, + _ => throw new JsonException( + $"Unknown value read when deserializing {nameof(CustomerType)}."), + }; + } + + public override void Write(Utf8JsonWriter writer, + CustomerType value, JsonSerializerOptions options) + { + switch (value) + { + case CustomerType.Standard: + writer.WriteStringValue("basic"); + return; + case CustomerType.Enhanced: + writer.WriteStringValue("premium"); + return; + } + + writer.WriteNullValue(); + } + } +} + +[UsesVerify] +public class CustomSerializationTestsEnumAttribute : DocumentationTestBase +{ + [U] + public async Task DerivingFromSystemTextJsonSerializer_ToRegisterACustomEnumConverter_BeforeBuiltInConverters() + { + var nodePool = new SingleNodePool(new Uri("http://localhost:9200")); + var settings = new ElasticsearchClientSettings( + nodePool, + sourceSerializer: (defaultSerializer, settings) => + new MyCustomSerializer(settings)); // <1> + var client = new ElasticsearchClient(settings); + + // Needed for the test assertion as we should use the in memory connection and disable direct streaming. + // We don't want to include those in the docs as it may mislead or confuse developers. + // Any changes to the documentation code needs to be applied here also. + settings = new ElasticsearchClientSettings( + nodePool, + new InMemoryConnection(), + sourceSerializer: (defaultSerializer, settings) => + new MyCustomSerializer(settings)) + .DisableDirectStreaming(); + client = new ElasticsearchClient(settings); + +#pragma warning disable format +//tag::index-customer-without-jsonconverter-attribute[] +var customer = new Customer +{ + CustomerName = "Customer Ltd", + CustomerType = CustomerType.Enhanced +}; + +var indexResponse = await client.IndexAsync(customer, "my-index-name"); +//end::index-customer-without-jsonconverter-attribute[] +#pragma warning restore format + + var requestJson = Encoding.UTF8.GetString(indexResponse.ApiCallDetails.RequestBodyInBytes); + await Verifier.Verify(requestJson); + + var ms = new MemoryStream(indexResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedCustomer = client.SourceSerializer.Deserialize(ms); + deserializedCustomer.CustomerName.Should().Be("Customer Ltd"); + deserializedCustomer.CustomerType.Should().Be(CustomerType.Enhanced); + } + +#pragma warning disable format +//tag::customer-without-jsonconverter-attribute[] +public class Customer +{ + public string CustomerName { get; set; } + public CustomerType CustomerType { get; set; } +} + +public enum CustomerType +{ + Standard, + Enhanced +} +//end::customer-without-jsonconverter-attribute[] +#pragma warning restore format + +#pragma warning disable format +//tag::my-custom-serializer[] +public class MyCustomSerializer : SystemTextJsonSerializer // <1> +{ + private readonly JsonSerializerOptions _options; + + public MyCustomSerializer(IElasticsearchClientSettings settings) : base(settings) + { + var options = DefaultSourceSerializer.CreateDefaultJsonSerializerOptions(false); // <2> + + options.Converters.Add(new CustomerTypeConverter()); // <3> + + _options = DefaultSourceSerializer.AddDefaultConverters(options); // <4> + } + + protected override JsonSerializerOptions CreateJsonSerializerOptions() => _options; // <5> +} +//end::my-custom-serializer[] +#pragma warning restore format + +#pragma warning disable format +//tag::customer-type-converter[] +public class CustomerTypeConverter : JsonConverter +{ + public override CustomerType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return reader.GetString() switch // <1> + { + "basic" => CustomerType.Standard, + "premium" => CustomerType.Enhanced, + _ => throw new JsonException( + $"Unknown value read when deserializing {nameof(CustomerType)}."), + }; + } + + public override void Write(Utf8JsonWriter writer, CustomerType value, JsonSerializerOptions options) + { + switch (value) // <2> + { + case CustomerType.Standard: + writer.WriteStringValue("basic"); + return; + case CustomerType.Enhanced: + writer.WriteStringValue("premium"); + return; + } + + writer.WriteNullValue(); + } +} +//end::customer-type-converter[] +#pragma warning restore format + +public void RegisterVanillaSerializer() +{ +#pragma warning disable format +//tag::register-vanilla-serializer[] +var nodePool = new SingleNodePool(new Uri("http://localhost:9200")); +var settings = new ElasticsearchClientSettings( + nodePool, + sourceSerializer: (defaultSerializer, settings) => + new VanillaSerializer()); // <1> +var client = new ElasticsearchClient(settings); +//end::register-vanilla-serializer[] +#pragma warning restore format +} + +#pragma warning disable format +//tag::vanilla-serializer[] +public class VanillaSerializer : Serializer +{ + public override object Deserialize(Type type, Stream stream) => + throw new NotImplementedException(); + + public override T Deserialize(Stream stream) => + throw new NotImplementedException(); + + public override ValueTask DeserializeAsync(Type type, Stream stream, CancellationToken cancellationToken = default) => + throw new NotImplementedException(); + + public override ValueTask DeserializeAsync(Stream stream, CancellationToken cancellationToken = default) => + throw new NotImplementedException(); + + public override void Serialize(T data, Stream stream, SerializationFormatting formatting = SerializationFormatting.None) => + throw new NotImplementedException(); + + public override Task SerializeAsync(T data, Stream stream, + SerializationFormatting formatting = SerializationFormatting.None, CancellationToken cancellationToken = default) => + throw new NotImplementedException(); +} +//end::vanilla-serializer[] +#pragma warning restore format + +#pragma warning disable format +//tag::percolation-document[] +public class MyPercolationDocument +{ + public Query Query { get; set; } + public string Category { get; set; } +} +//end::percolation-document[] +#pragma warning restore format +} diff --git a/tests/Tests/Documentation/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs b/tests/Tests/Documentation/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs new file mode 100644 index 00000000000..413195f016a --- /dev/null +++ b/tests/Tests/Documentation/ClientConcepts/Serialization/ModellingDocumentsWithTypesTests.cs @@ -0,0 +1,50 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +// ********************************** +// IMPORTANT: These tests have a secondary use as code snippets used in documentation. +// We disable formatting in sections of this file to ensure the correct indentation when tagged regions are +// included in the asciidocs. While hard to read, this formatting should be left as-is for docs generation. +// We also include using directives that are not required due to global using directives, but remain here +// so that can appear in the documentation. +// ********************************** + +#pragma warning disable IDE0005 +//tag::usings +using System.Threading.Tasks; +using Elastic.Clients.Elasticsearch; +//end::usings +#pragma warning restore IDE0005 +using System.Text; +using VerifyXunit; + +namespace Tests.Documentation.Serialization; + +//tag::my-document-poco +public class MyDocument +{ + public string StringProperty { get; set; } +} +//end::my-document-poco + +[UsesVerify] +public class ModellingDocumentsWithTypesTests : DocumentationTestBase +{ + [U] + public async Task IndexMyDocument() + { + //tag::index-my-document + var document = new MyDocument + { + StringProperty = "value" + }; + + var indexResponse = await Client + .IndexAsync(document, "my-index-name"); + //end::index-my-document + + var requestJson = Encoding.UTF8.GetString(indexResponse.ApiCallDetails.RequestBodyInBytes); + await Verifier.Verify(requestJson); + } +} diff --git a/tests/Tests/Serialization/DefaultSourceSerializerTests.cs b/tests/Tests/Serialization/DefaultSourceSerializerTests.cs new file mode 100644 index 00000000000..9761d50adc3 --- /dev/null +++ b/tests/Tests/Serialization/DefaultSourceSerializerTests.cs @@ -0,0 +1,163 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System; +using System.IO; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using Elastic.Clients.Elasticsearch.QueryDsl; +using Elastic.Clients.Elasticsearch.Serialization; +using VerifyXunit; + +namespace Tests.Serialization; + +[UsesVerify] +public class DefaultSourceSerializerTests : SerializerTestBase +{ + private readonly ElasticsearchClient _client = new( + new ElasticsearchClientSettings(new InMemoryConnection()) + .DefaultMappingFor(m => m.IndexName("index")) + .DefaultMappingFor(m => m.IndexName("index")) + .DefaultMappingFor(m => m.IndexName("index").RelationName("my_parent")) + .DisableDirectStreaming()); + + [U] + public async Task SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingAJoinField() + { + var parent = new MyParent + { + Id = 1, + ParentProperty = "A parent property", + MyJoinField = JoinField.Root() + }; + + var child = new MyChild + { + Id = 2, + MyJoinField = JoinField.Link(parent) + }; + + var parentResponse = _client.Index(parent); + var childResponse = _client.Index(child); + + var parentRequestJson = Encoding.UTF8.GetString(parentResponse.ApiCallDetails.RequestBodyInBytes); + var childRequestJson = Encoding.UTF8.GetString(childResponse.ApiCallDetails.RequestBodyInBytes); + + var requests = parentRequestJson + Environment.NewLine + childRequestJson; + + await Verifier.Verify(requests); + + var ms = new MemoryStream(parentResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedParent = _client.SourceSerializer.Deserialize(ms); + deserializedParent.Id.Should().Be(1); + deserializedParent.ParentProperty.Should().Be("A parent property"); + deserializedParent.MyJoinField.Match(p => p.Name.Should().Be("my_parent"), c => c.Should().BeNull()); + + ms = new MemoryStream(childResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedChild = _client.SourceSerializer.Deserialize(ms); + deserializedChild.Id.Should().Be(2); + deserializedChild.MyJoinField.Match(p => p.Should().BeNull(), c => c.Name.Should().Be("mychild")); + } + + [U] + public async Task SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingQuery() + { + var response = _client.Index(new MyQuery { Query = Query.MatchAll(new() { Boost = 2.1f }) }, "test-index"); + + var requestJson = Encoding.UTF8.GetString(response.ApiCallDetails.RequestBodyInBytes); + + await Verifier.Verify(requestJson); + } + + [U] + public async Task SourceSerialization_WithCustomSerializer_CorrectlySerializes_TypesUsingQuery() + { + var nodePool = new SingleNodePool(new Uri("http://localhost:9200")); + + var settings = new ElasticsearchClientSettings( + nodePool, + new InMemoryConnection(), + sourceSerializer: (defaultSerializer, settings) => + new MyCustomSerializer(settings)) + .DisableDirectStreaming() + .DefaultMappingFor(m => m.IndexName("index")) + .DefaultMappingFor(m => m.IndexName("index")) + .DefaultMappingFor(m => m.IndexName("index").RelationName("my_parent")); + + var client = new ElasticsearchClient(settings); + + var parent = new MyParent + { + Id = 1, + ParentProperty = "A parent property", + MyJoinField = JoinField.Root() + }; + + var child = new MyChild + { + Id = 2, + MyJoinField = JoinField.Link(parent) + }; + + var parentResponse = client.Index(parent); + var childResponse = client.Index(child); + + var parentRequestJson = Encoding.UTF8.GetString(parentResponse.ApiCallDetails.RequestBodyInBytes); + var childRequestJson = Encoding.UTF8.GetString(childResponse.ApiCallDetails.RequestBodyInBytes); + + var requests = parentRequestJson + Environment.NewLine + childRequestJson; + + await Verifier.Verify(requests); + + var ms = new MemoryStream(parentResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedParent = client.SourceSerializer.Deserialize(ms); + deserializedParent.Id.Should().Be(1); + deserializedParent.ParentProperty.Should().Be("A parent property"); + deserializedParent.MyJoinField.Match(p => p.Name.Should().Be("my_parent"), c => c.Should().BeNull()); + + ms = new MemoryStream(childResponse.ApiCallDetails.RequestBodyInBytes); + var deserializedChild = client.SourceSerializer.Deserialize(ms); + deserializedChild.Id.Should().Be(2); + deserializedChild.MyJoinField.Match(p => p.Should().BeNull(), c => c.Name.Should().Be("mychild")); + } + + private abstract class MyDocument + { + public int Id { get; set; } + public JoinField MyJoinField { get; set; } + } + + private class MyParent : MyDocument + { + public string ParentProperty { get; set; } + } + + private class MyChild : MyDocument + { + public string ChildProperty { get; set; } + } + + private class MyQuery + { + public Query Query { get; set; } + } + + private class MyCustomSerializer : SystemTextJsonSerializer + { + private readonly JsonSerializerOptions _options; + + public MyCustomSerializer(IElasticsearchClientSettings settings) : base(settings) + { + var options = DefaultSourceSerializer.CreateDefaultJsonSerializerOptions(false); + + // At this point, a custom converter could be added, before our default ones. That's not what we're testing here. + + // This is necessary for custom serializers if they want to support serializing our types, such as Query. + _options = DefaultSourceSerializer.AddDefaultConverters(options); + } + + protected override JsonSerializerOptions CreateJsonSerializerOptions() => _options; + } +} diff --git a/tests/Tests/_VerifySnapshots/CustomSerializationTests.CustomizingJsonSerializerOptions.verified.txt b/tests/Tests/_VerifySnapshots/CustomSerializationTests.CustomizingJsonSerializerOptions.verified.txt new file mode 100644 index 00000000000..fcd99f27650 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/CustomSerializationTests.CustomizingJsonSerializerOptions.verified.txt @@ -0,0 +1 @@ +{"FirstName":"Steve"} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/CustomSerializationTestsEnumAttribute.DerivingFromSystemTextJsonSerializer_ToRegisterACustomEnumConverter_BeforeBuiltInConverters.verified.txt b/tests/Tests/_VerifySnapshots/CustomSerializationTestsEnumAttribute.DerivingFromSystemTextJsonSerializer_ToRegisterACustomEnumConverter_BeforeBuiltInConverters.verified.txt new file mode 100644 index 00000000000..d5523b6dbf9 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/CustomSerializationTestsEnumAttribute.DerivingFromSystemTextJsonSerializer_ToRegisterACustomEnumConverter_BeforeBuiltInConverters.verified.txt @@ -0,0 +1 @@ +{"customerName":"Customer Ltd","customerType":"premium"} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonAttributes.verified.txt b/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonAttributes.verified.txt new file mode 100644 index 00000000000..8300e23eaba --- /dev/null +++ b/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonAttributes.verified.txt @@ -0,0 +1 @@ +{"forename":"Steve"} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonConverterAttributes.verified.txt b/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonConverterAttributes.verified.txt new file mode 100644 index 00000000000..affab9cdbe9 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/CustomSerializationTests_WithAttributes.UsingSystemTextJsonConverterAttributes.verified.txt @@ -0,0 +1 @@ +{"customerName":"Customer Ltd","isStandard":false} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingAJoinField.verified.txt b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingAJoinField.verified.txt new file mode 100644 index 00000000000..5edd53e3ae2 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingAJoinField.verified.txt @@ -0,0 +1,2 @@ +{"parentProperty":"A parent property","id":1,"myJoinField":"my_parent"} +{"id":2,"myJoinField":{"name":"mychild","parent":"1"}} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt new file mode 100644 index 00000000000..35f2180ee22 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithBuiltInDefaultSourceSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt @@ -0,0 +1 @@ +{"query":{"match_all":{"boost":2.1}}} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithCustomSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithCustomSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt new file mode 100644 index 00000000000..5edd53e3ae2 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/DefaultSourceSerializerTests.SourceSerialization_WithCustomSerializer_CorrectlySerializes_TypesUsingQuery.verified.txt @@ -0,0 +1,2 @@ +{"parentProperty":"A parent property","id":1,"myJoinField":"my_parent"} +{"id":2,"myJoinField":{"name":"mychild","parent":"1"}} \ No newline at end of file diff --git a/tests/Tests/_VerifySnapshots/ModellingDocumentsWithTypesTests.IndexMyDocument.verified.txt b/tests/Tests/_VerifySnapshots/ModellingDocumentsWithTypesTests.IndexMyDocument.verified.txt new file mode 100644 index 00000000000..3e73b364739 --- /dev/null +++ b/tests/Tests/_VerifySnapshots/ModellingDocumentsWithTypesTests.IndexMyDocument.verified.txt @@ -0,0 +1 @@ +{"stringProperty":"value"} \ No newline at end of file