Commit Graph

14105 Commits

Author SHA1 Message Date
Martijn van Groningen 5a2a2861ab Merge pull request #11954 from martijnvg/percolator/stats/typo
Change `percolator.getTime` -> `percolator.time`
2015-07-01 19:08:42 +02:00
javanna 4b071f8d2c [TEST] assign flags in SimpleQueryStringBuilderTest 2015-07-01 19:05:05 +02:00
javanna 24b2614b36 Simple query string: minor changes 2015-07-01 19:04:18 +02:00
Ryan Ernst 41dc1b0120 Mappings: Move short name access out of field type
Eventually, the field type should not need any names, because there
will be only one name which leads to finding it (the full name, which is
also the index name). However, the short or "simple" name (using java
terminology for class names) is needed just in a couple places, for
serialization.

This change moves the simple name out of MappedFieldType.Names, into
Mapper, and makes Mapper and FieldMapper abstract classes.
2015-07-01 09:46:52 -07:00
Ryan Ernst ac8896c10e Merge pull request #11962 from rjernst/pr/root-mappers-rename
Rename "root" mappers to "metadata" mappers
2015-07-01 09:13:14 -07:00
javanna cab3a68cc0 Query refactoring: unify boost and query name
Following the discussion in #11744, move boost and query _name to base class AbstractQueryBuilder with their getters and setters. Unify their serialization code and equals/hashcode handling in the base class too. This guarantess that every query supports both _name and boost and nothing needs to be done around those in subclasses besides properly parsing the fields in the parsers and printing them out as part of the doXContent method in the builders. More specifically, these are the performed changes:

- Introduced printBoostAndQueryName utility method in AbstractQueryBuilder that subclasses can use to print out _name and boost in their doXContent method.

- readFrom and writeTo are now final methods that take care of _name and boost serialization. Subclasses have to implement doReadFrom and doWriteTo instead.

- toQuery is a final method too that takes care of properly applying _name and boost to the lucene query. Subclasses have to implement doToQuery instead. The query returned will have boost and queryName applied automatically.

- Removed BoostableQueryBuilder interface, given that every query is boostable after this change. This won't have any negative effect on filters, as the boost simply gets ignored in that case.

- Extended equals and hashcode to handle queryName and boost automatically as well.

- Update the query test infra so that queryName and boost are tested automatically, and whenever they are forgotten in parser or doXContent tests fail, so this makes things a lot less error-prone

- Introduced DEFAULT_BOOST constant to make sure we don't repeat 1.0f all the time for default boost values.

SpanQueryBuilder is again a marker interface only. The convenient toQuery that allowed us to override the return type to SpanQuery cannot be supported anymore due to a clash with the toQuery implementation from AbstractQueryBuilder. We have to go back to castin lucene Query to SpanQuery when dealing with span queries unfortunately.

Note that this change touches not only the already refactored queries but also the untouched ones, by making sure that we parse _name and boost whenever we need to and that we print them out as part of QueryBuilder#doXContent. This will result in printing out the default boost all the time rather than skipping it in non refactored queries, something that we would have changed anyway as part of the query refactoring.

The following are the queries that support boost now while previously they didn't (parser now parses it and builder prints it out): and, exists, fquery, geo_bounding_box, geo_distance, geo_distance_range, geo_hash_cell, geo_polygon, indices, limit, missing, not, or, script, type.

The following are the queries that support _name now while previously they didn't (parser now parses it and builder prints it out): boosting, constant_score, function_score, limit, match_all,  type.

Range query parser supports now _name at the same level as boost too (_name is still supported on the outer object though for bw comp).

There are two exceptions that despite have getters and setters for queryName and boost don't really support boost and queryName: query filter and span multi term query. The reason for this is that they only support a single inner object which is another query that they wrap, no other elements.

Relates to #11744
Closes #10776
Closes #11974
2015-07-01 17:48:40 +02:00
Robert Muir b55a3f32b8 Add debug logging in case classpath is crazy 2015-07-01 10:04:36 -04:00
Simon Willnauer 93acb98bd6 Carry on rest status if exceptions are not serializable
Today we loose the RestStatus code for non-serializable exceptions.
This can be tricky if they are supposed to signal certain situations
like authentication errors etc. This commit adds support for carrying on
the exceptions in the NotSerializableExceptoinWrapper
2015-07-01 13:57:54 +02:00
Martijn van Groningen 74cf05595e docs: Fix field stats docs. 2015-07-01 12:05:26 +02:00
Colin Goodheart-Smithe e366d0380d Aggregations: Adds other bucket to filters aggregation
The filters aggregation now has an option to add an 'other' bucket which will, when turned on, contain all documents which do not match any of the defined filters. There is also an option to change the name of the 'other' bucket from the default of '_other_'

