script-query.asciidoc 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. [[query-dsl-script-query]]
  2. === Script query
  3. ++++
  4. <titleabbrev>Script</titleabbrev>
  5. ++++
  6. Filters documents based on a provided <<modules-scripting-using,script>>. The
  7. `script` query is typically used in a <<query-filter-context,filter context>>.
  8. WARNING: Using scripts can result in slower search speeds. See
  9. <<scripts-and-search-speed>>.
  10. [[script-query-ex-request]]
  11. ==== Example request
  12. [source,console]
  13. ----
  14. GET /_search
  15. {
  16. "query": {
  17. "bool": {
  18. "filter": {
  19. "script": {
  20. "script": {
  21. "source": "doc['num1'].value > 1",
  22. "lang": "painless"
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }
  29. ----
  30. [[script-top-level-params]]
  31. ==== Top-level parameters for `script`
  32. `script`::
  33. (Required, <<modules-scripting-using, script object>>) Contains a script to run
  34. as a query. This script must return a boolean value, `true` or `false`.
  35. [[script-query-notes]]
  36. ==== Notes
  37. [[script-query-custom-params]]
  38. ===== Custom Parameters
  39. Like <<query-filter-context,filters>>, scripts are cached for faster execution.
  40. If you frequently change the arguments of a script, we recommend you store them
  41. in the script's `params` parameter. For example:
  42. [source,console]
  43. ----
  44. GET /_search
  45. {
  46. "query": {
  47. "bool": {
  48. "filter": {
  49. "script": {
  50. "script": {
  51. "source": "doc['num1'].value > params.param1",
  52. "lang": "painless",
  53. "params": {
  54. "param1": 5
  55. }
  56. }
  57. }
  58. }
  59. }
  60. }
  61. }
  62. ----
  63. ===== Allow expensive queries
  64. Script queries will not be executed if <<query-dsl-allow-expensive-queries, `search.allow_expensive_queries`>>
  65. is set to false.