See issues on GitHub

Release Notes

Breaking changes:

  • Improve source based fields loading when searching (#1347)
  • Geo Type Mapping: Add normalize flag (default to true), and default validate to true (#1262)
  • Java API: XContentFactory creation of XContentBuilder to always be “safe” (#1291)
  • Java Logging: Automatically default to log4j before slf4j logging if log4j in the classpath (#1265)
  • index: no should also disable include_in_all (#1087)

New features:

  • Cluster Update Settings API (#1266)
  • Indices Stats API + indexing statistics (#1273)
  • Timestamp field support (#1285)
  • Option to use _id path to extract in place of auto-id generation (#1245)
  • Cluster / Index level allocation filtering (#1311)
  • Per document TTL support (#1316)
  • Allow to filter geo bounding box or distance based on indexed lat lon (#1334)
  • Upgrade to Lucene 3.4.0 (#1335)
  • Shard allocation awareness (rack aware, zone aware, for example) (#1352)
  • Allow to stripe the data location over multiple locations (#1356)
  • Allow to disable shard allocations (#1358)
  • Add cloud.node.auto_attributes setting, when set to true, will automatically add aws ec2 related attributes to the node (like availability zone) (#1364)
  • Index Settings: Add index.recovery.initial_shards controlling the number of shards to exists when using local gateway (#1163)
  • Indices / Node Stats: Shard level search stats (#1301)
  • Mapping: Allow to enable automatic numeric types detection new fields with a string value (#1233)
  • Node / Indices Stats: Add get stats (including missing / exists) (#1288)
  • Peer recovery: Allow to throttle recovery based on “size per sec” (#1304)
  • Query DSL:
    • custom_filters_score (#1140)
    • Allow to associate a custom cache key with a filter (#1142)

Enhancements:

  • NullPointerException for invalid faceted query (#1136)
  • Fail shard (recovery) allocation on a node when the index does not exists (#1148)
  • Improve peer recovery of index files to reduce chances of corruption (#1158)
  • Stop Token Filter – allow to set enable_position_increments (#1182)
  • warn if mlockall is not working once enabled in settings (instead of debug logging) (#1194)
  • Allow creation of empty docs (#1195)
  • Invalidate cache stats when clearing the cache (#1220)
  • Allow setting _index and _type with CouchDB river (#1219)
  • Store/index content type (#1209)
  • Improve how versioning are read to reduce (deleted) open file handles (#1230)
  • Start Elastic Node without network link (#842)
  • Geo Distance Filter Bounding Box Optimization (#1261)
  • Don’t include CLASSPATH env var in elasticsearch.bat script (#1287)
  • Support fetching _routing, _parent, _timestamp using realtime get when stored (#1289)
  • negative from parameter yields undescriptive error message (#1293)
  • Allow to configure encoder when highlighting with default and html (escape) options (#1120)
  • Support setting ctx._parent in CouchDB-River (#1300)
  • Optimizing inactive (indexing wise) shard to only happen when there are no ongoing merges (#1336)
  • Support external versioning for deletes arriving before initial update (#1351)
  • required _routing fails when path points to an integer field (#1357)
  • Remove Infinity values for Range facets when no docs match the range (#1366)
  • Add an option to disallow deleting all indices (#1367)
  • No need to reroute (check for possible shard allocations) when a new non data node is added to the cluster (#1368)
  • Upgrade to Apache Tika 0.10 (#1372)
  • Allow to specify a specific field in the clear cache API (#1374)
  • count doesn’t work for empty query (discrepancy with search API) (#1377)
  • Twitter4j needs an update (#1393)
  • When searching against an index/type, use the type information to derive different search aspects (#1391)
  • Silently discard a non-existant field if asked for and _source is not stored (#1424)
  • Highlighting broken with custom_filters_score query (#1425)
  • minimum_number_should_match in a query_string (#1420)
  • Analysis:
    • Unique token filter (#1185)
    • ‘truncate’ token filter (#1165)
    • Add a kstem name option to stemmer token filter (on top of the default kstem option) (#1196)
  • Bulk API: Properly retry execution on temporal state changes (#1343)
  • Cache Stats: Computing the filter stats using the default weighted filter cache is expensive (#1201)
  • CouchDB River: Add throttling when indexing does not keep up with fetching _changes (#1269)
  • Feature Request: Allow ES to pick up updates to logging.yml at run time (#383)
  • Geo: Automatically normalize lat/lon on search components (#1264)
  • Geo Type Mapping: Add validation options to validate lat and lon values (#1252)
  • Groovy Plugins: Upgrade to 1.8.1 (#1175)
  • HTTP: Disable automatic cookie parsing and resetting, allow to enable it (#1177)
  • Highlighting: For fast term vector highlighting, allow to control the fragment offset (#1223)
  • Http Transport: Allow to configure max_header_size, max_initial_line_length, and max_chunk_size (#1174)
  • Index Cache Stats / JVM Stats: Add a refresh_interval to control when it gets refreshed (#1200)
  • Java API: ActionFuture#actionGet to automatically unwrap failures (#1292)
  • Local Gateway: Allow to set gateway.local.initial_shards to quorum-1 (#1160)
  • Mapping:
    • Root object non ISO date formats to support timezone (#1181)
    • Renamed root object date_formats to dynamic_date_formats (old value still works) (#1183)
    • Allow to include / exclude specific parts of it when storing it (#1421)
  • More Like This API: Allow to provide search_size and search_from (#1179)
  • Multi Get: Allow to specify fields to fetch in the URI, and apply it automatically to all docs to get without explicit fields (#1281)
  • Node Stats: Certain indices level stats to retain stats even when shard relocates (#1276)
  • Queries: Optimize single clause boolean query (#1206)
  • Query DSL:
    • Allow to control how all multi term queries are rewritten (#1186)
    • ids filter/parse to automatically use types provided as part of the search (#1188)
    • custom_filters_score allow to associate boost on filter instead of script (#1204)
    • custom_filters_score – add score_mode to control filters matching scoring (#1205)
    • Indices query type (#1416)
  • REST Bulk API: Allow to execute bulk against /{index}/_bulk and /{index}/{type}/bulk endpoints (#1375)
  • Recovery Settings: Change settings (still support old settings) and allow for more dynamic settings (#1303)
  • Rest API: Add an X-Opaque-Id header, to be returned in the response if exists in the request (#1202)
  • Rivers: Close rivers early allowing them to still do index operations (#1330)
  • Scan Search: Take track_scores into account, if set, return also scores per doc when scanning (#1139)
  • Search / Get Preference: Add only_node:[nodeid] option (#1388)
  • Search API: URI request allow to additional query_string parameters (#1178)
  • Transport Client: When sniff is enabled, use the sniffed nodes to be the list fo nodes to ping as well as the provided nodes (#1217)
  • Update Settings: Allow to dynamically set index.gc_deletes setting (#1251)
  • Versioning: Delete on an already deleted document should still affect versioning (#1341)

Bug fixes:

  • mget doesn’t work with aliases (#1130)
  • Realtime Get fails when using compression (#1131)
  • IndicesExistsRequest throws IndexMissingException (#1133)
  • Java client nodes using multicast discovery connect to one another (#1135)
  • Reusing query parser in WrapperQueryParser produces invalid queries (#1143)
  • File#mkdirs gets stuck, might be concurrency issue (#1147)
  • Search / Broadcast concurrency bug can result in response corruption / errors (#1152)
  • When flushing, old transaction log is not removed (#1180)
  • Failed to load uid from the index in match_all query with parent/child and _source disabled (#1149)
  • Merge Policy type setting fails (#1190)
  • Sorting on _score in the URI format / Java API is reversed (#1191)
  • highlight.fields should accept field names with the full path (#1192)
  • Delete By Query wrongly persisted to translog (#1198)
  • Automatic index creation can still cause “index missing” failures (#1199)
  • Stored fields with multiple values might not return in search request asking for them (#1208)
  • Rare deadlock when introducing new mapping fields/objects (#1222)
  • Full field paths not respected in sort parameters (#1226)
  • Failed shard recovery can cause shard data to be deleted (replicas will still work) (#1227)
  • Java API TransportClient can fail on remote node shutdown instead of retrying the next connected node under heavy load (#1229)
  • Failure to reduce geo distance sorting (class case exception) (#1234)
  • Updating index.auto_expand_replicas might not be applied correctly (#1237)
  • Peer recovery process can sometimes not reuse the same index files allocated on a possible node (#1238)
  • Single node rolling restart into a new node can cause metadata loss (#1249)
  • dynamic templates might cause elasticsearch to keep resync mappings (#1257)
  • Query Parser caching does not take parsed query rewrite method into account (#1260)
  • Using 57744018578214912 as an id can cause failure to route to the correct shard (#1294)
  • Rapidly concurrent deleting/creating an index leaves index inconsistent (#1296)
  • Negative total cpu time reported by the node stats REST API (#1297)
  • Query with stopwords executed directly against a type fails (#1320)
  • Indexation of document causes NullPointerException (on Linux) or ES process hanging (#1325)
  • Rest Delete API does not honor the version_type parameter (#1337)
  • Even shard count distribution counts relocations as two (#1354)
  • Put mapping on a single node with new mapping will not wait for the mapping to be applied (#1355)
  • Malformed REST create index causes the index to still be created (#1359)
  • Fetch phase when searching might fail when mapping are updated with type missing (#1369)
  • When refreshing, also execute the refresh operation on initializing shards to make sure we don’t miss it (#1370)
  • Highlighting fails with NPE for multifield and number_of_fragments:0 (#1380)
  • Root mapper analyzer/index_analyzer/search_analyzer with unregistered analyzer name won’t fail (#1389)
  • Text Query does not use search_analyzer on field that is prefixed with the type name (#1390)
  • Synonym filter fails to properly load synonyms (since 0.17.7) (#1392)
  • Array out-of-bounds exception with bool filter (#1400)
  • Script sorting doesn’t accept parameters (#1382)
  • Bool Filter fails with ArrayIndexOutOfBoundsException (#1419)
  • First indexing fails when indexing a type with an attachment field mapped using a dynamic template (#1418)
  • Analyze API: Failure to read full message over the wire (#1138)
  • Bulk API: _version on delete actions is not honored (#1156)
  • CouchDB River: Custom script does not convert the modified doc properly to be indexed (#1225)
  • Exception: TokenStream implementation classes or at least their incrementToken() implementation must be final (#1397)
  • Get API:
    • Will always prefer first local execution, regardless of the preference (#1153)
    • a get for a document that does not exists can cause open file handles leak (#1167)
  • Java API: BoostingQueryBuilder does not build the query correctly (#1141)
  • Mapping: default mapping type with root level date_formats can cause recursive addition of them to the mapping (#1168)
  • Minor(?) scripting bug(?): (caching-related?) odd behavior when changing languages for the same script code (#1150)
  • Nested Mapping: Nested object with a null value causes wrong indexing structure (resulting in wrong search responses) (#1323)
  • Network: Default (back) network.tcp.connect_timeout to 30s (#1134)
  • Realtime Get: Under high concurrent indexing and immediate get, a get might be missed while flushing (#1344)
  • Scripts: arrays: “.multiValued” returns true even when “.values” fails (#1145)
  • Search: A failed search request might get overrun when trying another shard (#1403)
  • Search API: REST endpoint should use default operation_threading of thread_per_shard (#1154)
  • Thread Pool: Blocking thread pool type configuration fails (#1321)
  • Thrift Transport: Uses wrong array offset into the underlying buffer (#1232)
  • Tiered merge policy setting: max_merge_segment misnamed and should be max_merged_segment (#1280)
  • Unicast Discovery:
    • Clusters under different cluster names can cause failed discovery (#1159)
    • When providing a comma separated list of addresses, trim them from whitespaces (#1193)
  • Update Settings: Changing the number of replicas does not cause allocation / deallocation of shards (#1162)
  • XContentBuilder.field : StackOverflowError with Integer[] parameters (#1324)
  • wrong method signature: RangeFilterBuilder and NumericRangeFilterBuilder (#1244)