Closes #11289
2015-07-01 10:44:04 +01:00
Colin Goodheart-Smithe ab80130c10 Aggregations: Makes SKIP Gap Policy work correctly for Bucket Script aggregation
This change means that when the skip gap policy is used, the bucket script aggregation will skip executing the script on a bucket if any of the required bucket_paths are missing for the bucket. No aggregation will be added to the bucket, and the aggregation will move to the next bucket.
2015-07-01 10:18:18 +01:00
Tanguy Leroux 737440b580 Postrm script should not fail
This commit changes the postrm script so that it prints error messages instead of failing & exiting when the deletion of a directory failed while removing a RPM/DEB package.

Closes #11373
2015-07-01 11:03:38 +02:00
caldwecr 8f1907f761 Docs: Use consistent plural form of index
Indices or indexes; but please not a hodgepodge of both.

Closes #11966
2015-07-01 10:51:43 +02:00
William Li 2be3fe31a4 Docs: Update filter-aggregation.asciidoc
Closes #11782
2015-07-01 10:17:45 +02:00
Colin Goodheart-Smithe d73ce3492a Aggregations: Makes ValueFormat and ValueFormatter never null
This allows a lot of null checks to be removed where we were always falling back to the ValueFormat.RAW anyway. Now the format is set to ValueFormat.RAW when no alternative is suitable.

Closes #10594
2015-07-01 08:57:03 +01:00
Ruslan Boyarskiy e5e422b880 Docs: Update post-filter.asciidoc
Removing useless comma

Closes #11912
2015-07-01 09:32:39 +02:00
szroland 68d658a30f Recovery: Fix wrong reused file bytes in Recovery API reports
Simple snapshot.restore test case that also exposes the bug mentioned in #11876

Fix #11876
Closes #11965
2015-07-01 09:08:53 +02:00
Martijn van Groningen ef9d70b9b3 field stats: added index constraints
Field stats index constraints allows to omit all field stats for indices that don't match with the constraint. An index
constraint can exclude indices' field stats based on the `min_value` and `max_value` statistic. This option is only
useful if the `level` option is set to `indices`.

For example index constraints can be useful to find out the min and max value of a particular property of your data in
a time based scenario. The following request only returns field stats for the `answer_count` property for indices
holding questions created in the year 2014:

curl -XPOST 'http://localhost:9200/_field_stats?level=indices' -d '{
   "fields" : ["answer_count"] <1>
   "index_constraints" : { <2>
      "creation_date" : { <3>
         "min_value" : { <4>
            "gte" : "2014-01-01T00:00:00.000Z",
         },
         "max_value" : {
            "lt" : "2015-01-01T00:00:00.000Z"
         }
      }
   }
}'

Closes #11187
2015-07-01 08:47:03 +02:00
Boaz Leskes 3cf78669f2 Mute testInstallPluginWithElasticsearchDownloadService & testInstallPluginWithMavenCentral
Example failure: http://build-us-00.elastic.co/job/es_core_master_oracle_6/519/testReport/
2015-07-01 08:34:47 +02:00
Robert Muir 5294b1ae40 Merge pull request #11963 from rmuir/prevent_hell
detect jar hell before installing a plugin
2015-07-01 00:00:12 -04:00
Robert Muir f312a4e30d cleanup uwe's unzip code 2015-06-30 23:59:45 -04:00
Igor Motov 2a9f26dfdc Improve repository verification failure message
Closes #11922
2015-06-30 20:08:15 -04:00
Simon Willnauer 04631d6948 Carry on headers if unknow exception is a WithRestHeadersException 2015-06-30 23:02:45 +02:00
Simon Willnauer c6837f56d9 Serialize AlreadyClosedException first before it's superclass 2015-06-30 23:02:45 +02:00
Robert Muir a839644826 detect jar hell before installing a plugin 2015-06-30 16:42:01 -04:00
Ryan Ernst 4b3dba527b Mappings: Rename "root" mappers to "metadata" mappers
"Root" is a very confusing term for meta field mappers. This change
renames "RootMapper" to "MetadataFieldMapper" and simplifies
how metadata mappers are setup.

