enrich.asciidoc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. [discrete]
  2. [[esql-enrich]]
  3. === `ENRICH`
  4. **Syntax**
  5. [source,esql]
  6. ----
  7. ENRICH policy [ON match_field] [WITH [new_name1 = ]field1, [new_name2 = ]field2, ...]
  8. ----
  9. *Parameters*
  10. `policy`::
  11. The name of the enrich policy. You need to <<esql-set-up-enrich-policy,create>>
  12. and <<esql-execute-enrich-policy,execute>> the enrich policy first.
  13. `mode`::
  14. The mode of the enrich command in cross cluster {esql}.
  15. See <<ccq-enrich, enrich across clusters>>.
  16. `match_field`::
  17. The match field. `ENRICH` uses its value to look for records in the enrich
  18. index. If not specified, the match will be performed on the column with the same
  19. name as the `match_field` defined in the <<esql-enrich-policy,enrich policy>>.
  20. `fieldX`::
  21. The enrich fields from the enrich index that are added to the result as new
  22. columns. If a column with the same name as the enrich field already exists, the
  23. existing column will be replaced by the new column. If not specified, each of
  24. the enrich fields defined in the policy is added
  25. `new_nameX`::
  26. Enables you to change the name of the column that's added for each of the enrich
  27. fields. Defaults to the enrich field name.
  28. *Description*
  29. `ENRICH` enables you to add data from existing indices as new columns using an
  30. enrich policy. Refer to <<esql-enrich-data>> for information about setting up a
  31. policy.
  32. image::images/esql/esql-enrich.png[align="center"]
  33. TIP: Before you can use `ENRICH`, you need to <<esql-set-up-enrich-policy,create
  34. and execute an enrich policy>>.
  35. *Examples*
  36. // tag::examples[]
  37. The following example uses the `languages_policy` enrich policy to add a new
  38. column for each enrich field defined in the policy. The match is performed using
  39. the `match_field` defined in the <<esql-enrich-policy,enrich policy>> and
  40. requires that the input table has a column with the same name (`language_code`
  41. in this example). `ENRICH` will look for records in the
  42. <<esql-enrich-index,enrich index>> based on the match field value.
  43. [source.merge.styled,esql]
  44. ----
  45. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich]
  46. ----
  47. [%header.monospaced.styled,format=dsv,separator=|]
  48. |===
  49. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich-result]
  50. |===
  51. To use a column with a different name than the `match_field` defined in the
  52. policy as the match field, use `ON <column-name>`:
  53. [source.merge.styled,esql]
  54. ----
  55. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_on]
  56. ----
  57. [%header.monospaced.styled,format=dsv,separator=|]
  58. |===
  59. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_on-result]
  60. |===
  61. By default, each of the enrich fields defined in the policy is added as a
  62. column. To explicitly select the enrich fields that are added, use
  63. `WITH <field1>, <field2>, ...`:
  64. [source.merge.styled,esql]
  65. ----
  66. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_with]
  67. ----
  68. [%header.monospaced.styled,format=dsv,separator=|]
  69. |===
  70. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_with-result]
  71. |===
  72. You can rename the columns that are added using `WITH new_name=<field1>`:
  73. [source.merge.styled,esql]
  74. ----
  75. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_rename]
  76. ----
  77. [%header.monospaced.styled,format=dsv,separator=|]
  78. |===
  79. include::{esql-specs}/docs-IT_tests_only.csv-spec[tag=enrich_rename-result]
  80. |===
  81. In case of name collisions, the newly created columns will override existing
  82. columns.
  83. // end::examples[]