Commit Graph

1910 Commits

Author SHA1 Message Date
Adrien Grand 2d627ba757
Add per-field metadata. (#49419)
This PR adds per-field metadata that can be set in the mappings and is later
returned by the field capabilities API. This metadata is completely opaque to
Elasticsearch but may be used by tools that index data in Elasticsearch to
communicate metadata about fields with tools that then search this data. A
typical example that has been requested in the past is the ability to attach
a unit to a numeric field.

In order to not bloat the cluster state, Elasticsearch requires that this
metadata be small:
 - keys can't be longer than 20 chars,
 - values can only be numbers or strings of no more than 50 chars - no inner
   arrays or objects,
 - the metadata can't have more than 5 keys in total.

Given that metadata is opaque to Elasticsearch, field capabilities don't try to
do anything smart when merging metadata about multiple indices, the union of
all field metadatas is returned.

Here is how the meta might look like in mappings:

```json
{
  "properties": {
    "latency": {
      "type": "long",
      "meta": {
        "unit": "ms"
      }
    }
  }
}
```

And then in the field capabilities response:

```json
{
  "latency": {
    "long": {
      "searchable": true,
      "aggreggatable": true,
      "meta": {
        "unit": [ "ms" ]
      }
    }
  }
}
```

When there are no conflicts, values are arrays of size 1, but when there are
conflicts, Elasticsearch includes all unique values in this array, without
giving ways to know which index has which metadata value:

```json
{
  "latency": {
    "long": {
      "searchable": true,
      "aggreggatable": true,
      "meta": {
        "unit": [ "ms", "ns" ]
      }
    }
  }
}
```

Closes #33267
2019-12-18 17:27:38 +01:00
Tomas Della Vedova 9ed323ad1d
Added type definitions in rest-api-spec (#47089)
* Added type definitions in rest-api-spec

* Addressed comments
2019-12-12 13:56:16 +01:00
Martijn Laarman 7bb4781bc9
cat.indices.json bytes enum not exhaustive (#49369)
Missing several valid options that other cat API's do define
2019-12-12 13:12:04 +01:00
Przemyslaw Gomulka 90c59a1dbf
Allow skipping ranges of versions (#50014)
Multiple version ranges are allowed to be used in section skip in yml
tests. This is useful when a bugfix was backported to latest versions
and all previous releases contain a wire breaking bug.
examples:
6.1.0 - 6.3.0, 6.6.0 - 6.7.9, 7.0 -
- 7.2, 8.0.0 -
2019-12-10 14:22:10 +01:00
markharwood b4fa6771b9
Remove serialisation of adjust_pure_negative default value - (#49543)
Closes #49530
2019-12-05 12:13:53 +00:00
Stuart Tettemer 4a078029ed
Scripting: add available languages & contexts API (#49652)
Adds `GET /_script_language` to support Kibana dynamic scripting
language selection.

Response contains whether `inline` and/or `stored` scripts are
enabled as determined by the `script.allowed_types` settings.

For each scripting language registered, such as `painless`,
`expression`, `mustache` or custom, available contexts for the language
are included as determined by the `script.allowed_contexts` setting.

Response format:
```
{
  "types_allowed": [
    "inline",
    "stored"
  ],
  "language_contexts": [
    {
      "language": "expression",
      "contexts": [
        "aggregation_selector",
        "aggs"
        ...
      ]
    },
    {
      "language": "painless",
      "contexts": [
        "aggregation_selector",
        "aggs",
        "aggs_combine",
        ...
      ]
    }
...
  ]
}
```

Fixes: #49463
2019-12-03 18:55:48 -07:00
Jim Ferenczi c2deb287f1
Add a cluster setting to disallow loading fielddata on _id field (#49166)
This change adds a dynamic cluster setting named `indices.id_field_data.enabled`.
When set to `false` any attempt to load the fielddata for the `_id` field will fail
with an exception. The default value in this change is set to `false` in order to prevent
fielddata usage on this field for future versions but it will be set to `true` when backporting
to 7x. When the setting is set to true (manually or by default in 7x) the loading will also issue
a deprecation warning since we want to disallow fielddata entirely when https://github.com/elastic/elasticsearch/issues/26472
is implemented.

Closes #43599
2019-11-27 13:38:09 +01:00
Alan Woodward 35355e25f7
Remove types from internal GetFieldMappings request/response objects (#48815)
Type filters and intermediate type levels in mappings responses have already been
removed from the GetFieldMappings REST layer; we can also remove them from the
internal Node client classes.

Relates to #41059
2019-11-27 11:41:41 +00:00
Martijn Laarman 8098276b7f Remove force from version_type enum in rest-spec (#49370)
As per #47228 `force` is no longer a valid option
2019-11-26 09:58:33 +01:00
Enrico Zimuel eeda29ac56
Slash miss in indices.put_mapping url 2019-11-21 22:59:02 +01:00
Julie Tibshirani 33a7f066e1
Remove include_type_name from the REST API spec and docs. (#48828)
In #48632 we removed support for `include_type_name` in the REST API. This PR
removes it from the API spec and documentation.
2019-11-12 09:42:46 -08:00
Alan Woodward 37a997a9a9
Remove `include_type_name` parameter from REST layer (#48632)
This commit removes support for the include_type_name parameter from all
REST actions that receive or return mapping configurations.

Relates to #41059
2019-11-01 09:30:47 +00:00
Christoph Büscher e5646fefa3
Support `search_type` in Rank Evaluation API (#48542)
Adding support for the `search_type` request parameter to the Ranking Evaluation
API since this parameter can impact the ranking and the metric score and should
be choosen in the same way when evaluating the search as later in the real
search.

Closes #48503
2019-10-29 13:26:41 +01:00
Stuart Tettemer 0f1b076e40
Scripting: fill in get contexts REST API (#48319)
* Scripting: fill in get contexts REST API

Updates response for `GET /_script_context`, returning a `contexts`
object with a list of context description objects.  The description
includes the context name and a list of methods available.  The
methods list has the signature for the `execute` mathod and any
getters. eg.
```
{
  "contexts": [
     {
       "name" : "moving-function",
       "methods" : [
         {
           "name" : "execute",
           "return_type" : "double",
           "params" : [
             {
               "type" : "java.util.Map",
               "name" : "params"
             },
             {
               "type" : "double[]",
               "name" : "values"
             }
           ]
         }
       ]
     },
     {
       "name" : "number_sort",
       "methods" : [
         {
           "name" : "execute",
           "return_type" : "double",
           "params" : [ ]
         },
         {
           "name" : "getDoc",
           "return_type" : "java.util.Map",
           "params" : [ ]
         },
         {
           "name" : "getParams",
           "return_type" : "java.util.Map",
           "params" : [ ]
         },
         {
           "name" : "get_score",
           "return_type" : "double",
           "params" : [ ]
         }
       ]
     },
...
  ]
}
```

fixes: #47411
2019-10-28 13:33:35 -06:00
Alan Woodward afeee4be9e
Remove type filter from GetMappings API (#47364)
This commit removes the types filter from the GetMappings API, which is no longer
useful seeing as we can only have a single mapping type per index. It also changes
the structure of GetMappingsResponse and GetIndexResponse to remove the extra
nesting of mappings below the no-longer-relevant type name, and removes the types
methods from the equivalent request classes.

Relates to #41059
2019-10-21 10:10:34 +01:00
Stuart Tettemer c6037dc93b
Scripting: get context names REST API (#48026)
Adds `GET /_script_context`, returning a `contexts` object with each
available context as a key whose value is an empty object. eg.
```
{
  "contexts": {
    "aggregation_selector": {},
    "aggs": {},
    "aggs_combine": {},
...
  }
}
```

refs: #47411
2019-10-16 16:44:47 -06:00
James Rodewig 64c1dfa727
[DOCS] Remove unsupported `local` and `master_timeout` parms from cat API docs (#47933) 2019-10-14 11:38:46 -04:00
Ioannis Kakavas bac7322f01
Un-mute locale depending mapping tests (#47977)
Reverts 71968c9. The underlying
issue which was related to the bouncycastle security provider
permissions was resolved in
https://github.com/elastic/infra/pull/14995

resolves: https://github.com/elastic/elasticsearch/issues/39981
2019-10-14 11:28:15 +03:00
Alan Woodward 566e1b7d33
Remove type field from DocWriteRequest and associated Response objects (#47671)
This commit removes the type field from index, update and delete requests, and their
associated responses.

Relates to #41059
2019-10-11 10:23:55 +01:00
James Rodewig 15e2de6db8
[DOCS] Document `bytes` and `time` params in cat API docs (#47672) 2019-10-10 08:29:27 -04:00
Alan Woodward 7a622f024f
Remove types from BulkRequest (#46983)
This commit removes types entirely from BulkRequest, both as a global
parameter and as individual entries on update/index/delete lines.

Relates to #41059
2019-10-07 13:29:12 +01:00
Alan Woodward 29463551ae
Remove typename checks in mapping updates (#47347)
This commit removes types validation during mapping updates. This will make
further work on types removal easier, as it will prevent test failures due to type-name
clashes when we remove type information from PutMapping and CreateIndex requests

Part of #41059
2019-10-03 11:25:09 +01:00
Yannick Welsch f52afa3cd4 Adapt version constants after backport (#47353) 2019-10-02 14:32:10 +02:00
Yannick Welsch e1012efbd1
Use optype CREATE for single auto-id index requests (#47353)
Changes auto-id index requests to use optype CREATE, making it compliant with our docs.
This will also make these auto-id index requests compatible with the new "create-doc" index
privilege (which is based on the optype), the default optype is changed to create, just as it is
already documented.
2019-10-02 11:04:19 +02:00
Yannick Welsch c048c86351
Allow optype CREATE for append-only indexing operations (#47169)
Bulk requests currently do not allow adding "create" actions with auto-generated IDs.
This commit allows using the optype CREATE for append-only indexing operations. This is
mainly the user facing aspect of it.
2019-09-30 16:54:46 +02:00
James Rodewig 4568d30ef6
[DOCS] Document missing query parms for cat recovery API (#47181)
Documents the following query parameters for
the /_cat/recovery API:

* `active_only`
* `detailed`
* `index`
2019-09-27 12:19:47 -04:00
Alan Woodward ff99bc1d3f
Remove per-type indexing stats (#47203)
With only a single type, the per-type filters for indexing stats are no longer useful.

Relates to #41059
2019-09-27 13:03:37 +01:00
Alan Woodward c1f99e2d75
Remove `_type` from SearchHit (#46942)
This commit removes the `_type` field from all search hit responses.

Relates to #41059
2019-09-23 19:14:54 +01:00
Colin Goodheart-Smithe a574a66a21 Removes typed URLs from mapping APIs (#41676)
Relates to #41059
2019-09-23 18:20:07 +01:00
Alan Woodward 4ebeca585b
Remove types from TermsLookup (#46943)
TermsLookup uses a GetRequest under the hood to load terms from a particular
document.  Now that GetRequests no longer use a type, we can remove types from
the TermsLookup object and terms query as well.

Relates to #41059
2019-09-23 18:07:39 +01:00
Alan Woodward b733f9e803
Remove types from explain API (#46926)
We no longer need a type to get the source of a document, so we can remove it from
the explain API as well.

Relates to #41059
2019-09-23 17:55:09 +01:00
Luca Cavanna 74e3af5c9e
update _common.json format (#46872)
API spec now use an object for the documentation field. _common was not updated yet. This commit updates _common.json and its corresponding parser.

Closes #46744

Co-Authored-By: Tomas Della Vedova <delvedor@users.noreply.github.com>
2019-09-23 17:00:37 +02:00
Alan Woodward 7c90801aff
Remove types from Get/MultiGet (#46587)
This commit removes types from the ShardGetService, and propagates this API change
up through the Transport and Rest actions for Get and MultiGet

Relates to #41059
2019-09-20 14:22:57 +01:00
Martijn Laarman 716b4e1fdf Document PUT as the prefered HTTP method for index API (#45622)
Follow up from #42346. Since the `methods` array is in order of
preference when calling the index API with an `{id}` we prefer to use
the `PUT` http method.
2019-09-19 14:23:12 +02:00
James Rodewig 4ac134dc0f
[DOCS] Separate and reformat synced flush API docs (#46634) 2019-09-18 16:16:29 -04:00
Tomas Della Vedova a2a502b330
Fixes for API specification (#46522)
Follow-up of #42346
2019-09-16 11:23:57 +02:00
Henning Andersen bc094e63b3
Wait for events in translog stats tests (#46586)
When waiting for no initializing shards we also have to wait for events
when we have more than one node in the cluster. When the primary is
started, there is a short period of time, where neither the primary nor
any of the replicas are initializing.

Closes #46535
2019-09-12 09:11:50 +02:00
Alpar Torok 7dc9323abd Fix muting of test
Can't have multiple skip sections
2019-09-10 14:36:07 +03:00
Alpar Torok 1a8a5a2b22 muted on mater
tracked in  #46535
2019-09-10 14:09:09 +03:00
Nhat Nguyen 2224f8663a
Ensure no ongoing peer recovery in translog yaml test (#46476)
We leave replicas unassigned until we reroute after the primary shard
starts. If a cluster health request with wait_for_no_initializing_shards
is executed before the reroute, it will return immediately although
there will be some initializing replicas. Peer recoveries of those
shards can prevent translog on the primary from trimming.

We add wait_for_events to the cluster health request so that it will
execute after the reroute.

Closes #46425
2019-09-09 09:38:49 -04:00
Benjamin Trent 995be00746
Adjusting bwc serialization after backport (#46400) 2019-09-05 14:06:00 -05:00
Benjamin Trent 9d3467ae30
Support geotile_grid aggregation in composite agg sources (#45810)
Adds support for `geotile_grid` as a source in composite aggs. 

Part of this change includes adding a new docFormat of `GEOTILE` that formats a hashed `long` value into a geotile formatting string `zoom/x/y`.
2019-09-05 10:36:34 -05:00
Alpar Torok a238248706
Bwc testclusters all (#46265)
Convert all bwc projects to testclusters
2019-09-04 15:39:37 +03:00
Tal Levy 3cf174d239
re-enable bwc tests and update cat.alias rest tests (#45822)
* correct version bounds to 7.4 for cat.alias rest tests

* re-enable bwc tests
2019-08-21 16:06:58 -07:00
Tal Levy 7106288c54
Add is_write_index column to cat.aliases (#44772)
Aliases have had the option to set `is_write_index` since 6.4,
but the cat.aliases action was never updated.
2019-08-21 07:40:07 -07:00
Armin Braun 4db49b260f
Fix Broken REST API Spec for Repo Cleanup (#45782)
* Fix Broken REST API Spec for Repo Cleanup
2019-08-21 13:25:08 +02:00
Armin Braun df01766c15
Repository Cleanup Endpoint (#43900)
* Snapshot cleanup functionality via transport/REST endpoint.
* Added all the infrastructure for this with the HLRC and node client
* Made use of it in tests and resolved relevant TODO
* Added new `Custom` CS element that tracks the cleanup logic.
Kept it similar to the delete and in progress classes and gave it
some (for now) redundant way of handling multiple cleanups but only allow one
* Use the exact same mechanism used by deletes to have the combination
of CS entry and increment in repository state ID provide some
concurrency safety (the initial approach of just an entry in the CS
was not enough, we must increment the repository state ID to be safe
against concurrent modifications, otherwise we run the risk of "cleaning up"
blobs that just got created without noticing)
* Isolated the logic to the transport action class as much as I could.
It's not ideal, but we don't need to keep any state and do the same
for other repository operations
(like getting the detailed snapshot shard status)
2019-08-21 12:02:44 +02:00
Nhat Nguyen b0d346fd74
Ignore translog retention policy if soft-deletes enabled (#45473)
Since #45136, we use soft-deletes instead of translog in peer recovery.
There's no need to retain extra translog to increase a chance of
operation-based recoveries. This commit ignores the translog retention
policy if soft-deletes is enabled so we can discard translog more
quickly.

Co-authored-by: David Turner <david.turner@elastic.co>

Relates #45136
2019-08-20 20:54:14 -04:00
Karel Minarik 9166311622 Update the schema for the REST API specification (#42346)
* Update the REST API specification

This patch updates the REST API spefication in JSON files to better encode deprecated entities,
to improve specification of URL paths, and to open up the schema for future extensions.

Notably, it changes the `paths` from a list of strings to a list of objects, where each
particular object encodes all the information for this particular path: the `parts` and the `methods`.

Among the benefits of this approach is eg. encoding the difference between using the `PUT` and `POST`
methods in the Index API, to either use a specific document ID, or let Elasticsearch generate one.

Also `documentation` becomes an object that supports an `url` and also a `description` which is a
new field.

* Adapt YAML runner to new REST API specification format

The logic for choosing the path to use when running tests has been
simplified, as a consequence of the path parts being listed under each
path in the spec. The special case for create and index has been removed.

Also the parsing code has been hardened so that errors are thrown earlier
when the structure of the spec differs from what expected, and their
error messages should be more helpful.
2019-08-15 17:15:30 +02:00
Przemyslaw Gomulka 8d1ea86519
Set start of the week to Monday for root locale (#43652)
Introducing a IsoLocal.ROOT constant which should be used instead of java.util.Locale.ROOT in ES when dealing with dates. IsoLocal.ROOT  customises start of the week to be Monday instead of Sunday.

closes #42588 an issue with investigation details
relates #41670 bug raised (this won't fix it on its own. joda.parseInto has to be reimplemented
closes #43275 an issue raised by community member
2019-08-09 15:24:05 +02:00