It also requires that metadata mappers are now a FieldMapper
(MetadataFieldMapper extends from AbstractFieldMapper). The only
use of a root mapper that wasn't a field mapper was the theoretical
"external" root mapper (just a test mapper). But it doesn't make
sense to not have an actual field, and this falls inline with
the hopefully eventual collapsing of AbstractFieldMapper/FieldMapper/Mapper.
2015-06-30 13:31:17 -07:00
Boaz Leskes 182c59f5b4 Discovery: reroute after node join is processed
- shard listing actions underpinning shard allocation do not have access to that new node yet (causing errors during shard allocation see #11923
 - the very first cluster state published to a node already has shard assignments to it. This surfaced other issues we are working to fix separately

 This commit changes the reroute to be done post processing the initial join cluster state to side step these issues while we work on a longer term solution.

Closes #11960
2015-06-30 22:09:29 +02:00
Michael McCandless 48b85421ec fix smoke_test_plugins.py: install the .zip under releases, not the .jar 2015-06-30 15:03:54 -04:00
Simon Willnauer dab2a76eae Cut over to writeable for TransportAddress
This will allow us to move away from reflection hacks to serialize
transport exceptions.
2015-06-30 20:59:47 +02:00
Michael McCandless 46e35e5576 Merge pull request #11957 from mikemccand/smoke_test_plugins
Add simple plugins smoke tester

Closes #11935
2015-06-30 14:34:24 -04:00
Michael McCandless 189ef91e3c first cut 2015-06-30 14:14:45 -04:00
Colin Goodheart-Smithe a847dd267c [TEST] Fix location of render_search_template.json 2015-06-30 17:45:43 +01:00
Martijn van Groningen c6ae6fc6d9 percolator: `getTime` -> `time` 2015-06-30 18:44:58 +02:00
Colin Goodheart-Smithe d9ab3cba77 Search Templates: Adds API endpoint to render search templates as a response
Closes #6821
2015-06-30 16:57:23 +01:00
javanna 654dc20897 Merge branch 'master' into feature/query-refactoring
Conflicts:
	core/src/main/java/org/elasticsearch/common/io/stream/StreamInput.java
	core/src/main/java/org/elasticsearch/transport/local/LocalTransport.java
	core/src/main/java/org/elasticsearch/transport/netty/MessageChannelHandler.java
2015-06-30 17:38:31 +02:00
Simon Willnauer bbaf4710cb FileName is optional in StacktraceElement 2015-06-30 15:51:48 +02:00
Simon Willnauer 0ac8c1bc55 Carry on stacktrace and suppressed exceptions if exception is not serializable 2015-06-30 14:51:44 +02:00
Simon Willnauer 6ee9a3d5f2 add more essential exceptions 2015-06-30 14:51:44 +02:00
Simon Willnauer 971ac0475e add IOOB to supported exceptions 2015-06-30 14:51:44 +02:00
Simon Willnauer 0148c462e0 remove leftover ObjectOutputStream references 2015-06-30 14:51:44 +02:00
Simon Willnauer 325cc6bc61 serialize as not-serializable if exception is not registered 2015-06-30 14:51:44 +02:00
Simon Willnauer 4e2621ca21 Cleanup non-serializable code 2015-06-30 14:51:44 +02:00
Simon Willnauer c4f15c2c91 add dedicated unittests for exceptions that have a writeTo method (custom serialization) 2015-06-30 14:51:44 +02:00
Simon Willnauer 62d29ff6a4 simplify exception reading / writing - now use a named exception for unknonw exceptions 2015-06-30 14:51:43 +02:00
Simon Willnauer fa016a2b09 Don't implement Serializable in core classes
We can't add this to forbidden API since literally everything implements this.
Any API that would for instance use a String would not compile anymore.
2015-06-30 14:51:43 +02:00
Simon Willnauer e7eb9cf4de Ban java serialization
We had several problems with Java Serializatin in the past. At some point
in the Java 1.7.x series JDKs where not compatible anymore when java
serialization (ObjectStream) was used to exchange objects. In elasticsearch
we used this to serialize exceptions across the wire which caused several problems
with incompatible JDKs. While causing lot of trouble this essentially prevented
users from moving forward and upgrade their JVMs. To prevent these kind of issues
this commit removes the dependency on java serialization entirely and bans the
usage of ObjectOutputStream and ObjectInputStream entirely.

Yet, we can't fully serialize all exception anymore such that this commit
is best effort and adds hand written serialization to all elasticsearch exceptions
as well to a selected set of JDK and Lucene exceptions. (see StreamOutput#writeThrowable /
StreamInput.readThrowable). Stacktraces should be preserved for all exceptions while
several names might be replaced with ElasticsearchException if there is no mapping for
the given exception.
2015-06-30 14:51:43 +02:00
javanna 10f80167e6 Query refactoring: validate inner queries whenever supported
Added validation for all inner queries that any already refactored query may hold. Added also tests around this. At the end of the refactoring validate will be called by SearchRequest#validate during TransportSearchAction execution, which will call validate against the top level query builder that will need to go and validate its data plus all of its inner queries, and so on.

Closes #11889
2015-06-30 14:24:25 +02:00
Alexander Reelsen f26672c184 Release: Build two RPMS, signed and unsigned
In order to support older RPM based distributions like CentOS5,
we should have one RPM available, which is not signed.

This commit creates an unsigned RPM first, then moves it over to
target/releases during the build, then builds a signed RPM.

The unsigned one is uploaded via S3, where as the signed one is
used for the repositories.

In addition, you can now build an RPM without having to specify
any gpg credentials due to offloading this into a maven profile
that is only activated when specifying `rpm.sign` property.

Closes #11587
2015-06-30 14:22:20 +02:00
Clinton Gormley c373c872f8 Merge pull request #11921 from clintongormley/delayed_alloc_docs
Docs: Documented delayed allocation settings
2015-06-30 13:54:26 +02:00
Clinton Gormley 84acb65ca1 Docs: Documented delayed allocation settings
Relates to: #11712
2015-06-30 13:53:04 +02:00