limitations.asciidoc 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. [role="xpack"]
  2. [[transform-limitations]]
  3. === {transform-cap} limitations
  4. [subs="attributes"]
  5. ++++
  6. <titleabbrev>Limitations</titleabbrev>
  7. ++++
  8. beta[]
  9. The following limitations and known problems apply to the {version} release of
  10. the Elastic {transform} feature:
  11. [float]
  12. [[transform-compatibility-limitations]]
  13. ==== Beta {transforms} do not have guaranteed backwards or forwards compatibility
  14. Whilst {transforms} are beta, it is not guaranteed that a {transform} created in
  15. a previous version of the {stack} will be able to start and operate in a future
  16. version. Neither can support be provided for {transform} tasks to be able to
  17. operate in a cluster with mixed node versions. Please note that the output of a
  18. {transform} is persisted to a destination index. This is a normal {es} index and
  19. is not affected by the beta status.
  20. [float]
  21. [[transform-ui-limitation]]
  22. ==== {transforms-cap} UI will not work during a rolling upgrade from 7.2
  23. If your cluster contains mixed version nodes, for example during a rolling
  24. upgrade from 7.2 to a newer version, and {transforms} have been created in 7.2,
  25. the {transforms} UI (earler {dataframe} UI) will not work. Please wait until all
  26. nodes have been upgraded to the newer version before using the {transforms} UI.
  27. [float]
  28. [[transform-rolling-upgrade-limitation]]
  29. ==== {transforms-cap} reassignment suspended during a rolling upgrade from 7.2 and 7.3
  30. If your cluster contains mixed version nodes, for example during a rolling
  31. upgrade from 7.2 or 7.3 to a newer version, {transforms} whose nodes are stopped will
  32. not be reassigned until the upgrade is complete. After the upgrade is done, {transforms}
  33. resume automatically; no action is required.
  34. [float]
  35. [[transform-datatype-limitations]]
  36. ==== {dataframe-cap} data type limitation
  37. {dataframes-cap} do not (yet) support fields containing arrays – in the UI or
  38. the API. If you try to create one, the UI will fail to show the source index
  39. table.
  40. [float]
  41. [[transform-ccs-limitations]]
  42. ==== {ccs-cap} is not supported
  43. {ccs-cap} is not supported for {transforms}.
  44. [float]
  45. [[transform-kibana-limitations]]
  46. ==== Up to 1,000 {transforms} are supported
  47. A single cluster will support up to 1,000 {transforms}. When using the
  48. {ref}/get-transform.html[GET {transforms} API] a total `count` of {transforms}
  49. is returned. Use the `size` and `from` parameters to enumerate through the full
  50. list.
  51. [float]
  52. [[transform-aggresponse-limitations]]
  53. ==== Aggregation responses may be incompatible with destination index mappings
  54. When a {transform} is first started, it will deduce the mappings
  55. required for the destination index. This process is based on the field types of
  56. the source index and the aggregations used. If the fields are derived from
  57. {ref}/search-aggregations-metrics-scripted-metric-aggregation.html[`scripted_metrics`]
  58. or {ref}/search-aggregations-pipeline-bucket-script-aggregation.html[`bucket_scripts`],
  59. {ref}/dynamic-mapping.html[dynamic mappings] will be used. In some instances the
  60. deduced mappings may be incompatible with the actual data. For example, numeric
  61. overflows might occur or dynamically mapped fields might contain both numbers
  62. and strings. Please check {es} logs if you think this may have occurred. As a
  63. workaround, you may define custom mappings prior to starting the
  64. {transform}. For example,
  65. {ref}/indices-create-index.html[create a custom destination index] or
  66. {ref}/indices-templates.html[define an index template].
  67. [float]
  68. [[transform-batch-limitations]]
  69. ==== Batch {transforms} may not account for changed documents
  70. A batch {transform} uses a
  71. {ref}/search-aggregations-bucket-composite-aggregation.html[composite aggregation]
  72. which allows efficient pagination through all buckets. Composite aggregations
  73. do not yet support a search context, therefore if the source data is changed
  74. (deleted, updated, added) while the batch {dataframe} is in progress, then the
  75. results may not include these changes.
  76. [float]
  77. [[transform-consistency-limitations]]
  78. ==== {ctransform-cap} consistency does not account for deleted or updated documents
  79. While the process for {transforms} allows the continual recalculation of the
  80. {transform} as new data is being ingested, it does also have some limitations.
  81. Changed entities will only be identified if their time field has also been
  82. updated and falls within the range of the action to check for changes. This has
  83. been designed in principle for, and is suited to, the use case where new data is
  84. given a timestamp for the time of ingest.
  85. If the indices that fall within the scope of the source index pattern are
  86. removed, for example when deleting historical time-based indices, then the
  87. composite aggregation performed in consecutive checkpoint processing will search
  88. over different source data, and entities that only existed in the deleted index
  89. will not be removed from the {dataframe} destination index.
  90. Depending on your use case, you may wish to recreate the {transform} entirely
  91. after deletions. Alternatively, if your use case is tolerant to historical
  92. archiving, you may wish to include a max ingest timestamp in your aggregation.
  93. This will allow you to exclude results that have not been recently updated when
  94. viewing the destination index.
  95. [float]
  96. [[transform-deletion-limitations]]
  97. ==== Deleting a {transform} does not delete the destination index or {kib} index pattern
  98. When deleting a {transform} using `DELETE _transform/index`
  99. neither the destination index nor the {kib} index pattern, should one have been
  100. created, are deleted. These objects must be deleted separately.
  101. [float]
  102. [[transform-aggregation-page-limitations]]
  103. ==== Handling dynamic adjustment of aggregation page size
  104. During the development of {transforms}, control was favoured over performance.
  105. In the design considerations, it is preferred for the {transform} to take longer
  106. to complete quietly in the background rather than to finish quickly and take
  107. precedence in resource consumption.
  108. Composite aggregations are well suited for high cardinality data enabling
  109. pagination through results. If a {ref}/circuit-breaker.html[circuit breaker]
  110. memory exception occurs when performing the composite aggregated search then we
  111. try again reducing the number of buckets requested. This circuit breaker is
  112. calculated based upon all activity within the cluster, not just activity from
  113. {transforms}, so it therefore may only be a temporary resource
  114. availability issue.
  115. For a batch {transform}, the number of buckets requested is only ever adjusted
  116. downwards. The lowering of value may result in a longer duration for the
  117. {transform} checkpoint to complete. For {ctransforms}, the number of buckets
  118. requested is reset back to its default at the start of every checkpoint and it
  119. is possible for circuit breaker exceptions to occur repeatedly in the {es} logs.
  120. The {transform} retrieves data in batches which means it calculates several
  121. buckets at once. Per default this is 500 buckets per search/index operation. The
  122. default can be changed using `max_page_search_size` and the minimum value is 10.
  123. If failures still occur once the number of buckets requested has been reduced to
  124. its minimum, then the {transform} will be set to a failed state.
  125. [float]
  126. [[transform-dynamic-adjustments-limitations]]
  127. ==== Handling dynamic adjustments for many terms
  128. For each checkpoint, entities are identified that have changed since the last
  129. time the check was performed. This list of changed entities is supplied as a
  130. {ref}/query-dsl-terms-query.html[terms query] to the {transform} composite
  131. aggregation, one page at a time. Then updates are applied to the destination
  132. index for each page of entities.
  133. The page `size` is defined by `max_page_search_size` which is also used to
  134. define the number of buckets returned by the composite aggregation search. The
  135. default value is 500, the minimum is 10.
  136. The index setting
  137. {ref}/index-modules.html#dynamic-index-settings[`index.max_terms_count`] defines
  138. the maximum number of terms that can be used in a terms query. The default value
  139. is 65536. If `max_page_search_size` exceeds `index.max_terms_count` the
  140. {transform} will fail.
  141. Using smaller values for `max_page_search_size` may result in a longer duration
  142. for the {transform} checkpoint to complete.
  143. [float]
  144. [[transform-scheduling-limitations]]
  145. ==== {ctransform-cap} scheduling limitations
  146. A {ctransform} periodically checks for changes to source data. The functionality
  147. of the scheduler is currently limited to a basic periodic timer which can be
  148. within the `frequency` range from 1s to 1h. The default is 1m. This is designed
  149. to run little and often. When choosing a `frequency` for this timer consider
  150. your ingest rate along with the impact that the {transform}
  151. search/index operations has other users in your cluster. Also note that retries
  152. occur at `frequency` interval.
  153. [float]
  154. [[transform-failed-limitations]]
  155. ==== Handling of failed {transforms}
  156. Failed {transforms} remain as a persistent task and should be handled
  157. appropriately, either by deleting it or by resolving the root cause of the
  158. failure and re-starting.
  159. When using the API to delete a failed {transform}, first stop it using
  160. `_stop?force=true`, then delete it.
  161. [float]
  162. [[transform-availability-limitations]]
  163. ==== {ctransforms-cap} may give incorrect results if documents are not yet available to search
  164. After a document is indexed, there is a very small delay until it is available
  165. to search.
  166. A {ctransform} periodically checks for changed entities between the time since
  167. it last checked and `now` minus `sync.time.delay`. This time window moves
  168. without overlapping. If the timestamp of a recently indexed document falls
  169. within this time window but this document is not yet available to search then
  170. this entity will not be updated.
  171. If using a `sync.time.field` that represents the data ingest time and using a
  172. zero second or very small `sync.time.delay`, then it is more likely that this
  173. issue will occur.