The changes listed below were first released in the 2.x series. Changes released for the first time in Elasticsearch 5.0.0-alpha1 are listed in 5.0.0-alpha1 Release Notes.
Index APIs
- Change Field stats API response to include both number and string based min and max values #14674 (issue: #14404)
- Add Force Merge API, deprecate Optimize API #13778
Internal
Logging
Mapping
Nested Docs
Scripting
- Filter classes loaded by scripts #15262
- Lock down javascript and python script engines better #13924
Search
Allocation
- Speed up shard balancer by reusing shard model while moving shards that can no longer be allocated to a node #16926
Aggregations
- Adds geo_centroid metric aggregator #13846 (issue: #13621)
- Add percentiles_bucketpipeline aggregation #13186
- Add stats_bucket/extended_stats_bucketpipeline aggs #13128
Geo
- Add CONTAINS relation to geo_shape query #14810 (issue: #14713)
- Add support for Lucene 5.4 GeoPoint queries #14537
- Add GeoPointV2 Field Mapping #14536
Network
Plugin Analysis Phonetic
- Add support for daitch_mokotoff#14834
Plugin Cloud AWS
Plugins
- Decentralize plugin security #14108
Search
Aliases
- Add support to _aliases endpoint to specify multiple indices and aliases in one action #15305 (issue: #15186)
Allocation
- Skip capturing least/most FS info for an FS with no total #16001 (issue: #15919)
- Speed improvements for BalancedShardsAllocator #15678 (issue: #6372)
- Simplify delayed shard allocation #14808
- Add cluster-wide setting for total shard limit #14563 (issue: #14456)
- Early terminate high disk watermark checks on single data node cluster #13882 (issue: #9391)
- Also use PriorityComparator in shard balancer #13256 (issue: #13249)
- Add support for filtering by publish IP address #8801
Analysis
CAT API
- Add sync_id to cat shards API #14712 (issue: #14705)
- Add duration field to /_cat/snapshots #14385
- Add cat API for repositories and snapshots #14247 (issue: #13919)
- Adds disk used by indices to _cat/allocation #13783 (issue: #13529)
Cluster
- Shard state action request logging #16396
- Safe cluster state task notifications #15777
- Reroute once per batch of shard failures #15510
- Add callback for publication of new cluster state #15494 (issue: #15482)
- Use general cluster state batching mechanism for shard started #15023 (issues: #14725, #14899)
- Use general cluster state batching mechanism for shard failures #15016 (issues: #14725, #14899)
- Set an newly created IndexShard’s ShardRouting before exposing it to operations #14918 (issue: #10708)
- Uniform exceptions for TransportMasterNodeAction #14737
Core
- Remove log4j exception hiding #16834
- Avoid cloning MessageDigest instances #16479
- Add a hard check to ensure we are running with the expected lucene version #16305 (issue: #16301)
- If we can’t get a MAC address for the node, use a dummy one #15266 (issue: #10099)
- Simplify shard inactive logging #15259 (issue: #15252)
- Simplify IndexingMemoryController#checkIdle #15252 (issue: #15251)
- IndexingMemoryController should not track shard index states #15251 (issues: #13918, #15225)
- Verify Checksum once it has been fully written to fail as soon as possible #13896
Discovery
Exceptions
- Added file name to exceptions when failing to read index state #16850 (issue: #16713)
- Add Exception class name to message in NotSerializableExceptionWrapper#16325
- Deduplicate cause if already contained in shard failures #14432
- Give a better exception when running from freebsd jail without enforce_statfs=1 #14135 (issue: #12018)
- Make root_cause of field conflicts more obvious #13976 (issue: #12839)
- Use a dedicated id to serialize EsExceptions instead of it’s class name. #13629
Fielddata
- Update GeoPoint FieldData for GeoPointV2 #14345
Geo
- Upgrade GeoPointField to use Lucene 5.5 PrefixEncoding #16482
- Geo: Fix toString() in GeoDistanceRangeQuery and GeoPolygonQuery #15026
- Enable GeoPointV2 with backward compatibility testing #14667 (issues: #10761, #11159, #9859)
- Refactor Geo utilities to Lucene 5.4 #14339
Index APIs
Index Templates
Internal
- Implement available for all StreamInput classes #17218
- Cleanup search sub transport actions and collapse o.e.action.search.type package into o.e.action.search #16758 (issue: #11710)
- Simplify the Text API. #15511
- Simpler using compressed oops flag representation #15509 (issue: #15489)
- Info on compressed ordinary object pointers #15489 (issues: #13187, #455)
- Explicitly log cluster state update failures #15428 (issues: #14899, #15016, #15023)
- Use transport service to handle RetryOnReplicaException to execute replica action on the current node #15363
- Make IndexShard operation be more explicit about whether they are expected to run on a primary or replica #15282
- Avoid trace logging allocations in TransportBroadcastByNodeAction #15221
- Only trace log shard not available exceptions #14950 (issue: #14927)
- Transport options should be immutable #14760
- Fix dangling comma in ClusterBlock#toString #14483
- Improve some logging around master election and cluster state #14481
- Add System#exit(), Runtime#exit() and Runtime#halt() to forbidden APIs #14473 (issue: #12596)
- Simplify XContent detection. #14472
- Add threadgroup isolation. #14353
- Cleanup plugin security #14311
- Add workaround for JDK-8014008 #14274
- Refactor retry logic for TransportMasterNodeAction #14222
- Remove MetaDataSerivce and it’s semaphores #14159 (issue: #1296)
- Cleanup IndexMetaData #14119
- Add SpecialPermission to guard exceptions to security policy. #13854
- Clean up scripting permissions. #13844
- Factor groovy out of core into lang-groovy #13834 (issue: #13725)
- More helpful error message on parameter order #13737
- Factor expressions scripts out to lang-expression plugin #13726 (issue: #13725)
- Cleanup InternalClusterInfoService #13543
- Remove and forbid use of com.google.common.base.Throwables #13409 (issue: #13224)
- Remove cyclic dependencies between IndexService and FieldData / BitSet caches #13381
- Remove and forbid use of com.google.common.base.Objects #13355 (issue: #13224)
- Enable indy (invokedynamic) compile flag for Groovy scripts by default #8201 (issue: #8184)
Java API
- Add created flag to IndexingOperationListener#postIndex #17340 (issue: #17333)
- Align handling of interrupts in BulkProcessor #15527 (issue: #14833)
- BulkProcessor backs off exponentially by default #15513 (issue: #14829)
- Reject refresh usage in bulk items when using and fix NPE when no source #15082 (issue: #7361)
- BulkProcessor retries after request handling has been rejected due to a full thread pool #14829 (issue: #14620)
Logging
- Log suppressed stack traces under DEBUG #16627 (issues: #12991, #15329, #16622)
- Add circuit breaker name to logging package #14661
- Move logging for the amount of free disk to TRACE #14403 (issue: #12843)
- Map log-level trace to JDK-Level FINEST #14234
Mapping
- Expose the reason why a mapping merge is issued. #16059 (issue: #15989)
- Add sub-fields support to boolfields. #15636 (issue: #6587)
- Improve cross-type dynamic mapping updates. #15633 (issue: #15568)
- Make mapping updates more robust. #15539
- Make mapping serialization more robust. #15480
- Make mappings immutable. #15313 (issue: #9365)
- Make MappedFieldType.checkTypeName part of MappedFieldType.checkCompatibility. #15245
- Register field mappers at the node level. #14896 (issue: #14828)
Network
- Provide better error message when an incompatible node connects to a node #17182 (issue: #17090)
- Add additional fallback to http.publish_port and restrict fallback to transport.publish_port #16626 (issue: #14535)
- only allow code to bind to the user’s configured port numbers/ranges #14549
- Port of publishAddress should match port of corresponding boundAddress #14535 (issues: #14503, #14513, #14514)
Packaging
- Windows service: Use JAVA_HOME environment variable in registry #16552 (issue: #13521)
- Default standard output to the journal in systemd #16159 (issues: #15315, #16134)
- Use egrep instead of grep -E for Solaris #15755 (issue: #15628)
- punch thru symlinks when loading plugins/modules #15311
- set ActiveProcessLimit=1 on windows #15055
- set RLIMIT_NPROC = 0 on bsd/os X systems. #15039
- Drop ability to execute on Solaris #14200
- Nuke ES_CLASSPATH appending, JarHell fail on empty classpath elements #13880 (issues: #13812, #13864)
- improve seccomp syscall filtering #13829
- Block process execution with seccomp on linux/amd64 #13753
- Get lang-javascript, lang-python, securemock ready for script refactoring #13695
- Remove some bogus permissions only needed for tests. #13620
- Remove java.lang.reflect.ReflectPermission "suppressAccessChecks" #13603
- Remove JAVA_HOME detection from the debian init script #13514 (issues: #13403, #9774)
Plugin Cloud AWS
- Add ap-northeast-2 (seoul) endpoints for EC2 discovery and S3 snapshots #16167 (issue: #16166)
- Add aws canned acl #14297 (issue: #14103)
- Improved building of disco nodes #14155
- Enable S3SignerType #13360 (issue: #13332)
Plugin Cloud Azure
Plugin Cloud GCE
- cloud-gce plugin should check discovery.type#13809 (issue: #13614)
- Adding backoff from retries on GCE errors #13671 (issue: #13460)
Plugin Discovery EC2
- Adding US-Gov-West #14358
Plugin Ingest Attachment
Plugins
- Expose http.type setting, and collapse al(most all) modules relating to transport/http #15434 (issue: #14148)
- Ban RuntimePermission("getClassLoader") #15253
- Add nicer error message when a plugin descriptor is missing #15200 (issue: #15197)
- Don’t be lenient in PluginService#processModule(Module) #14306
- Adds a validation for plugins script to check if java is set #13633 (issue: #13613)
- Output plugin info only in verbose mode #12908 (issue: #12907)
Query DSL
- Allow CIDR notation in query string query #14773 (issue: #7464)
- Internal: simplify filtered query conversion to lucene query #13312 (issue: #13272)
REST
- Make XContentGenerator.writeRaw* safer. #15358
- Filter path refactoring #14390 (issues: #10980, #11560, #13344)
Recovery
- Handle cancel exceptions on recovery target if the cancel comes from the source #15309
- Decouple routing and primary operation logic in TransportReplicationAction #14852
Reindex API
- Implement helpful interfaces in reindex requests #17032
- Reindex should timeout if sub-requests timeout #16962
- Teach reindex to retry on rejection #16556 (issue: #16093)
Scripting
- Remove suppressAccessChecks permission for Groovy script plugin #16839 (issue: #16527)
- Class permission for Groovy references #16660 (issue: #16657)
- Scripting: Allow to get size of array in mustache #16193
- Enhancements to the mustache script engine #15661
- Add property permissions so groovy scripts can serialize json #14500 (issue: #14488)
- Remove ScriptEngineService.unwrap. #13958
- Remove ScriptEngineService.execute. #13956
Search
- Caching Weight wrappers should propagate the BulkScorer. #14317
- fix numerical issue in function score query #14085
- Optimize scrolls for constant-score queries. #13311
Settings
- Log warning if max file descriptors too low #16506
Snapshot/Restore
- Support wildcards for getting repositories and snapshots #15151 (issue: #4758)
- Add ignore_unavailable parameter to skip unavailable snapshot #14471 (issue: #13887)
- Simplify the BlobContainer blob writing interface #13434
Stats
- Pull Fields instance once from LeafReader in completion stats #15090 (issue: #6593)
- Add os.allocated_processors stats #14409 (issue: #13917)
- Adds stats counter for failed indexing requests #13130 (issue: #8938)
Top Hits
Translog
- Check for tragic event on all kinds of exceptions not only ACE and IOException #15535
Tribe Node
Aggregations
- Prevents exception being raised when ordering by an aggregation which wasn’t collected #17379 (issue: #17225)
- Setting other bucket on empty aggregation #17264 (issue: #16546)
- Build empty extended stats aggregation if no docs collected for bucket #16972 (issues: #16812, #9544)
- Set meta data for pipeline aggregations #16516 (issue: #16484)
- Filter(s) aggregation should create weights only once. #15998
- Make missingon terms aggs work with all execution modes. #15746 (issue: #14882)
- Run pipeline aggregations for empty buckets added in the Range Aggregation #15519 (issue: #15471)
- [Children agg] fix bug that prevented all child docs from being evaluated #15457
- Correct typo in class name of StatsAggregator #15321 (issue: #14730)
- Fix significant terms reduce for long terms #14948 (issue: #13522)
- Fix NPE in Derivative Pipeline when current bucket value is null #14745
- Pass extended bounds into HistogramAggregator when creating an unmapped aggregator #14742 (issue: #14735)
- Added correct generic type parameter on ScriptedMetricBuilder #14018 (issue: #13986)
- Pipeline Aggregations at the root of the agg tree are now validated #13475 (issue: #13179)
Aliases
Allocation
- IndicesStore checks for allocated elsewherefor every shard not alocated on the local node #17106
- Prevent peer recovery from node with older version #15775
- Fix calculation of next delay for delayed shard allocation #14765
- Take ignored unallocated shards into account when making allocation decision #14678 (issue: #14670)
- Only allow rebalance operations to run if all shard store data is available #14591 (issue: #14387)
- Delayed allocation can miss a reroute #14494 (issues: #14010, #14011, #14445)
- Check rebalancing constraints when shards are moved from a node they can no longer remain on #14259 (issue: #14057)
Analysis
- Analysis : Allow string explain param in JSON #16977 (issue: #16925)
- Analysis : Fix no response from Analyze API without specified index #15447 (issue: #15148)
Bulk
- Bulk api: fail deletes when routing is required but not specified #16675 (issues: #10136, #16645)
- Do not release unacquired semaphore #14909 (issue: #14908)
CAT API
- Fix column aliases in _cat/indices, _cat/nodes and _cat/shards APIs #17145 (issue: #17101)
- Properly set indices and indicesOptions on subrequest made by /_cat/indices #14360
CRUD
- Throw exception if content type could not be determined in Update API #15904 (issue: #15822)
- Index name expressions should not be broken up #13691 (issue: #13665)
Cache
- Handle closed readers in ShardCoreKeyMap #16027
Cluster
- Index deletes not applied when cluster UUID has changed #16825 (issue: #11665)
- Only fail the relocation target when a replication request on it fails #15791 (issue: #15790)
- Handle shards assigned to nodes that are not in the cluster state #14586 (issue: #14584)
- Bulk cluster state updates on index deletion #11258 (issue: #7295)
Core
- BitSetFilterCache duplicates its content. #15836 (issue: #15820)
- Limit the max size of bulk and index thread pools to bounded number of processors #15585 (issue: #15582)
- AllTermQuery’s scorer should skip segments that never saw the requested term #15506
- Include root-cause exception when we fail to change shard’s index buffer #14867
- Restore thread interrupt flag after an InterruptedException #14799 (issue: #14798)
- Record all bytes of the checksum in VerifyingIndexOutput #13923 (issues: #13848, #13896)
- When shard becomes active again, immediately increase its indexing buffer #13918 (issue: #13802)
- Close TokenStream in finally clause #13870 (issue: #11947)
- LoggingRunnable.run should catch and log all errors, not just Exception? #13718 (issue: #13487)
Exceptions
Expressions
- Check that _value is used in aggregations script before setting value to specialValue #17091 (issue: #14262)
Fielddata
- Don’t cache top level field data for fields that don’t exist #14693
Geo
- Remove .geohash suffix from GeoDistanceQuery and GeoDistanceRangeQuery #15871 (issue: #15179)
- Geo: Allow numeric parameters enclosed in quotes for geohash_grid aggregation #14440 (issue: #13132)
- Resync Geopoint hashCode/equals method #14124 (issue: #14083)
- Fix GeoPointFieldMapper to index geohash at correct precision. #13649 (issue: #12467)
Highlighting
- Don’t override originalQuery with request filters #15793 (issue: #15689)
- Fix spans extraction to not also include individual terms. #15516 (issues: #13239, #15291)
Index APIs
- Field stats: Index constraints should remove indices in the response if the field to evaluate is empty #14868
- Field stats: Fix NPE for index constraint on empty index #14841
- Field stats: Added formatoption for index constraints #14823 (issue: #14804)
- Forbid index name .and..#13862 (issue: #13858)
Inner Hits
Internal
- Log uncaught exceptions from scheduled once tasks #15824 (issue: #15814)
- FunctionScoreQuery should implement two-phase iteration. #15602
- Make sure the remaining delay of unassigned shard is updated with every reroute #14890 (issue: #14808)
- Throw a meaningful error when loading metadata and an alias and index have the same name #14842 (issue: #14706)
- fixup issues with 32-bit jvm #14609
- Failure to update the cluster state with the recovered state should make sure it will be recovered later #14485
- Gateway: a race condition can prevent the initial cluster state from being recovered #13997
- Verify actually written checksum in VerifyingIndexOutput #13848
- An inactive shard is activated by triggered synced flush #13802
- Remove all setAccessible in tests and forbid #13539
- Remove easy uses of setAccessible in tests. #13537
- Ban setAccessible from core code, restore monitoring stats under java 9 #13531 (issue: #13527)
Logging
- Add missing index name to indexing slow log #17026 (issue: #17025)
- ParseFieldMatcher should log when using deprecated settings. #16988
- Don’t log multi-megabyte guice exceptions. #13782
- Moving system property setting to before it can be used #13660 (issue: #13658)
Mapping
- Put mapping operations must update metadata of all types. #16264 (issue: #16239)
- Fix serialization of search_analyzer. #16255
- Reuse metadata mappers for dynamic updates. #16023 (issue: #15997)
- Fix MapperService#searchFilter(…) #15923 (issue: #15757)
- Fix initial sizing of BytesStreamOutput. #15864 (issue: #15789)
- MetaDataMappingService should call MapperService.merge with the original mapping update. #15508
- MapperService: check index.mapper.dynamic during index creation #15424 (issue: #15381)
- Only text fields should accept analyzer and term vector settings. #15308
- Mapper parsers should not check for a tokenizedproperty. #15289
- Validate that fields are defined only once. #15243 (issue: #15057)
- Check mapping compatibility up-front. #15175 (issue: #15049)
- Don’t treat default as a regular type. #15156 (issue: #15049)
- Don’t ignore mapping merge failures. #15144 (issue: #15049)
- Treat mappings at an index-level feature. #15142
- Make _type use doc values #14783 (issue: #14781)
Network
Packaging
- Fix waiting for pidfile #16718 (issue: #16717)
- Fix Windows service installation failure #15549 (issue: #15349)
- Enable es_include at init #15173
- Handle system policy correctly #14704 (issue: #14690)
- Startup script exit status should catch daemonized startup failures #14170 (issue: #14163)
- Don’t let ubuntu try to install its crazy jayatana agent. #13813 (issue: #13785)
Parent/Child
- Check that parent_type in Has Parent Query has child types #16923 (issue: #16692)
- Has child query forces default similarity #16611 (issues: #16550, #4977)
Percolator
- Don’t replace found fields if map unmapped fields as string is enabled #16043 (issue: #10500)
- mpercolate api should serialise start time #15938 (issue: #15908)
Plugin Delete By Query
Plugin Discovery GCE
Plugin Mapper Attachment
- Fix toXContent() for mapper attachments field #15110
Plugin Repository S3
- Hack around aws security hole of accessing sun.security.ssl, s3 repository works on java 9 again #13538 (issue: #432)
Plugins
- Fix plugin list command error message #14288 (issue: #14287)
- Fix HTML response during redirection #11374 (issue: #11370)
Query DSL
- Fix FunctionScore equals/hashCode to include minScore and friends #15676
- Min should match greater than the number of optional clauses should return no result #15571 (issue: #15521)
- Return a better exception message when regexpquery is used on a numeric field #14910 (issue: #14782)
REST
- Remove detect_noop from REST spec #16386
- Make text parsing less lenient. #15679
- Throw exception when trying to write map with null keys #15479 (issue: #14346)
- Fix OOM in AbstractXContentParser #15350 (issue: #15338)
- XContentFactory.xContentType: allow for possible UTF-8 BOM for JSON XContentType #14611 (issue: #14442)
- RestUtils.decodeQueryString ignores the URI fragment when parsing a query string #13365 (issue: #13320)
Recovery
- Try to renew sync ID if flush=trueon forceMerge #17108 (issue: #17019)
- CancellableThreads should also treat ThreadInterruptedException as InterruptedException #15318
Reindex API
- Properly register reindex status #17125
- Make search failure cause rest failure #16889 (issue: #16037)
Scripting
- Add permission to access sun.reflect.MethodAccessorImpl from Groovy scripts #16540 (issue: #16536)
- Security permissions for Groovy closures #16196 (issues: #16194, #248)
Search
- Do not apply minimum_should_match on auto generated boolean query if the coordination factor is disabled. #16155
- Do not apply minimum-should-match on a boolean query if the coords are disabled #16078 (issue: #15858)
- Fix blended terms take 2 #15894 (issue: #15860)
- Fix NPE when a segment with an empty cache gets closed. #15202 (issue: #15043)
- Fix the quotes in the explain message for a script score function without parameters #11398
Settings
- TransportClient should use updated setting for initialization of modules and service #16095
- ByteSizeValue.equals should normalize units #13784
Snapshot/Restore
- Prevent closing index during snapshot restore #16933 (issue: #16321)
- Add node version check to shard allocation during restore #16520 (issue: #16519)
- Snapshot restore and index creates should keep index settings and cluster blocks in sync #13931 (issue: #13213)
- Fix blob size in writeBlob() method #13574 (issue: #13434)
Stats
- Fix recovery translog stats totals when recovering from store #16493 (issue: #15974)
- Fix calculation of age of pending tasks #15995 (issue: #15988)
- Add extra validation into cluster/stats#14699 (issue: #7390)
- Omit current* stats for OldShardStats #13801 (issue: #13386)
Task Manager
- Fix TaskId#isSet to return true when id is set and not other way around #17307
- Don’t wait for completion of list tasks tasks when wait_for_completion flag is set #17231
Translog
- Never delete translog-N.tlog file when creation fails #15788
- Close recovered translog readers if createWriter fails #15762 (issue: #15754)
- Fail and close translog hard if writing to disk fails #15420 (issue: #15333)
- Prevent writing to closed channel if translog is already closed #15012 (issue: #14866)
- Don’t delete temp recovered checkpoint file if it was renamed #14872 (issue: #14695)
- Translog recovery can repeatedly fail if we run out of disk #14695
- Pending operations in the translog prevent shard from being marked as inactive #13759 (issue: #13707)
Tribe Node
- Passthrough environment and network settings to tribe client nodes #16893
- Tribe node: pass path.conf to inner tribe clients #16258 (issue: #16253)
- Fix tribe node to load config file for internal client nodes #15300 (issues: #13383, #14573)
Analysis
- Add PathHierarchy type back to path_hierarchy tokenizer for backward compatibility with 1.x #15785 (issue: #15756)
Internal
Plugin Cloud Azure
REST
- Don’t return all indices immediately if count of expressions >1 and first expression is * #17033 (issue: #17027)
Core
- Upgrade to Lucene 5.5.0 official release #16742
- Upgrade to lucene 5.5.0-snapshot-850c6c2 #16615
- Upgrade to lucene 5.5.0-snapshot-4de5f1d #16400 (issues: #16373, #16399)
- Update lucene to r1725675 #16114
- Upgrade to lucene-5.5.0-snapshot-1721183. #15575
- Upgrade Lucene to 5.4.0-snapshot-1715952 #14951
- Upgrade Lucene to 5.4.0-snapshot-1714615 #14784
- Upgrade to lucene-5.4.0-snapshot-1712973. #14619
- update to lucene-5.4.x-snapshot-1711508 #14398
- Upgrade to lucene-5.4-snapshot-1710880. #14320
- Upgrade to lucene-5.4-snapshot-1708254. #14074
- upgrade lucene to r1702265 #13439
- Upgrade master to lucene 5.4-snapshot r1701068 #13324
Geo
Internal
Plugin Cloud AWS
Plugin Cloud Azure
- Upgrade Azure Storage client to 4.0.0 #16084 (issues: #12567, #15080, #15976)
- Update Azure Service Management API to 0.9.0 #15232 (issue: #15209)
Plugin Discovery Azure
Plugin Discovery EC2
- Upgrade to aws 1.10.33 #14672
Plugin Lang JS
- upgrade rhino for plugins/lang-javascript #14466
Scripting
