0.18.0
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)