wupengfei 2 năm trước cách đây
mục cha
commit
2d9be661da
100 tập tin đã thay đổi với 5123 bổ sung12 xóa
  1. 2 0
      .idea/gaoyixia.iml
  2. 2 0
      .idea/php.xml
  3. 499 11
      .idea/workspace.xml
  4. 8 1
      application/common/service/Elastic.php
  5. 72 0
      vendor/elastic/transport/CHANGELOG.md
  6. 19 0
      vendor/elastic/transport/LICENSE
  7. 258 0
      vendor/elastic/transport/README.md
  8. 47 0
      vendor/elastic/transport/composer.json
  9. 26 0
      vendor/elastic/transport/src/Async/OnFailureDefault.php
  10. 24 0
      vendor/elastic/transport/src/Async/OnFailureInterface.php
  11. 25 0
      vendor/elastic/transport/src/Async/OnSuccessDefault.php
  12. 25 0
      vendor/elastic/transport/src/Async/OnSuccessInterface.php
  13. 22 0
      vendor/elastic/transport/src/Exception/CloudIdParseException.php
  14. 22 0
      vendor/elastic/transport/src/Exception/InvalidArgumentException.php
  15. 22 0
      vendor/elastic/transport/src/Exception/InvalidArrayException.php
  16. 22 0
      vendor/elastic/transport/src/Exception/InvalidIterableException.php
  17. 22 0
      vendor/elastic/transport/src/Exception/InvalidJsonException.php
  18. 22 0
      vendor/elastic/transport/src/Exception/InvalidXmlException.php
  19. 22 0
      vendor/elastic/transport/src/Exception/NoAsyncClientException.php
  20. 22 0
      vendor/elastic/transport/src/Exception/NoNodeAvailableException.php
  21. 22 0
      vendor/elastic/transport/src/Exception/NotFoundException.php
  22. 22 0
      vendor/elastic/transport/src/Exception/RuntimeException.php
  23. 22 0
      vendor/elastic/transport/src/Exception/SerializeException.php
  24. 22 0
      vendor/elastic/transport/src/Exception/TransportException.php
  25. 22 0
      vendor/elastic/transport/src/Exception/UndefinedPropertyException.php
  26. 22 0
      vendor/elastic/transport/src/Exception/UnknownContentTypeException.php
  27. 50 0
      vendor/elastic/transport/src/NodePool/Node.php
  28. 25 0
      vendor/elastic/transport/src/NodePool/NodePoolInterface.php
  29. 55 0
      vendor/elastic/transport/src/NodePool/Resurrect/ElasticsearchResurrect.php
  30. 28 0
      vendor/elastic/transport/src/NodePool/Resurrect/NoResurrect.php
  31. 23 0
      vendor/elastic/transport/src/NodePool/Resurrect/ResurrectInterface.php
  32. 40 0
      vendor/elastic/transport/src/NodePool/Selector/RoundRobin.php
  33. 32 0
      vendor/elastic/transport/src/NodePool/Selector/SelectorInterface.php
  34. 41 0
      vendor/elastic/transport/src/NodePool/Selector/SelectorTrait.php
  35. 82 0
      vendor/elastic/transport/src/NodePool/SimpleNodePool.php
  36. 62 0
      vendor/elastic/transport/src/Serializer/CsvSerializer.php
  37. 79 0
      vendor/elastic/transport/src/Serializer/JsonSerializer.php
  38. 75 0
      vendor/elastic/transport/src/Serializer/NDJsonSerializer.php
  39. 32 0
      vendor/elastic/transport/src/Serializer/SerializerInterface.php
  40. 43 0
      vendor/elastic/transport/src/Serializer/TextSerializer.php
  41. 54 0
      vendor/elastic/transport/src/Serializer/Utility.php
  42. 56 0
      vendor/elastic/transport/src/Serializer/XmlSerializer.php
  43. 445 0
      vendor/elastic/transport/src/Transport.php
  44. 132 0
      vendor/elastic/transport/src/TransportBuilder.php
  45. 87 0
      vendor/elasticsearch/elasticsearch/BREAKING_CHANGES.md
  46. 484 0
      vendor/elasticsearch/elasticsearch/CHANGELOG.md
  47. 19 0
      vendor/elasticsearch/elasticsearch/LICENSE
  48. 414 0
      vendor/elasticsearch/elasticsearch/README.md
  49. 52 0
      vendor/elasticsearch/elasticsearch/composer.json
  50. 49 0
      vendor/elasticsearch/elasticsearch/docs/breaking-changes.asciidoc
  51. 41 0
      vendor/elasticsearch/elasticsearch/docs/config-hash.asciidoc
  52. 39 0
      vendor/elasticsearch/elasticsearch/docs/configuration.asciidoc
  53. 109 0
      vendor/elasticsearch/elasticsearch/docs/connecting.asciidoc
  54. 257 0
      vendor/elasticsearch/elasticsearch/docs/crud.asciidoc
  55. 13 0
      vendor/elasticsearch/elasticsearch/docs/examples/014b788c879e4aaa1020672e45e25473.asciidoc
  56. 16 0
      vendor/elasticsearch/elasticsearch/docs/examples/015294a400986295039e52ebc62033be.asciidoc
  57. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/025b54db0edc50c24ea48a2bd94366ad.asciidoc
  58. 41 0
      vendor/elasticsearch/elasticsearch/docs/examples/028f6d6ac2594e20b78b8a8f8cbad49d.asciidoc
  59. 20 0
      vendor/elasticsearch/elasticsearch/docs/examples/033778305d52746f5ce0a2a922c8e521.asciidoc
  60. 21 0
      vendor/elasticsearch/elasticsearch/docs/examples/047266b0d20fdb62ebc72d51952c8f6d.asciidoc
  61. 15 0
      vendor/elasticsearch/elasticsearch/docs/examples/048d8abd42d094bbdcf4452a58ccb35b.asciidoc
  62. 6 0
      vendor/elasticsearch/elasticsearch/docs/examples/04f5dd677c777bcb15d7d5fa63275fc8.asciidoc
  63. 28 0
      vendor/elasticsearch/elasticsearch/docs/examples/04fe1e3a0047b0cdb10987b79fc3f3f3.asciidoc
  64. 46 0
      vendor/elasticsearch/elasticsearch/docs/examples/06afce2955f9094d96d27067ebca32e8.asciidoc
  65. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/073539a7e38be3cdf13008330b6a536a.asciidoc
  66. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/0989cc65d8924f666ce3eb0820d2d244.asciidoc
  67. 14 0
      vendor/elasticsearch/elasticsearch/docs/examples/09d617863a103c82fb4101e6165ea7fe.asciidoc
  68. 6 0
      vendor/elasticsearch/elasticsearch/docs/examples/09dbd90c5e22ea4a17b4cf9aa72e08ae.asciidoc
  69. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/09ecba5814d71e4c44468575eada9878.asciidoc
  70. 22 0
      vendor/elasticsearch/elasticsearch/docs/examples/0a958e486ede3f519d48431ab689eded.asciidoc
  71. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/0ac9916f47a2483b89c1416684af322a.asciidoc
  72. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/0afaf1cad692e6201aa574c8feb6e622.asciidoc
  73. 16 0
      vendor/elasticsearch/elasticsearch/docs/examples/0ba0b2db24852abccb7c0fc1098d566e.asciidoc
  74. 20 0
      vendor/elasticsearch/elasticsearch/docs/examples/0bbd30b9be3e54ff3028b9f4459634d2.asciidoc
  75. 37 0
      vendor/elasticsearch/elasticsearch/docs/examples/0bd3923424a20a4ba860b0774b9991b1.asciidoc
  76. 14 0
      vendor/elasticsearch/elasticsearch/docs/examples/0be2c28ee65384774b1e479b47dc3d92.asciidoc
  77. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/0c4ad860a485fe53d8140ad3ccd11dcf.asciidoc
  78. 16 0
      vendor/elasticsearch/elasticsearch/docs/examples/0cc991e3f7f8511a34730e154b3c5edc.asciidoc
  79. 16 0
      vendor/elasticsearch/elasticsearch/docs/examples/0ce3606f1dba490eef83c4317b315b62.asciidoc
  80. 31 0
      vendor/elasticsearch/elasticsearch/docs/examples/0d664883151008b1051ef2c9ab2d0373.asciidoc
  81. 20 0
      vendor/elasticsearch/elasticsearch/docs/examples/0e118857b815b62118a30c042f079db1.asciidoc
  82. 35 0
      vendor/elasticsearch/elasticsearch/docs/examples/1027ab1ca767ac1428176ef4f84bfbcf.asciidoc
  83. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/1216f8f7367df3aa823012cef310c08a.asciidoc
  84. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/12433d2b637d002e8d5c9a1adce69d3b.asciidoc
  85. 6 0
      vendor/elasticsearch/elasticsearch/docs/examples/1252fa45847edba5ec2b2f33da70ec5b.asciidoc
  86. 10 0
      vendor/elasticsearch/elasticsearch/docs/examples/138ccd89f72aa7502dd9578403dcc589.asciidoc
  87. 18 0
      vendor/elasticsearch/elasticsearch/docs/examples/14701dcc0cca9665fce2aace0cb62af7.asciidoc
  88. 14 0
      vendor/elasticsearch/elasticsearch/docs/examples/1577e6e806b3283c9e99f1596d310754.asciidoc
  89. 27 0
      vendor/elasticsearch/elasticsearch/docs/examples/15dad5338065baaaa7d475abe85f4c22.asciidoc
  90. 19 0
      vendor/elasticsearch/elasticsearch/docs/examples/162b5b693b713f0bfab1209d59443c46.asciidoc
  91. 22 0
      vendor/elasticsearch/elasticsearch/docs/examples/179f0a3e84ff4bbac18787a018eabf89.asciidoc
  92. 17 0
      vendor/elasticsearch/elasticsearch/docs/examples/17de0020b228df961ad3c6b06233c948.asciidoc
  93. 18 0
      vendor/elasticsearch/elasticsearch/docs/examples/189a921df2f5b1fe580937210ce9c1c2.asciidoc
  94. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/18ddb7e7a4bcafd449df956e828ed7a8.asciidoc
  95. 41 0
      vendor/elasticsearch/elasticsearch/docs/examples/1aa91d3d48140d6367b6cabca8737b8f.asciidoc
  96. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/1b542e3ea87a742f95641d64dcfb1bdb.asciidoc
  97. 35 0
      vendor/elasticsearch/elasticsearch/docs/examples/1b8655e6ba99fe39933c6eafe78728b7.asciidoc
  98. 31 0
      vendor/elasticsearch/elasticsearch/docs/examples/1b8caf0a6741126c6d0ad83b56fce290.asciidoc
  99. 24 0
      vendor/elasticsearch/elasticsearch/docs/examples/1bc731a4df952228af6dfa6b48627332.asciidoc
  100. 9 0
      vendor/elasticsearch/elasticsearch/docs/examples/1c23507edd7a3c18538b68223378e4ab.asciidoc

+ 2 - 0
.idea/gaoyixia.iml

@@ -20,6 +20,8 @@
       <excludeFolder url="file://$MODULE_DIR$/vendor/alibabacloud/vod-20170321" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/aop/request" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/aop/test" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/elastic/transport" />
+      <excludeFolder url="file://$MODULE_DIR$/vendor/elasticsearch/elasticsearch" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/jpush/jpush" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/lizhichao/one-sm" />
       <excludeFolder url="file://$MODULE_DIR$/vendor/maniac/easemob-php" />

+ 2 - 0
.idea/php.xml

@@ -87,6 +87,8 @@
       <path value="$PROJECT_DIR$/vendor/alibabacloud/opensearch-sdk-php" />
       <path value="$PROJECT_DIR$/vendor/alibabacloud/opensearch" />
       <path value="$PROJECT_DIR$/vendor/alibabacloud/elasticsearch-20170613" />
+      <path value="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch" />
+      <path value="$PROJECT_DIR$/vendor/elastic/transport" />
     </include_path>
   </component>
 </project>

+ 499 - 11
.idea/workspace.xml

@@ -2,9 +2,495 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="1a36929e-c054-4875-a943-593a74e55fa4" name="Default Changelist" comment="">
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/CHANGELOG.md" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/LICENSE" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/README.md" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/composer.json" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Async/OnFailureDefault.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Async/OnFailureInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Async/OnSuccessDefault.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Async/OnSuccessInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/CloudIdParseException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/InvalidArgumentException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/InvalidArrayException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/InvalidIterableException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/InvalidJsonException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/InvalidXmlException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/NoAsyncClientException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/NoNodeAvailableException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/NotFoundException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/RuntimeException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/SerializeException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/TransportException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/UndefinedPropertyException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Exception/UnknownContentTypeException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Node.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/NodePoolInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Resurrect/ElasticsearchResurrect.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Resurrect/NoResurrect.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Resurrect/ResurrectInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Selector/RoundRobin.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Selector/SelectorInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/Selector/SelectorTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/NodePool/SimpleNodePool.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/CsvSerializer.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/JsonSerializer.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/NDJsonSerializer.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/SerializerInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/TextSerializer.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/Utility.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Serializer/XmlSerializer.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/Transport.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elastic/transport/src/TransportBuilder.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/BREAKING_CHANGES.md" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/CHANGELOG.md" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/LICENSE" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/README.md" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/composer.json" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/breaking-changes.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/config-hash.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/configuration.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/connecting.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/crud.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/014b788c879e4aaa1020672e45e25473.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/015294a400986295039e52ebc62033be.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/025b54db0edc50c24ea48a2bd94366ad.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/028f6d6ac2594e20b78b8a8f8cbad49d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/033778305d52746f5ce0a2a922c8e521.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/047266b0d20fdb62ebc72d51952c8f6d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/048d8abd42d094bbdcf4452a58ccb35b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/04f5dd677c777bcb15d7d5fa63275fc8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/04fe1e3a0047b0cdb10987b79fc3f3f3.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/06afce2955f9094d96d27067ebca32e8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/073539a7e38be3cdf13008330b6a536a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0989cc65d8924f666ce3eb0820d2d244.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/09d617863a103c82fb4101e6165ea7fe.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/09dbd90c5e22ea4a17b4cf9aa72e08ae.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/09ecba5814d71e4c44468575eada9878.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0a958e486ede3f519d48431ab689eded.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0ac9916f47a2483b89c1416684af322a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0afaf1cad692e6201aa574c8feb6e622.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0ba0b2db24852abccb7c0fc1098d566e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0bbd30b9be3e54ff3028b9f4459634d2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0bd3923424a20a4ba860b0774b9991b1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0be2c28ee65384774b1e479b47dc3d92.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0c4ad860a485fe53d8140ad3ccd11dcf.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0cc991e3f7f8511a34730e154b3c5edc.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0ce3606f1dba490eef83c4317b315b62.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0d664883151008b1051ef2c9ab2d0373.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/0e118857b815b62118a30c042f079db1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1027ab1ca767ac1428176ef4f84bfbcf.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1216f8f7367df3aa823012cef310c08a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/12433d2b637d002e8d5c9a1adce69d3b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1252fa45847edba5ec2b2f33da70ec5b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/138ccd89f72aa7502dd9578403dcc589.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/14701dcc0cca9665fce2aace0cb62af7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1577e6e806b3283c9e99f1596d310754.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/15dad5338065baaaa7d475abe85f4c22.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/162b5b693b713f0bfab1209d59443c46.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/179f0a3e84ff4bbac18787a018eabf89.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/17de0020b228df961ad3c6b06233c948.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/189a921df2f5b1fe580937210ce9c1c2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/18ddb7e7a4bcafd449df956e828ed7a8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1aa91d3d48140d6367b6cabca8737b8f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1b542e3ea87a742f95641d64dcfb1bdb.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1b8655e6ba99fe39933c6eafe78728b7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1b8caf0a6741126c6d0ad83b56fce290.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1bc731a4df952228af6dfa6b48627332.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1c23507edd7a3c18538b68223378e4ab.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1d65cb6d055c46a1bde809687d835b71.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1da77e114459e0b77d78a3dcc8fae429.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1dbb8cf17fbc45c87c7d2f75f15f9778.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1e18a67caf8f06ff2710ec4a8b30f625.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1e49eba5b9042c1900a608fe5105ba43.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1e50d993bd6517e6c381e82d09f0389e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1f336ecc62480c1d56351cc2f82d0d08.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/1f6fe6833686e38c3711c6f2aa00a078.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/210cf5c76bff517f48e80fa1c2d63907.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/213ab768f1b6a895e09403a0880e259a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/216848930c2d344fe0bed0daa70c35b9.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/22334f4b24bb8977d3e1bf2ffdc29d3f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/231aa0bb39c35fe199d28fe0e4a62b2e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/23ab0f1023b1b2cd5cdf2a8f9ccfd57b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2468ab381257d759d8a88af1141f6f9c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/251ea12c1248385ab409906ac64d9ee9.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2533e4b36ae837eaecda08407ecb6383.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2891aa10ee9d474780adf94d5607f2db.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/28aad2c5942bfb221c2bf1bbdc01658e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2a1de18774f9c68cafa169847832b2bc.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2bb2339ac055337abf753bddb7771659.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2fd69fb0538e4f36ac69a8b8f8bf5ae8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/2fe28d9a91b3081a9ec4601af8fb7b1c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/311c4b632a29b9ead63b02d01f10096b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3342c69b2c2303247217532956fcce85.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/33f148e3d8676de6cc52f58749898a13.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/34efeade38445b2834749ced59782e25.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/35e8da9410b8432cf4095f2541ad7b1d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3653567181f43a5f64c74f934aa821c2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/36818c6d9f434d387819c30bd9addb14.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/36b2778f23d0955255f52c075c4d213d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3722cb3705b6bc7f486969deace3dd83.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/381fced1882ca8337143e6bb180a5715.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/38c1d0f6668e9563c0827f839f9fa505.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/39a6a038c4b551022afe83de0523634e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3a700f836d8d5da1b656a876554028aa.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3ae03ba3b56e5e287953094050766738.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3b04cc894e6a47d57983484010feac0c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3cd50a789b8e1f0ebbbc53a8d7ecf656.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3d1ff6097e2359f927c88c2ccdb36252.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3e573bfabe00f8bfb8bb69aa5820768e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/3f3b3e207f79303ce6f86e03e928e062.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/400e89eb46ead8e9c9e40f123fd5e590.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/42744a175125df5be0ef77413bf8f608.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/427f6b5c5376cbf0f71f242a60ca3d9e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/43af86de5e49aa06070092fffc138208.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4646764bf09911fee7d58630c72d3137.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/46658f00edc4865dfe472a392374cd0f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/46c4b0dfb674825f9579203d41e7f404.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/47b5ff897f26e9c943cee5c06034181d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/47bb632c6091ad0cd94bc660bdd309a5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4acf902c2598b2558f34f20c1744c433.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4b90feb9d5d3dbfce424dac0341320b7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4cd246e5c4c035a2cd4081ae9a3d54e5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4d46dbb96125b27f46299547de9d8709.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4d56b179242fed59e3d6476f817b6055.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/4d6997c70a1851f9151443c0d38b532e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5043b83a89091fa00edb341ddf7ba370.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/506844befdc5691d835771bcbb1c1a60.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5271f4ff29bb48838396e5a674664ee0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/527324766814561b75aaee853ede49a7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5275842787967b6db876025f4a1c6942.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/52a87b81e4e0b6b11e23e85db1602a63.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/52b2bfbdd78f8283b6f4891c48013237.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/52c7e4172a446c394210a07c464c57d2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/53b908c3432118c5a6e460f74d32006b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/53d938c754f36a912fcbe6473abb463f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/54092c8c646133f5dbbc047990dd458d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/54a770f053f3225ea0d1e34334232411.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/58b5003c0a53a39bf509aa3797aad471.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/58df61acbfb15b8ef0aaa18b81ae98a6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5925c23a173a63bdb30b458248d1df76.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5b7d6f1db88ca6f42c48fa3dbb4341e8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5be23858b35043fcb7b50fe36b873e6e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5c2f486c27bd5346e512265f93375d16.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5d32279dcd52b22d9e1178a02a3ad957.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5d9d7b84e2fec7ecd832145cbb951cf1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5da6efd5b038ada64c9e853c88c1ec47.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5dd695679b5141d9142d3d30ba8d300a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5eabcdbf61bfcb484dc694f25c2bba36.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5f210f74725ea0c9265190346edfa246.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5f3549ac7fee94682ca0d7439eebdd2a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/5f3a3eefeefe6fa85ec49d499212d245.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/609260ad1d5998be2ca09ff1fe237efa.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/60ee33f3acfdd0fe6f288ac77312c780.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6138d6919f3cbaaf61e1092f817d295c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/618d5f3d35921d8cb7e9ccfbe9a4c3e3.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/621665fdbd7fc103c09bfeed28b67b1a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/625dc94df1f9affb49a082fd99d41620.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/626f8c4b3e2cd3d9beaa63a7f5799d7a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/645136747d37368a14ab34de8bd046c6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/645796e8047967ca4a7635a22a876f4c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/645c4c6e209719d3a4d25b1a629cb23b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6464124d1677f4552ddddd95a340ca3a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/64b9baa6d7556b960b29698f3383aa31.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6799d132c1c7ca3970763acde2337ef9.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/67bba546d835bca8f31df13e3587c348.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/67ceac4bf2d9ac7cc500390544cdcb41.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/68721288dc9ad8aa1b55099b4d303051.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/68738b4fd0dda177022be45be95b4c84.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/69a7be47f85138b10437113ab2f0d72d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6a1702dd50690cae833572e48a0ddf25.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6a4679531e64c492fce16dc12de6dcb0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6a81d00f0d73bc5985e76b3cadab645e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6bbc613bd4f9aec1bbdbabf5db021d28.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6be70810d6ebd6f09d8a49f9df847765.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6bf63f2ec6ba55fcaf1092f48212bf25.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6d1e75312a28a5ba23837abf768f2510.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6f097c298a7abf4c032c4314920c49c8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6f21a878fee3b43c5332b81aaddbeac7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/6faf10a73f7d5fffbcb037bdb2cbaff8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/70f0aa5853697e265ef3b1df72940951.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/710c7871f20f176d51209b1574b0d61b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/71b5b2ba9557d0f296ff2de91727d2f6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/71ba9033107882f61cdc3b32fc73568d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/72231b7debac60c95b9869a97dafda3a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/72beebe779a258c225dee7b023e60c52.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/734c2e2a1e45b84f1e4e65b51356fcd7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/73e5c88ad1488b213fb278ee1cb42289.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/745f9b8cdb8e91073f6e520e1d9f8c05.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7477671958734843dd67cf0b8e6c7515.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/75330ec1305d2beb0e2f34d2195464e2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/764f9884b370cbdc82a1c5c42ed40ff3.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/77243bbf92f2a55e0fca6c2a349a1c15.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/774d715155cd13713e6e327adf6ce328.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/78c96113ae4ed0054e581b17542528a7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7b908b1189f076942de8cd497ff1fa59.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7cac05cb589f1614fd5b8589153bef06.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7cf71671859be7c1ecf673396db377cd.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7df191cc7f814e410a4ac7261065e6ef.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7e52bec09624cf6c0de5d13f2bfad5a5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7f28f8ae8fcdbd807dadde0b5b007a6d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7f465b7e8ed42df6c42251b4481e699e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7f56755fb6c42f7e6203339a6d0cb6e6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/7f697eb436dfa3c30dfe610d8c32d132.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/804a97ff4d0613e6568e4efb19c52021.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/81c9aa2678d6166a9662ddf2c011a6a5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/83f95657beca9bf5d8264c80c7fb463f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8653e76676de5d327201b77512afa3a0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/873fbbc6ab81409058591385fd602736.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8871b8fcb6de4f0c7dff22798fb10fb7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/899eef71a67a1b2aa11a2166ec7f48f1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/89a8ac1509936acc272fc2d72907bc45.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8a355eb25d2a01ba62dc1a22dd46f46f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8acc1d67b152e7027e0f0e1a8b4b2431.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8baccd8688a6bad1749b8935f9601ea4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8c5977410335d58217e0626618ce6641.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8cd00a3aba7c3c158277bc032aac2830.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8d9a63d7c31f08bd27d92ece3de1649c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8dcc74dc01f26e853e3b3dfa458b1ad7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8de3206f80e18185a5ad6481f4c2ee07.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8e6bfb4441ffa15c86d5dc20fa083571.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8eaf4d5dd4ab1335deefa7749fdbbcc3.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8f0511f8a5cb176ff2afdd4311799a33.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/8fdf2344c4fb3de6902ad7c5735270df.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/913770050ebbf3b9b549a899bc11060a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/93f1bdd72e79827dcf9a34efa02fd977.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/9524a9b7373fa4eb2905183b0e806962.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/96de5703ba0bd43fd4ac239ec5408542.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/973a3ff47fc4ce036ecd9bd363fef9f7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/978088f989d45dd09339582e9cbc60e0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/979d25dff2d8987119410291ad47b0d1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/97babc8d19ef0866774576716eb6d19e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/98234499cfec70487cec5d013e976a84.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/98aeb275f829b5f7b8eb2147701565ff.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/98b121bf47cebd85671a2cb519688d28.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/98f14fddddea54a7d6149ab7b92e099d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/99a52be903945b17e734a1d02a57e958.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/9a4d5e41c52c20635d1fd9c6e13f6c7a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/9a8995fd31351045d99c78e40444c8ea.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/9e56d79ad9a02b642c361f0b85dd95d7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/9efac5b23bf23de8d81a7455905e2979.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a116949e446f34dc25ae57d4b703d0c1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a1db5c822745fe167e9ef854dca3d129.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a2a25aad1fea9a541b52ac613c78fb64.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a34d70d7022eb4ba48909d440c80390f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a42f33e15b0995bb4b6058659bfdea85.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a49169b4622918992411fab4ec48191b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a4a396cd07657b3977713fb3a742c41b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a5a7050fb9dcb9574e081957ade28617.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a6f8636b03cc5f677b7d89e750328612.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a71c438cc4df1cafe3109ccff475afdb.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a7c15fe6b5779c84ce9a34bf4b2a7ab7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a80f5db4357bb25b8704d374c18318ed.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/a8fba09a46b2c3524428aa3259b7124f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/aa6bfe54e2436eb668091fe31c2fbf4d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/abd4fc3ce7784413a56fe2dcfe2809b5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/abf329ebefaf58acd4ee30e685731499.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ac544eb247a29ca42aab13826ca88561.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ad0dcbc7fc619e952c8825b8f307b7b2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ad6ea0c1e46712aa1fd6d3bfa0ec979e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ad79228630684d950fe9792a768d24c5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ae9b5fbd42af2386ffbf56ad4a697e51.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ae9ccfaa146731ab9176df90670db1c2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/af3fb9fa5691a7b37a6dc2a69ff66e64.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/afc29b61c532cf683f749baf013e7bfe.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b02e4907c9936c1adc16ccce9d49900d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b0d64d0a554549e5b2808002a0725493.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b0eaf67e5cce24ef8889bf20951ccec1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b0ec418bf416c62bed602b0a32a6d5f5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b1efa1c51a34dd5ab5511b71a399f5b1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b214942b938e47f2c486e523546cb574.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b41dce56b0e640d32b1cf452f87cec17.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b4392116f2cc57ce8064ccbad30318d5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b4a0d0ed512dffc10ee53bca2feca49b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b68c85fe1b0d2f264dc0d1cbf530f319.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b789292f9cf63ce912e058c46d90ce20.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b918d6b798da673a33e49b94f61dcdc0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b919f88e6f47a40d5793479440a90ba6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b93ed4ef309819734f0eeea82e8b0f1f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b94cee0f74f57742b3948f9b784dfdd4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b997885974522ef439d5e345924cc5ba.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b9a153725b28fdd0a5aabd7f17a8c2d7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/b9c5d7ca6ca9c6f747201f45337a4abf.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ba0b4081c98f3387f76b77847c52ee9a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bb143628fd04070683eeeadc9406d9cc.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bc1ad5cc6d3eab98e3ce01f209ba7094.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bd5918ab903c0889bb1f09c8c2466e43.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bdb30dd52d32f50994008f4f9c0da5f0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/be1bd47393646ac6bbee177d1cdb7738.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/be3a6431d01846950dc1a39a7a6a1faa.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/be8f28f31207b173de61be032fcf239c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bfcd65ab85d684d36a8550080032958d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/bfdad8a928ea30d7cf60d0a0a6bc6e2e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c22b72c4a52ee098331b3f252c22860d.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c2c21e2824fbf6b7198ede30419da82b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c32a3f8071d87f0a3f5a78e07fe7a669.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c48264ec5d9b9679fddd72e5c44425b9.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c4b278ba293abd0d02a0b5ad1a99f84a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c5e5873783246c7b1c01d8464fed72c4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c612d93e7f682a0d731e385edf9f5d56.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/c849c6c8f8659dbb93e1c14356f74e37.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cb01106bf524df5e0501d4c655c1aa7b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cd247f267968aa0927bfdad56852f8f5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cd5bc5bf7cd58d7b1492c9c298b345f6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cde4dddae5c06e7f1d38c9d933dbc7ac.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cdedd5f33f7e5f7acde561e97bff61de.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cf02e3d8b371bd59f0224967c36330da.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cfbaea6f0df045c5d940bbb6a9c69cd8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/cfc37446bd892d1ac42a3c8e8b204e6c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d0a8a938a2fa913b6fdbc871079a59dd.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d17269bb80fb63ec0bf37d219e003dcb.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d1b3b7d2bb2ab90d15fd10318abd24db.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d1bcf2eb63a462bfdcf01a68e68d5b4a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d222c6a6ec7a3beca6c97011b0874512.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d3016e4e8025362ad9a05ee86bb2061f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d3088d5fa59b3ab110f64fb4f9b0065c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d31062ff8c015387889fed4ad86fd914.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d4b4cefba4318caeba7480187faf2b13.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d50a3c64890f88af32c6d4ef4899d82a.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d5dcddc6398b473b6ad9bce5c6adf986.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d718b63cf1b6591a1d59a0cf4fd995eb.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d8b115341da772a628a024e7d1644e73.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d8b2a88b5eca99d3691ad3cd40266736.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d90a84a24a407731dfc1929ac8327746.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/d9474f66970c6955e24b17c7447e7b5f.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/db6cba451ba562abe953d09ad80cc15c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/dc15e2373e5ecbe09b4ea0858eb63d47.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/de139866a220124360e5e27d1a736ea4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/de176bc4788ea286fff9e92418a43ea8.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/df17f920b0deab3529b98df88b781f55.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/dfac8d098b50aa0181161bcd17b38ef4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/dfb1fe96d806a644214d06f9b4b87878.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/dfef545b1e2c247bafd1347e8e807ac1.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e0d6e02b998bdea99c9c08dcc3630c5e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e17e8852ec3f31781e1364f4dffeb6d0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e21e1c26dc8687e7bf7bd2bf019a6698.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e270f3f721a5712cd11a5ca03554f5b0.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e2a042c629429855c3bcaefffb26b7fa.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e30ea6e3823a139d7693d8cce1920a06.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e4be53736bcc02b03068fd72fdbfe271.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e567e6dbf86300142573c73789c8fce4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e5d2172b524332196cac0f031c043659.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e5f50b31f165462d883ecbff45f74985.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e8e451bc8c45bcf16df43804c4fc8329.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e9c2e15b36372d5281c879d336322b6c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/e9fe608f105d7e3268a15e409e2cb9ab.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ea02de2dbe05091fcb0dac72c8ba5f83.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/eb30ba547e4a7b8f54f33ab259aca523.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ebb6b59fbc9325c17e45f524602d6be2.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ec27afee074001b0e4e393611010842b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ec473de07fe89bcbac1f8e278617fe46.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ef0f4fa4272c47ff62fb7b422cf975e7.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/ef9111c1648d7820925f12e07d1346c5.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f085fb032dae56a3b104ab874eaea2ad.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f0e21e03a07c8fa0209b0aafdb3791e6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f29a28fffa7ec604a33a838f48f7ea79.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f2d68493abd3ca430bd03a7f7f8d18f9.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f32f0c19b42de3b87dd764fe4ca17e7c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f4a1008b3f9baa67bb03ce9ef5ab4cb4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f6b5032bf27c2445d28845be0d413970.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f6d6889667f56b8f49d2858070571a6b.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f70a54cd9a9f4811bf962e469f2ca2ea.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f8cc4b331a19ff4df8e4a490f906ee69.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/f9636d7ef1a45be4f36418c875cf6bef.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fa0f4485cd48f986b7ae8cbb24e331c4.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fa2fe60f570bd930d2891778c6efbfe6.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fa88f6f5a7d728ec4f1d05244228cb09.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fabe14480624a99e8ee42c7338672058.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fbcf5078a6a9e09790553804054c36b3.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fc8097bdfb6f3a4017bf4186ccca8a84.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fdcaba9547180439ff4b6275034a5170.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fdd38f0d248385a444c777e7acd97846.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/fe5763d32955e8b65eb3048e97b1580c.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/examples/feefeb68144002fd1fff57b77b95b85e.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/experimental-beta-apis.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/helpers.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/host-config.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/http-client.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/http-meta-data.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/images/api_key_name.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/images/cloud_api_key.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/images/cloud_id.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/images/create_api_key.png" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/index-operations.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/index.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/installation.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/logger.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/namespaces.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/node-pool.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/operations.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/overview.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/php_json_objects.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/redirects.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/release-notes.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/search-operations.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/set-retries.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/docs/usage.asciidoc" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Client.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/ClientBuilder.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/AbstractEndpoint.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/AsyncSearch.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Autoscaling.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Cat.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Ccr.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Cluster.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/DanglingIndices.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Enrich.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Eql.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Features.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Fleet.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Graph.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Ilm.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Indices.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Ingest.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/License.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Logstash.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Migration.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Ml.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Monitoring.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Nodes.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Rollup.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/SearchableSnapshots.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Security.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Shutdown.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Slm.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Snapshot.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Sql.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Ssl.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Tasks.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/TextStructure.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Transform.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Watcher.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Endpoints/Xpack.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ArrayAccessException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/AuthenticationException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ClientResponseException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ConfigException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ContentTypeException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ElasticsearchException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/HttpClientException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/InvalidArgumentException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/MissingParameterException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ProductCheckException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Exception/ServerResponseException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Response/Elasticsearch.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Response/ElasticsearchInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/ClientEndpointsTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/EndpointTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/MessageResponseTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/NamespaceTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/ProductCheckTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Traits/ResponseTrait.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/Adapter/AdapterInterface.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/Adapter/AdapterOptions.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/Adapter/Guzzle.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/AsyncOnSuccess.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/AsyncOnSuccessNoException.php" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch/src/Transport/RequestOptions.php" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/gaoyixia.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/gaoyixia.iml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/.idea/php.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/application/common/model/UserMessage.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/common/model/UserMessage.php" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/public/dist/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/public/dist/index.html" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/application/common/service/Elastic.php" beforeDir="false" afterPath="$PROJECT_DIR$/application/common/service/Elastic.php" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -114,6 +600,8 @@
       <path value="$PROJECT_DIR$/vendor/alibabacloud/opensearch-sdk-php" />
       <path value="$PROJECT_DIR$/vendor/alibabacloud/opensearch" />
       <path value="$PROJECT_DIR$/vendor/alibabacloud/elasticsearch-20170613" />
+      <path value="$PROJECT_DIR$/vendor/elasticsearch/elasticsearch" />
+      <path value="$PROJECT_DIR$/vendor/elastic/transport" />
     </include_path>
   </component>
   <component name="ProjectId" id="2CCTRIjtQujUBealCzdAl9v5TA4" />
@@ -125,7 +613,7 @@
   <component name="PropertiesComponent">
     <property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
     <property name="WebServerToolWindowFactoryState" value="false" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/application/common/service" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/vendor" />
     <property name="node.js.detected.package.eslint" value="true" />
     <property name="node.js.detected.package.tslint" value="true" />
     <property name="node.js.path.for.package.eslint" value="project" />
@@ -136,19 +624,19 @@
     <property name="two.files.diff.last.used.folder" value="$PROJECT_DIR$" />
   </component>
   <component name="RecentsManager">
-    <key name="CopyFile.RECENT_KEYS">
-      <recent name="D:\zs\gaoyixia\application\common\service" />
-      <recent name="D:\zs\gaoyixia\vendor" />
-      <recent name="D:\zs\gaoyixia\vendor\elasticsearch" />
-      <recent name="D:\zs\gaoyixia\application\api\controller" />
-      <recent name="D:\zs\gaoyixia\vendor\alibabacloud" />
-    </key>
     <key name="MoveFile.RECENT_KEYS">
       <recent name="D:\zs\gaoyixia\public\a" />
       <recent name="D:\zs\gaoyixia\public" />
       <recent name="D:\zs\gaoyixia\public\wx_cert" />
       <recent name="D:\zs\gaoyixia\application\api\controller" />
     </key>
+    <key name="CopyFile.RECENT_KEYS">
+      <recent name="D:\zs\gaoyixia\vendor" />
+      <recent name="D:\zs\gaoyixia\application\common\service" />
+      <recent name="D:\zs\gaoyixia\vendor\elasticsearch" />
+      <recent name="D:\zs\gaoyixia\application\api\controller" />
+      <recent name="D:\zs\gaoyixia\vendor\alibabacloud" />
+    </key>
   </component>
   <component name="SvnConfiguration">
     <configuration />
@@ -257,7 +745,7 @@
       <workItem from="1678410737283" duration="21226000" />
       <workItem from="1678495559564" duration="25187000" />
       <workItem from="1678668116151" duration="24851000" />
-      <workItem from="1678754950693" duration="2577000" />
+      <workItem from="1678754950693" duration="3701000" />
     </task>
     <servers />
   </component>

+ 8 - 1
application/common/service/Elastic.php

@@ -9,7 +9,7 @@ use AlibabaCloud\Tea\Utils\Utils;
 use Darabonba\OpenApi\Models\Config;
 use AlibabaCloud\SDK\Elasticsearch\V20170613\Models\ListDataStreamsRequest;
 use AlibabaCloud\Tea\Utils\Utils\RuntimeOptions;
-
+use Elastic\Elasticsearch\ClientBuilder;
 $path = __DIR__ . \DIRECTORY_SEPARATOR . '..' . \DIRECTORY_SEPARATOR . 'vendor' . \DIRECTORY_SEPARATOR . 'autoload.php';
 if (file_exists($path)) require_once $path;
 /**
@@ -23,6 +23,13 @@ class Elastic
      static $access_secret = '82UWAiY5e5wH8tSkRvMtqVoGO0h8SB';//secret
      static $InstanceId = 'es-cn-wwo34hg5t0006xtsj';
      static $test_index = 'product_info';
+    public static function es(){
+        static $es;
+        if(!$es){
+            $es= ClientBuilder::create()->build();
+        }
+        return $es;
+    }
     /**
      * 使用AK&SK初始化账号Client
      * @param string $accessKeyId

+ 72 - 0
vendor/elastic/transport/CHANGELOG.md

@@ -0,0 +1,72 @@
+# Changelog
+
+## 8.3.0 (2022-06-27)
+
+- Release created to be compatible with 8.3 Elastic clients
+
+## 8.2.0 (2022-06-22)
+
+- Release created to be compatible with 8.2 Elastic clients
+
+## 8.1.0 (2022-04-12)
+
+- Release created to be compatible with 8.1 Elastic clients
+  
+## 8.0.1 (2022-03-30)
+
+- Support of `psr/log` v1, 2 and 3 to fix the dependency with `elasticsearch/elasticsearch`.
+  [a413687](https://github.com/elastic/elastic-transport-php/commit/a413687ae0fcc3f949b02935731a42a301b383ad)
+  
+## 8.0.0 (2022-03-24)
+
+Finally, the 8.0.0 GA.
+
+## 8.0.0-RC4 (2022-03-08)
+
+Added the `TransportException` to extends the `Throwable`interface.
+
+## 8.0.0-RC3 (2022-02-26)
+
+This RC3 release introduces the `OnSuccessInterface` and `OnFailureInterface`
+for manage the async code with the execution of a custom function during the
+return of `OnSuccess` and during the execution of `OnFailure`. As default behaviour
+the `OnSuccessDefault` and `OnFailureDefault` does not perform any operations.
+
+## 8.0.0-RC2 (2022-02-23)
+
+This RC2 release uses `httplug` v2.3.0 to provide a full retry async mechanism
+thanks to PR https://github.com/php-http/httplug/pull/168.
+
+## 8.0.0-RC1 (2022-02-17)
+
+This is the first release candidate for 8.0.0 containing some new
+features and changes compared with the previous 7.x Elastic transport.
+
+### Changes
+
+- the `ConnectionPool` namespace has been renamed in `NodePool`,
+  consequently all the `Connection` classes has been renamed in `Node`
+- the previous Apache 2.0 LICENSE has been changed in [MIT](https://opensource.org/licenses/MIT)
+
+### New features
+
+- added the usage of [HTTPlug](http://httplug.io/) library to
+  autodiscovery [PSR-18](https://www.php-fig.org/psr/psr-18/) client
+  and `HttpAsyncClient` interface using [Promise](https://docs.php-http.org/en/latest/components/promise.html).
+- added the `Trasnport::sendAsyncRequest(RequestInterface $request): Promise`
+  to send a PSR-7 request using asynchronous request
+- added the `Transport::setAsyncClient(HttpAsyncClient $asyncClient)`
+  and `Transport::getAsyncClient()` functions. If the [PSR-18](https://www.php-fig.org/psr/psr-18/)
+  client already implements the `HttpAsyncClient` interface you
+  don't need to use the `setAsyncClient()` function, it will discovered
+  automatically
+- added the `Transport::setRetries()` function to specify the number
+  of HTTP request retries to apply. If the HTTP failures exceed the
+  number of retries the client generates a `NoNodeAvailableException`
+
+## 7.14.0 (2021-08-03)
+
+Release created to be compatible with 7.14 Elastic clients
+## 7.13.0 (2021-05-25)
+
+Release created to be compatible with 7.13 Elastic clients

+ 19 - 0
vendor/elastic/transport/LICENSE

@@ -0,0 +1,19 @@
+Copyright 2022 Elasticsearch B.V (https://www.elastic.co)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 258 - 0
vendor/elastic/transport/README.md

@@ -0,0 +1,258 @@
+<img align="right" width="auto" height="auto" src="https://www.elastic.co/static-res/images/elastic-logo-200.png"/>
+
+# HTTP transport for Elastic PHP clients
+
+[![Build status](https://github.com/elastic/elastic-transport-php/workflows/Test/badge.svg)](https://github.com/elastic/elastic-transport-php/actions)
+
+This is a HTTP transport PHP library for communicate with [Elastic](https://www.elastic.co/)
+products, like [Elasticsearch](https://github.com/elastic/elasticsearch).
+
+It implements [PSR-7](https://www.php-fig.org/psr/psr-7/) standard for managing
+HTTP messages and [PSR-18](https://www.php-fig.org/psr/psr-18/) for sending HTTP requests.
+Moreover, it uses the [PSR-17](https://www.php-fig.org/psr/psr-17/) for building `PSR-7` objects
+like HTTP requests, HTTP responses, URI, etc.
+
+It uses the [HTTPlug](http://httplug.io/) library to automatic discovery a [PSR-18](https://www.php-fig.org/psr/psr-18/)
+client, a [PSR-17](https://www.php-fig.org/psr/psr-17/) factory and the [HttpAsyncClient](https://github.com/php-http/httplug/blob/master/src/HttpAsyncClient.php)
+interface with [Promise](https://docs.php-http.org/en/latest/components/promise.html) for
+asyncronous HTTP requestes.
+
+The architecture of the Transport is flexible and customizable, you can configure it 
+using a [PSR-18](https://www.php-fig.org/psr/psr-18/) client, a [PSR-3](https://www.php-fig.org/psr/psr-3/)
+logger and a custom [NodePoolInterface](src/NodePool/NodePoolInterface.php), to manage
+a cluster of nodes.
+
+## Quick start
+
+The main component of this library is the [Transport](src/Transport.php) class. 
+
+This class uses 3 components:
+
+- a PSR-18 client, using [ClientInterface](https://www.php-fig.org/psr/psr-18/#interfaces);
+- a Node pool, using [NodePoolInterface](src/NodePool/NodePoolInterface.php);
+- a PSR-3 logger, using [LoggerInterface](https://www.php-fig.org/psr/psr-3/#3-psrlogloggerinterface).
+
+While the `PSR-3` and `PSR-18` are well known standard in the PHP community, the `NodePoolInterface`
+is a new interface proposed in this library. The idea of this interface is to provide a class
+that is able to select a node for a list of hosts. For instance, using Elasticsearch, that is a 
+distributed search engine, you need to manage a cluster of nodes. Each node exposes a common
+HTTP API and you can send the HTTP requests to one or more nodes.
+The `NodePoolInterface` is a component that can be used to manage the routing of the HTTP
+requests to the cluster node topology.
+
+In order to buid a `Transport` instance, you can use the `TransportBuilder` as follows:
+
+```php
+use Elastic\Transport\TransportBuilder;
+
+$transport = TransportBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->build();
+```
+
+This example shows how to set the transport to communicate with one node located at `localhost:9200`
+(e.g. Elasticsearch default port).
+
+By default, `TransportBuilder` will use the autodiscovery feature of [HTTPlug](http://httplug.io/)
+for the [PSR-18](https://www.php-fig.org/psr/psr-18/) client, the [SimpleNodePool](src/NodePool/SimpleNodePool.php)
+as `NodePoolInterface` and the [NullLogger](https://github.com/php-fig/log/blob/master/Psr/Log/NullLogger.php)
+as `LoggerInterface`.
+
+The `Tranport` class itself implements the [PSR-18](https://www.php-fig.org/psr/psr-18/) and the
+[HttpAsyncClient](https://github.com/php-http/httplug/blob/master/src/HttpAsyncClient.php) interfaces, 
+that means you can use it to send any HTTP request using the `Tranport::sendRequest()` function
+as follows:
+
+```php
+use Http\Discovery\Psr17FactoryDiscovery;
+
+$factory = Psr17FactoryDiscovery::findRequestFactory();
+$request = $factory->createRequest('GET', '/info'); // PSR-7 request
+$response = $transport->sendRequest($request);
+var_dump($response); // PSR-7 response
+```
+
+The `sendRequest` function will use `$request` to send the HTTP request to the `localhost:9200`
+node specified in the previous example code. This behaviour can be used to specify only the URL path
+in the HTTP request, the host is selected at runtime using the `NodePool` implementation.
+
+**NOTE**: if you send a `$request` that contains already a host the `Transport` will
+use it without using the `NodePool` to select a node specified in `TransportBuilder::setHosts()`
+settings.
+
+For instance, the following example will send the `/info` request to `domain` and not `localhost`.
+
+```php
+use Elastic\Transport\TransportBuilder;
+
+$transport = TransportBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->build();
+
+$request = new Request('GET', 'https://domain.com/info');
+$response = $transport->sendRequest($request); // the HTTP request will be sent to domain.com
+
+echo $transport->lastRequest()->getUri()->getHost(); // domain.com
+```
+
+## Asyncronous requests
+
+You can send an asyncronous HTTP request using the `Transport::sendAsyncRequest()` as follows:
+
+```php
+use Http\Discovery\Psr17FactoryDiscovery;
+
+$factory = Psr17FactoryDiscovery::findRequestFactory();
+$request = $factory->createRequest('GET', '/info'); // PSR-7 request
+$promise= $transport->sendAsyncRequest($request);
+var_dump($promise); // Promise
+var_dump($promise->wait()); // PSR-7 response
+```
+
+The `$promise` contains a [Promise](https://docs.php-http.org/en/latest/components/promise.html) object.
+A promise is an object that does not block the execution of PHP. This means the promise does not
+contain the HTTP response. In order to read the HTTP response you need to use the `wait()` function.
+
+Another approach to use a promise is to specify the functions to be called on success and on faliure
+of the HTTP request. This can achieved using the `then()` function as follows:
+
+```php
+$promise->then(function (ResponseInterface $response) {
+    // onFulfilled callback, $reponse is PSR-7
+    echo 'The response is available';
+
+    return $response;
+}, function (Exception $e) {
+    // onRejected callback
+    echo 'An error happens';
+
+    throw $e;
+});
+```
+
+For more information about the usage of Promise objetcs you can read the [documentation](https://docs.php-http.org/en/latest/components/promise.html)
+from HTTPlug.
+
+## Set the number of retries
+
+You can specify the number of retries for any HTTP requests. This means if the HTTP request will fail
+the client will automatically try to perform another request (or more).
+
+By default, the number of retries is zero (0). If you want you can change it using the `Transport::setRetries()`
+function, as follows:
+
+```php
+use Elastic\Transport\TransportBuilder;
+
+$transport = TransportBuilder::create()
+    ->setHosts([
+        '10.0.0.10:9200',
+        '10.0.0.20:9200',
+        '10.0.0.30:9200'
+    ])
+    ->build();
+
+$transport->setRetries(1);
+$factory = Psr17FactoryDiscovery::findRequestFactory();
+$request = $factory->createRequest('GET', '/info'); 
+// If a node is down, the transports retry automatically using another one 
+$response = $transport->sendRequest($request); 
+```
+
+This feature can be interesting as retry mechanism especially useful if you have a cluster of nodes.
+You can read the following section about `Node Pool` to understand how to configure the selection
+of nodes in a cluster environment.
+
+## Node Pool
+
+The `SimpleNodePool` is the default node pool algorithm used by `Tranposrt`.
+It uses the following default values: [RoundRobin](src/NodePool/Selector/RoundRobin.php) as
+`SelectorInterface` and [NoResurrect](src/NodePool/Resurrect/FalseResurrect.php) as `ResurrectInterface`.
+
+The [Round-robin](https://en.wikipedia.org/wiki/Round-robin_scheduling) algorithm select the nodes in
+order, from the first node in the array to the latest. When arrived to the latest nodes, 
+it will start again from the first. 
+
+\* **NOTE**: the order of the nodes is randomized at runtime to maximize the usage of all the hosts.
+
+The [NoResurrect](src/NodePool/Resurrect/FalseResurrect.php) option does not try to resurrect the
+node that has been marked as dead. For instance, using `Elasticsearch` you can try to
+resurrect a dead node using the `HEAD /` API. If you want to use this behaviour you can use the
+[ElasticsearchResurrect](/src/NodePool/Resurrect/ElasticsearchResurrect.php) class.
+
+## Use a custom Selector
+
+You can specify a `SelectorInterface` implementation when you create a `NodePoolInterface` instance.
+For instance, imagine you implemented a `CustomSelector` and a custom `CustomResurrect` you can
+use it as follows:
+
+```php
+use Elastic\Transport\NodePool\SimpleNodePool;
+use Elastic\Transport\TransportBuilder;
+
+$nodePool = new SimpleNodePool(
+    new CustomSelector(),
+    new CustomResurrect()
+);
+
+$transport = TransportBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->setNodePool($nodePool)
+    ->build();
+```
+
+## Use a custom PSR-3 loggers
+
+You can specify a PSR-3 `LoggerInterface` implementation using the `TransportBuilder`.
+For instance, if you want to use [monolog](https://github.com/Seldaek/monolog) library
+you can use the following configuration:
+
+```php
+use Elastic\Transport\TransportBuilder;
+use Monolog\Logger;
+use Monolog\Handler\StreamHandler;
+
+$logger = new Logger('name');
+$logger->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));
+
+$transport = TransportBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->setLogger($logger)
+    ->build();
+```
+## Use a custom PSR-18 clients
+
+You can specify a `PSR-18` client using the `TransportBuilder::setClient()` function.
+For instance, if you want to use [Symfony HTTP Client](https://symfony.com/doc/current/http_client.html)
+you can use the following configuration:
+
+```php
+use Elastic\Transport\TransportBuilder;
+use Symfony\Component\HttpClient\Psr18Client;
+
+$transport = TransportBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->setClient(new Psr18Client)
+    ->build();
+```
+
+As mentioned in the introduction, we use the [HTTPlug](http://httplug.io/) library
+to automatic discovery a [PSR-18](https://www.php-fig.org/psr/psr-18/) client.
+
+You can use the `TransportBuilder::setClient()` to specify the client manually, for
+instance if you have multiple HTTP client library installed.
+
+By default, if the [PSR-18](https://www.php-fig.org/psr/psr-18/) client implements the
+[HttpAsyncClient](https://github.com/php-http/httplug/blob/master/src/HttpAsyncClient.php)
+it will use it when using `Transport::sendAsyncRequest()`. If you want you can override
+this setting using the `Transport::setAsyncClient()` function. That means you can use
+a [PSR-18](https://www.php-fig.org/psr/psr-18/) client for the syncronous requests and
+a different [HttpAsyncClient](https://github.com/php-http/httplug/blob/master/src/HttpAsyncClient.php)
+client for the asyncronous requests.
+
+## Copyright and License
+
+Copyright (c) [Elasticsearch B.V](https://www.elastic.co).
+
+This software is licensed under the MIT License.
+Read the [LICENSE](LICENSE) file for more information.

+ 47 - 0
vendor/elastic/transport/composer.json

@@ -0,0 +1,47 @@
+{
+    "name": "elastic/transport",
+    "type": "library",
+    "description": "HTTP transport PHP library for Elastic products",
+    "keywords": [
+        "http",
+        "transport",
+        "elastic",
+        "PSR-7",
+        "PSR_17",
+        "PSR-18"
+    ],
+    "license": "MIT",
+    "require": {
+        "php": "^7.4 || ^8.0",
+        "psr/http-client": "^1.0",
+        "psr/http-factory": "^1.0",
+        "psr/http-message": "^1.0",
+        "psr/log": "^1 || ^2 || ^3",
+        "php-http/discovery": "^1.14",
+        "php-http/httplug": "^2.3"
+    },
+    "require-dev": {
+        "phpunit/phpunit": "^9.5",
+        "phpstan/phpstan": "^1.4",
+        "php-http/mock-client": "^1.5",
+        "nyholm/psr7": "^1.5"
+    },
+    "autoload": {
+        "psr-4": {
+            "Elastic\\Transport\\": "src/"
+        }
+    },
+    "autoload-dev": {
+        "psr-4": {
+            "Elastic\\Transport\\Test\\" : "tests/"
+        }
+    },
+    "scripts": {
+        "test": [
+            "vendor/bin/phpunit"
+        ],
+        "phpstan": [
+            "vendor/bin/phpstan analyse"
+        ]
+    }
+}

+ 26 - 0
vendor/elastic/transport/src/Async/OnFailureDefault.php

@@ -0,0 +1,26 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Async;
+
+use Elastic\Transport\NodePool\Node;
+use Exception;
+use Psr\Http\Message\RequestInterface;
+
+class OnFailureDefault implements OnFailureInterface
+{
+    public function failure(Exception $e, RequestInterface $request, int $count, Node $node = null): void
+    {
+    }
+}

+ 24 - 0
vendor/elastic/transport/src/Async/OnFailureInterface.php

@@ -0,0 +1,24 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Async;
+
+use Elastic\Transport\NodePool\Node;
+use Exception;
+use Psr\Http\Message\RequestInterface;
+
+interface OnFailureInterface
+{
+    public function failure(Exception $e, RequestInterface $request, int $count, Node $node = null): void;
+}

+ 25 - 0
vendor/elastic/transport/src/Async/OnSuccessDefault.php

@@ -0,0 +1,25 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Async;
+
+use Psr\Http\Message\ResponseInterface;
+
+class OnSuccessDefault implements OnSuccessInterface
+{
+    public function success(ResponseInterface $response, int $count)
+    {
+        return $response;
+    }
+}

+ 25 - 0
vendor/elastic/transport/src/Async/OnSuccessInterface.php

@@ -0,0 +1,25 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Async;
+
+use Psr\Http\Message\ResponseInterface;
+
+interface OnSuccessInterface
+{
+    /**
+     * @return mixed
+     */
+    public function success(ResponseInterface $request, int $count);
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/CloudIdParseException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class CloudIdParseException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/InvalidArgumentException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class InvalidArgumentException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/InvalidArrayException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class InvalidArrayException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/InvalidIterableException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class InvalidIterableException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/InvalidJsonException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class InvalidJsonException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/InvalidXmlException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class InvalidXmlException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/NoAsyncClientException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class NoAsyncClientException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/NoNodeAvailableException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class NoNodeAvailableException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/NotFoundException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class NotFoundException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/RuntimeException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException as RootRuntimeException;
+
+class RuntimeException extends RootRuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/SerializeException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class SerializeException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/TransportException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use Throwable;
+
+interface TransportException extends Throwable
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/UndefinedPropertyException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class UndefinedPropertyException extends RuntimeException implements TransportException
+{
+
+}

+ 22 - 0
vendor/elastic/transport/src/Exception/UnknownContentTypeException.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Exception;
+
+use RuntimeException;
+
+class UnknownContentTypeException extends RuntimeException implements TransportException
+{
+
+}

+ 50 - 0
vendor/elastic/transport/src/NodePool/Node.php

@@ -0,0 +1,50 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool;
+
+use Http\Discovery\Psr17FactoryDiscovery;
+use Psr\Http\Message\UriInterface;
+
+use function sprintf;
+use function substr;
+
+class Node
+{
+    protected UriInterface $uri;
+    protected bool $alive = true;
+
+    public function __construct(string $host)
+    {
+        if (substr($host, 0, 5) !== 'http:' && substr($host, 0, 6) !== 'https:') {
+            $host = sprintf("http://%s", $host);
+        }
+        $this->uri = Psr17FactoryDiscovery::findUriFactory()->createUri($host);
+    }
+
+    public function markAlive(bool $alive): void
+    {
+        $this->alive = $alive;
+    }
+
+    public function isAlive(): bool
+    {
+        return $this->alive;
+    }
+
+    public function getUri(): UriInterface
+    {
+        return $this->uri;
+    }
+}

+ 25 - 0
vendor/elastic/transport/src/NodePool/NodePoolInterface.php

@@ -0,0 +1,25 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool;
+
+interface NodePoolInterface
+{
+    public function nextNode(): Node;
+
+    /**
+     * @param string[] $hosts
+     */
+    public function setHosts(array $hosts): self;
+}

+ 55 - 0
vendor/elastic/transport/src/NodePool/Resurrect/ElasticsearchResurrect.php

@@ -0,0 +1,55 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Resurrect;
+
+use Elastic\Transport\NodePool\Node;
+use Exception;
+use Psr\Http\Client\ClientInterface;
+use Http\Discovery\Psr17FactoryDiscovery;
+use Http\Discovery\Psr18ClientDiscovery;
+use Psr\Http\Message\RequestFactoryInterface;
+
+class ElasticsearchResurrect implements ResurrectInterface
+{
+    protected ClientInterface $client;
+    protected RequestFactoryInterface $requestFactory;
+
+    public function ping(Node $node): bool
+    {
+        $request = $this->getRequestFactory()->createRequest("HEAD", $node->getUri());
+        try {
+            $response = $this->getClient()->sendRequest($request);
+            return $response->getStatusCode() === 200;
+        } catch (Exception $e) {
+            return false;
+        }
+    }
+
+    public function getClient(): ClientInterface
+    {
+        if (empty($this->client)) {
+            $this->client = Psr18ClientDiscovery::find();
+        }
+        return $this->client;
+    }
+
+    public function getRequestFactory(): RequestFactoryInterface
+    {
+        if (empty($this->requestFactory)) {
+            $this->requestFactory = Psr17FactoryDiscovery::findRequestFactory();
+        }
+        return $this->requestFactory;
+    }
+}

+ 28 - 0
vendor/elastic/transport/src/NodePool/Resurrect/NoResurrect.php

@@ -0,0 +1,28 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Resurrect;
+
+use Elastic\Transport\NodePool\Node;
+use Psr\Http\Client\ClientInterface;
+
+class NoResurrect implements ResurrectInterface
+{
+    protected ClientInterface $client;
+
+    public function ping(Node $node): bool
+    {
+        return false;
+    }
+}

+ 23 - 0
vendor/elastic/transport/src/NodePool/Resurrect/ResurrectInterface.php

@@ -0,0 +1,23 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Resurrect;
+
+use Elastic\Transport\NodePool\Node;
+use Psr\Http\Client\ClientInterface;
+
+interface ResurrectInterface
+{
+    public function ping(Node $node): bool;
+}

+ 40 - 0
vendor/elastic/transport/src/NodePool/Selector/RoundRobin.php

@@ -0,0 +1,40 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Selector;
+
+use Elastic\Transport\NodePool\Node;
+use Elastic\Transport\Exception\NoNodeAvailableException;
+
+class RoundRobin implements SelectorInterface
+{
+    use SelectorTrait;
+
+    public function nextNode(): Node
+    {
+        if (empty($this->getNodes())) {
+            $className = substr(__CLASS__, strrpos(__CLASS__, '\\') + 1);
+            throw new NoNodeAvailableException(sprintf(
+                "No node available. Please use %s::setNodes() before calling %s::nextNode().",
+                $className,
+                $className
+            ));
+        }
+        $node = current($this->nodes);
+        if (false === next($this->nodes)) {
+            reset($this->nodes);
+        }
+        return $node;
+    }   
+}

+ 32 - 0
vendor/elastic/transport/src/NodePool/Selector/SelectorInterface.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Selector;
+
+use Elastic\Transport\NodePool\Node;
+
+interface SelectorInterface
+{  
+    public function nextNode(): Node;
+
+    /**
+     * @param Node[] $nodes
+     */
+    public function setNodes(array $nodes): void;
+
+    /**
+     * @return Node[]
+     */
+    public function getNodes(): array;
+}

+ 41 - 0
vendor/elastic/transport/src/NodePool/Selector/SelectorTrait.php

@@ -0,0 +1,41 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool\Selector;
+
+use Elastic\Transport\NodePool\Node;
+use Elastic\Transport\Exception\InvalidArrayException;
+
+trait SelectorTrait
+{
+    protected array $nodes = [];
+
+    public function setNodes(array $nodes): void
+    {
+        foreach ($nodes as $node) {
+            if (!$node instanceof Node) {
+                throw new InvalidArrayException(sprintf(
+                    "The nodes array must contain only %s objects",
+                    Node::class
+                ));
+            }
+        }
+        $this->nodes = $nodes;
+    }
+
+    public function getNodes(): array
+    {
+        return $this->nodes;
+    }
+}

+ 82 - 0
vendor/elastic/transport/src/NodePool/SimpleNodePool.php

@@ -0,0 +1,82 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\NodePool;
+
+use Elastic\Transport\NodePool\Resurrect\ResurrectInterface;
+use Elastic\Transport\NodePool\Selector\SelectorInterface;
+use Elastic\Transport\Exception\NoNodeAvailableException;
+
+use function count;
+use function shuffle;
+use function sprintf;
+
+class SimpleNodePool implements NodePoolInterface
+{
+    /**
+     * @var array
+     */
+    protected $nodes = [];
+    
+    /**
+     * @var SelectorInterface
+     */
+    protected $selector;
+
+    /**
+     * @var ResurrectInterface
+     */
+    protected $resurrect;
+
+    public function __construct(SelectorInterface $selector, ResurrectInterface $resurrect)
+    {   
+        $this->selector = $selector;
+        $this->resurrect = $resurrect;
+    }
+
+    public function setHosts(array $hosts): self
+    {
+        $this->nodes = [];
+        foreach ($hosts as $host) {
+            $this->nodes[] = new Node($host);
+        }
+        shuffle($this->nodes); // randomize for use different hosts on each execution
+        $this->selector->setNodes($this->nodes);
+        
+        return $this;
+    }
+
+    public function nextNode(): Node
+    {
+        $totNodes = count($this->nodes);
+        $dead = 0;
+
+        while ($dead < $totNodes) {
+            $next = $this->selector->nextNode();
+            if ($next->isAlive()) {
+                return $next;
+            }
+            if ($this->resurrect->ping($next)) {
+                $next->markAlive(true);
+                return $next;
+            }
+            $dead++;
+        }
+
+        throw new NoNodeAvailableException(sprintf(
+            'No alive nodes. All the %d nodes seem to be down.',
+            $totNodes
+        ));
+    }
+}

+ 62 - 0
vendor/elastic/transport/src/Serializer/CsvSerializer.php

@@ -0,0 +1,62 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use Elastic\Transport\Exception\InvalidIterableException;
+
+use function explode;
+use function is_iterable;
+use function sprintf;
+use function str_getcsv;
+use function substr;
+
+class CsvSerializer implements SerializerInterface
+{
+    /**
+     * @inheritdoc
+     * 
+     * @throws InvalidIterableException
+     */
+    public static function serialize($data, array $options = []): string
+    {
+        if (!is_iterable($data)) {
+            throw new InvalidIterableException(
+                sprintf("The parameter %s is not iterable", serialize($data))
+            );
+        }
+        $result = '';
+        foreach ($data as $row) {
+            if (is_array($row) || is_object($row)) {
+                $result .= implode(',', (array) $row);
+            } else {
+                $result .= (string) $row;
+            }
+            $result .= "\n";
+        }
+        return empty($result) ? $result : substr($result, 0, -1);
+    }
+
+    /**
+     * @return array
+     */
+    public static function unserialize(string $data, array $options = []): array
+    {
+        $result = [];
+        foreach (explode("\n", $data) as $row) {
+            $result[] = str_getcsv($row);
+        }
+        return $result;
+    }
+}

+ 79 - 0
vendor/elastic/transport/src/Serializer/JsonSerializer.php

@@ -0,0 +1,79 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use Elastic\Transport\Exception\InvalidJsonException;
+use Elastic\Transport\Exception\UndefinedPropertyException;
+use JsonException;
+
+use function in_array;
+use function json_decode;
+use function json_encode;
+use function sprintf;
+
+class JsonSerializer implements SerializerInterface
+{
+   /**
+     * The available $options are: 
+     * 'remove_null'  => (bool) enable/disable the removing of
+     *                   null values (default is true)
+     * 
+     * @param mixed $data
+     */
+    public static function serialize($data, array $options = []): string
+    {
+        if (empty($data)) {
+            return '{}';
+        }
+        if (is_string($data)) {
+            return $data;
+        }
+        try {
+            $removeNull = $options['remove_null'] ?? true;
+            if ($removeNull) {
+                Utility::removeNullValue($data);
+            }
+            return json_encode($data, JSON_PRESERVE_ZERO_FRACTION + JSON_INVALID_UTF8_SUBSTITUTE + JSON_THROW_ON_ERROR);
+        } catch (JsonException $e) {
+            throw new InvalidJsonException(sprintf(
+                "I cannot serialize to Json: %s", 
+                $e->getMessage()
+            ));
+        }
+    }
+
+    /**
+     * The available options are:
+     * 'type' => (string) specify if the output should be an array
+     *           or an object (default is array)
+     * 
+     * @inheritdoc
+     */
+    public static function unserialize(string $data, array $options = [])
+    {
+        try {
+            $type = $options['type'] ?? 'array';
+            if (!in_array($type, ['object', 'array'])) {
+                throw new UndefinedPropertyException("The unserialize 'type' option must be object or array");
+            }
+            return json_decode($data, $type === 'array', 512, JSON_THROW_ON_ERROR);
+        } catch (JsonException $e) {
+            throw new InvalidJsonException(sprintf(
+                "Not a valid Json: %s", 
+                $e->getMessage()
+            ));
+        }
+    }
+}

+ 75 - 0
vendor/elastic/transport/src/Serializer/NDJsonSerializer.php

@@ -0,0 +1,75 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use ArrayObject;
+use Elastic\Transport\Exception\InvalidJsonException;
+use JsonException;
+
+use function explode;
+use function json_decode;
+use function sprintf;
+use function strpos;
+
+class NDJsonSerializer implements SerializerInterface
+{
+    /**
+     * The available $options are: 
+     * 'remove_null'  => (bool) enable/disable the removing of
+     *                   null values (default is true)
+     * 
+     * @param array $data
+     */
+    public static function serialize($data, array $options = []): string
+    {
+        $result = '';
+        foreach ($data as $row) {
+            if (empty($row)) {
+                $result .= "{}\n";
+                continue;
+            }
+            $result .= JsonSerializer::serialize($row, $options) . "\n";
+        }
+        return $result;
+    }
+
+    /**
+     * The available options are:
+     * 'type' => (string) specify if the array result should contain object
+     *           or array (default is array)
+     * 
+     * @inheritdoc
+     */
+    public static function unserialize(string $data, array $options = [])
+    {
+        $array = explode(strpos($data, "\r\n") !== false ? "\r\n" : "\n", $data);
+        $result = [];
+        foreach ($array as $json) {
+            if (empty($json)) {
+                continue;
+            }
+            try {
+                $result[] = JsonSerializer::unserialize($json, $options);
+            } catch (JsonException $e) {
+                throw new InvalidJsonException(sprintf(
+                    "Not a valid NDJson: %s", 
+                    $e->getMessage()
+                ));
+            }    
+        }
+        $type = $options['type'] ?? 'array';
+        return $type === 'array' ? $result : new ArrayObject($result);
+    }
+}

+ 32 - 0
vendor/elastic/transport/src/Serializer/SerializerInterface.php

@@ -0,0 +1,32 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+interface SerializerInterface
+{
+    /**
+     * @param mixed $data
+     * @param array $options
+     * @return string
+     */
+    public static function serialize($data, array $options = []): string;
+
+    /**
+     * @param string $data
+     * @param array $options
+     * @return mixed
+     */
+    public static function unserialize(string $data, array $options = []);
+}

+ 43 - 0
vendor/elastic/transport/src/Serializer/TextSerializer.php

@@ -0,0 +1,43 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use Elastic\Transport\Exception\SerializeException;
+
+use function serialize;
+
+class TextSerializer implements SerializerInterface
+{
+    /**
+     * @throws SerializeException
+     */
+    public static function serialize($data, array $options = []): string
+    {
+        if (is_string($data) || is_numeric($data) || (is_object($data) && method_exists($data, '__toString'))) {
+            return (string) $data;
+        }
+        throw new SerializeException(
+            sprintf("I cannot serialize %s in a text", serialize($data))
+        );
+    }
+
+    /**
+     * @return string
+     */
+    public static function unserialize(string $data, array $options = []): string
+    {
+        return $data;
+    }
+}

+ 54 - 0
vendor/elastic/transport/src/Serializer/Utility.php

@@ -0,0 +1,54 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use Elastic\Transport\Exception\InvalidArgumentException;
+
+use function is_array;
+use function is_object;
+use function var_export;
+use function sprintf;
+
+class Utility
+{
+    /**
+     * Remove null values form array or object
+     * 
+     * @param mixed $data
+     * @return void
+     */
+    public static function removeNullValue(&$data): void
+    {
+        if (!is_object($data) && !is_array($data)) {
+            throw new InvalidArgumentException(
+                sprintf("The parameter %s must be an object or array", var_export($data, true))
+            );
+        }
+        /** @phpstan-ignore-next-line */
+        foreach ($data as $property => &$value) {
+            if (is_object($value) || is_array($value)) {
+                self::removeNullValue($value);
+            }
+            if (null === $value) {
+                if (is_array($data)) {
+                    unset($data[$property]);
+                } 
+                if (is_object($data)) {
+                    unset($data->$property);
+                }
+            }
+        }
+    }
+}

+ 56 - 0
vendor/elastic/transport/src/Serializer/XmlSerializer.php

@@ -0,0 +1,56 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport\Serializer;
+
+use Elastic\Transport\Exception\InvalidXmlException;
+use SimpleXMLElement;
+
+use function libxml_clear_errors;
+use function libxml_get_errors;
+use function serialize;
+use function simplexml_load_string;
+use function sprintf;
+
+class XmlSerializer implements SerializerInterface
+{
+    public static function serialize($data, array $options = []): string
+    {
+        if ($data instanceof SimpleXMLElement) {
+            $xml = $data->asXML();
+            return false === $xml ? '' : $xml;
+        }
+        throw new InvalidXmlException(sprintf(
+            "Not a valid SimpleXMLElement: %s", 
+            serialize($data)
+        ));
+    }
+
+    /**
+     * @return SimpleXMLElement
+     */
+    public static function unserialize(string $data, array $options = []): SimpleXMLElement
+    {
+        $result = simplexml_load_string($data);
+        if (false === $result) {
+            $errors = libxml_get_errors();
+            libxml_clear_errors();
+            throw new InvalidXmlException(sprintf(
+                "Not a valid XML: %s", 
+                serialize($errors)
+            ));
+        }
+        return $result;
+    }
+}

+ 445 - 0
vendor/elastic/transport/src/Transport.php

@@ -0,0 +1,445 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport;
+
+use Composer\InstalledVersions;
+use Elastic\Transport\Async\OnFailureDefault;
+use Elastic\Transport\Async\OnFailureInterface;
+use Elastic\Transport\Async\OnSuccessDefault;
+use Elastic\Transport\Async\OnSuccessInterface;
+use Elastic\Transport\NodePool\Node;
+use Elastic\Transport\NodePool\NodePoolInterface;
+use Elastic\Transport\Exception\InvalidArgumentException;
+use Elastic\Transport\Exception\NoAsyncClientException;
+use Elastic\Transport\Exception\NoNodeAvailableException;
+use Exception;
+use Http\Client\HttpAsyncClient;
+use Http\Discovery\HttpAsyncClientDiscovery;
+use Http\Promise\Promise;
+use Psr\Http\Client\ClientExceptionInterface;
+use Psr\Http\Client\ClientInterface;
+use Psr\Http\Client\NetworkExceptionInterface;
+use Psr\Http\Message\MessageInterface;
+use Psr\Http\Message\RequestInterface;
+use Psr\Http\Message\ResponseInterface;
+use Psr\Log\LoggerInterface;
+
+use function get_class;
+use function ini_get;
+use function json_encode;
+use function php_uname;
+use function phpversion;
+use function sprintf;
+use function strpos;
+use function str_replace;
+use function strtolower;
+
+final class Transport implements ClientInterface, HttpAsyncClient
+{
+    const VERSION = "8.3.0";
+
+    private ClientInterface $client;
+    private LoggerInterface $logger;
+    private NodePoolInterface $nodePool;
+    private array $headers = [];
+    private string $user;
+    private string $password;
+    private RequestInterface $lastRequest;
+    private ResponseInterface $lastResponse;
+    private string $OSVersion;
+    private int $retries = 0;
+    private HttpAsyncClient $asyncClient;
+    private OnSuccessInterface $onAsyncSuccess;
+    private OnFailureInterface $onAsyncFailure;
+
+    public function __construct(
+        ClientInterface $client,
+        NodePoolInterface $nodePool,
+        LoggerInterface $logger
+    ) {
+        $this->client = $client;
+        $this->nodePool = $nodePool;
+        $this->logger = $logger;
+    }
+
+    public function getClient(): ClientInterface
+    {
+        return $this->client;
+    }
+
+    public function getNodePool(): NodePoolInterface
+    {
+        return $this->nodePool;
+    }
+
+    public function getLogger(): LoggerInterface
+    {
+        return $this->logger;
+    }
+
+    public function setHeader(string $name, string $value): self
+    {
+        $this->headers[$name] = $value;
+        return $this;
+    }
+
+    /**
+     * @throws InvalidArgumentException
+     */
+    public function setRetries(int $num): self
+    {
+        if ($num < 0) {
+            throw new InvalidArgumentException('The retries number must be a positive integer');
+        }
+        $this->retries = $num;
+        return $this;
+    }
+
+    public function getRetries(): int
+    {
+        return $this->retries;
+    }
+
+    public function getHeaders(): array
+    {
+        return $this->headers;
+    }
+
+    public function setUserInfo(string $user, string $password = ''): self
+    {
+        $this->user = $user;
+        $this->password = $password;
+        return $this;
+    }
+
+    public function setUserAgent(string $name, string $version): self
+    {
+        $this->headers['User-Agent'] = sprintf(
+            "%s/%s (%s %s; PHP %s)",
+            $name,
+            $version,
+            PHP_OS,
+            $this->getOSVersion(),
+            phpversion()
+        );
+        return $this;
+    }
+
+    /**
+     * Set the x-elastic-client-meta header
+     * 
+     * The header format is specified by the following regex:
+     * ^[a-z]{1,}=[a-z0-9\.\-]{1,}(?:,[a-z]{1,}=[a-z0-9\.\-]+)*$
+     */
+    public function setElasticMetaHeader(string $clientName, string $clientVersion, bool $async = false): self
+    {
+        $phpSemVersion = sprintf("%d.%d.%d", PHP_MAJOR_VERSION, PHP_MINOR_VERSION, PHP_RELEASE_VERSION);
+        $meta = sprintf(
+            "%s=%s,php=%s,t=%s,a=%d",
+            $clientName,
+            $this->purgePreReleaseTag($clientVersion),
+            $phpSemVersion,
+            $this->purgePreReleaseTag(self::VERSION),
+            $async ? 1 : 0 // 0=syncronous, 1=asynchronous
+        );
+        $lib = $this->getClientLibraryInfo();
+        if (!empty($lib)) {
+            $meta .= sprintf(",%s=%s", $lib[0], $lib[1]);
+        }
+        $this->headers['x-elastic-client-meta'] = $meta;
+        return $this;
+    }
+
+    /**
+     * Remove pre-release suffix with a single 'p' letter
+     */
+    private function purgePreReleaseTag(string $version): string
+    {
+        return str_replace(['alpha', 'beta', 'snapshot', 'rc', 'pre'], 'p', strtolower($version)); 
+    }
+
+    public function getLastRequest(): RequestInterface
+    {
+        return $this->lastRequest;
+    }
+
+    public function getLastResponse(): ResponseInterface
+    {
+        return $this->lastResponse;
+    }
+
+    /**
+     * Setup the headers, if not already present 
+     */
+    private function setupHeaders(RequestInterface $request): RequestInterface
+    {
+        foreach ($this->headers as $name => $value) {
+            if (!$request->hasHeader($name)) {
+                $request = $request->withHeader($name, $value);
+            }
+        }
+        return $request;
+    }
+
+    /**
+     * Setup the user info, if not already present
+     */
+    private function setupUserInfo(RequestInterface $request): RequestInterface
+    {
+        $uri = $request->getUri();
+        if (empty($uri->getUserInfo())) {
+            if (isset($this->user)) {
+                $request = $request->withUri($uri->withUserInfo($this->user, $this->password));
+            }
+        }
+        return $request;
+    }
+
+    /**
+     * Setup the connection Uri 
+     */
+    private function setupConnectionUri(Node $node, RequestInterface $request): RequestInterface
+    {
+        $host = $node->getUri()->getHost();
+        $port = $node->getUri()->getPort();
+        $scheme = $node->getUri()->getScheme();
+
+        return $request->withUri(
+            $request->getUri()
+                ->withHost($host)
+                ->withPort($port)
+                ->withScheme($scheme)
+        );
+    }
+
+    private function decorateRequest(RequestInterface $request): RequestInterface
+    {
+        $request = $this->setupHeaders($request);
+        return $this->setupUserInfo($request);
+    }
+
+    private function logHeaders(MessageInterface $message): void
+    {
+        $this->logger->debug(sprintf(
+            "Headers: %s\nBody: %s",
+            json_encode($message->getHeaders()),
+            $message->getBody()->getContents()
+        ));
+    }
+
+    private function logRequest(string $title, RequestInterface $request): void
+    {
+        $this->logger->info(sprintf(
+            "%s: %s %s", 
+            $title,
+            $request->getMethod(),
+            (string) $request->getUri()
+        ));
+        $this->logHeaders($request);
+    }
+
+    private function logResponse(string $title, ResponseInterface $response, int $retry): void
+    {
+        $this->logger->info(sprintf(
+            "%s (retry %d): %d",
+            $title,
+            $retry, 
+            $response->getStatusCode()
+        ));
+        $this->logHeaders($response);
+    }
+
+    /**
+     * @throws NoNodeAvailableException
+     * @throws ClientExceptionInterface
+     */
+    public function sendRequest(RequestInterface $request): ResponseInterface
+    {   
+        if (empty($request->getUri()->getHost())) {
+            $node = $this->nodePool->nextNode();
+            $request = $this->setupConnectionUri($node, $request);
+        }
+        $request = $this->decorateRequest($request);
+        $this->lastRequest = $request;
+        $this->logRequest("Request", $request);
+        
+        $count = -1;
+        while ($count < $this->getRetries()) {
+            try {
+                $count++;
+                $response = $this->client->sendRequest($request);
+
+                $this->lastResponse = $response;
+                $this->logResponse("Response", $response, $count);
+
+                return $response;
+            } catch (NetworkExceptionInterface $e) {
+                $this->logger->error(sprintf("Retry %d: %s", $count, $e->getMessage()));
+                if (isset($node)) {
+                    $node->markAlive(false);
+                    $node = $this->nodePool->nextNode();
+                    $request = $this->setupConnectionUri($node, $request);
+                }
+            } catch (ClientExceptionInterface $e) {
+                $this->logger->error(sprintf("Retry %d: %s", $count, $e->getMessage()));
+                throw $e;
+            }
+        }
+        $exceededMsg = sprintf("Exceeded maximum number of retries (%d)", $this->getRetries());
+        $this->logger->error($exceededMsg);
+        throw new NoNodeAvailableException($exceededMsg);
+    }
+
+    public function setAsyncClient(HttpAsyncClient $asyncClient): self
+    {
+        $this->asyncClient = $asyncClient;
+        return $this;
+    }
+
+    /**
+     * @throws NoAsyncClientException
+     */
+    public function getAsyncClient(): HttpAsyncClient
+    {
+        if (!empty($this->asyncClient)) {
+            return $this->asyncClient;
+        }
+        if ($this->client instanceof HttpAsyncClient) {
+            return $this->client;
+        }
+        try {
+            $this->asyncClient = HttpAsyncClientDiscovery::find();
+        } catch (Exception $e) {
+            throw new NoAsyncClientException(sprintf(
+                "I did not find any HTTP library with HttpAsyncClient interface. " .
+                "Make sure to install a package providing \"php-http/async-client-implementation\". " .
+                "You can also set a specific async library using %s::setAsyncClient()",
+                self::class
+            ));
+        }
+        return $this->asyncClient;
+    }
+
+    public function setAsyncOnSuccess(OnSuccessInterface $success): self
+    {
+        $this->onAsyncSuccess = $success;
+        return $this;
+    }
+
+    public function getAsyncOnSuccess(): OnSuccessInterface
+    {
+        if (empty($this->onAsyncSuccess)) {
+            $this->onAsyncSuccess = new OnSuccessDefault();
+        }
+        return $this->onAsyncSuccess;
+    }
+
+    public function setAsyncOnFailure(OnFailureInterface $failure): self
+    {
+        $this->onAsyncFailure = $failure;
+        return $this;
+    }
+
+    public function getAsyncOnFailure(): OnFailureInterface
+    {
+        if (empty($this->onAsyncFailure)) {
+            $this->onAsyncFailure = new OnFailureDefault();
+        }
+        return $this->onAsyncFailure;
+    }
+
+    /**
+     * @throws Exception
+     */
+    public function sendAsyncRequest(RequestInterface $request): Promise
+    {
+        $client = $this->getAsyncClient();
+        $node = null;
+        if (empty($request->getUri()->getHost())) {
+            $node = $this->nodePool->nextNode();
+            $request = $this->setupConnectionUri($node, $request);
+        }
+        $request = $this->decorateRequest($request);
+        $this->lastRequest = $request;
+        $this->logRequest("Async Request", $request);
+
+        $count = 0;
+        $promise = $client->sendAsyncRequest($request);
+
+        // onFulfilled callable
+        $onFulfilled = function (ResponseInterface $response) use (&$count) {
+            $this->lastResponse = $response;
+            $this->logResponse("Async Response", $response, $count);
+            return $this->getAsyncOnSuccess()->success($response, $count);
+        };
+
+        // onRejected callable
+        $onRejected = function (Exception $e) use ($client, $request, &$count, $node) {
+            $this->logger->error(sprintf("Retry %d: %s", $count, $e->getMessage()));
+            $this->getAsyncOnFailure()->failure($e, $request, $count, $node ?? null);
+            if (isset($node)) {
+                $node->markAlive(false);
+                $node = $this->nodePool->nextNode();
+                $request = $this->setupConnectionUri($node, $request);
+            }
+            $count++;
+            return $client->sendAsyncRequest($request);
+        };
+        
+        // Add getRetries() callables using then()
+        for ($i=0; $i < $this->getRetries(); $i++) {
+            $promise = $promise->then($onFulfilled, $onRejected);
+        }
+        // Add the last getRetries()+1 callable for managing the exceeded error
+        $promise = $promise->then($onFulfilled, function(Exception $e) use (&$count) {
+            $exceededMsg = sprintf("Exceeded maximum number of retries (%d)", $this->getRetries());
+            $this->logger->error(sprintf("Retry %d: %s", $count, $e->getMessage()));
+            $this->logger->error($exceededMsg);
+            throw new NoNodeAvailableException(sprintf("%s: %s", $exceededMsg, $e->getMessage()));
+        });
+        return $promise;
+    }
+
+    /**
+     * Get the OS version using php_uname if available
+     * otherwise it returns an empty string
+     */
+    private function getOSVersion(): string
+    {
+        if (!isset($this->OSVersion)) {
+            $disable_functions = (string) ini_get('disable_functions');
+            $this->OSVersion = strpos(strtolower($disable_functions), 'php_uname') !== false
+                ? ''
+                : php_uname("r");
+        }
+        return $this->OSVersion;
+    }
+
+    /**
+     * Returns the name and the version of the Client HTTP library used
+     * Here a list of supported libraries:
+     * gu => guzzlehttp/guzzle
+     */
+    private function getClientLibraryInfo(): array
+    {
+        switch(get_class($this->client)) {
+            case 'GuzzleHttp\Client':
+                $version = InstalledVersions::getPrettyVersion('guzzlehttp/guzzle');
+                return ['gu', $version];
+            default:
+                return [];
+        }
+    }
+}

+ 132 - 0
vendor/elastic/transport/src/TransportBuilder.php

@@ -0,0 +1,132 @@
+<?php
+/**
+ * Elastic Transport
+ *
+ * @link      https://github.com/elastic/elastic-transport-php
+ * @copyright Copyright (c) Elasticsearch B.V (https://www.elastic.co)
+ * @license   https://opensource.org/licenses/MIT MIT License
+ *
+ * Licensed to Elasticsearch B.V under one or more agreements.
+ * Elasticsearch B.V licenses this file to you under the MIT License.
+ * See the LICENSE file in the project root for more information.
+ */
+declare(strict_types=1);
+
+namespace Elastic\Transport;
+
+use Elastic\Transport\NodePool\NodePoolInterface;
+use Elastic\Transport\NodePool\SimpleNodePool;
+use Elastic\Transport\Exception;
+use Elastic\Transport\NodePool\Resurrect\NoResurrect;
+use Elastic\Transport\NodePool\Selector\RoundRobin;
+use Http\Discovery\Psr18ClientDiscovery;
+use Psr\Http\Client\ClientInterface;
+use Psr\Log\LoggerInterface;
+use Psr\Log\NullLogger;
+use Throwable;
+
+class TransportBuilder
+{
+    protected ClientInterface $client;
+    protected NodePoolInterface $nodePool;
+    protected LoggerInterface $logger;
+    protected array $hosts = [];
+
+    final public function __construct()
+    {
+    }
+
+    public static function create(): TransportBuilder
+    {
+        return new static();
+    }
+
+    public function setClient(ClientInterface $client): self
+    {
+        $this->client = $client;
+        return $this;
+    }
+
+    public function getClient(): ClientInterface
+    {
+        if (empty($this->client)) {
+            $this->client = Psr18ClientDiscovery::find();
+        }
+        return $this->client;
+    }
+
+    public function setNodePool(NodePoolInterface $nodePool): self
+    {
+        $this->nodePool = $nodePool;
+        return $this;
+    }
+
+    public function getNodePool(): NodePoolInterface
+    {
+        if (empty($this->nodePool)) {
+            $this->nodePool = new SimpleNodePool(
+                new RoundRobin(),
+                new NoResurrect()
+            );
+        }
+        return $this->nodePool;
+    }
+
+    public function setLogger(LoggerInterface $logger): self
+    {
+        $this->logger = $logger;
+        return $this;
+    }
+
+    public function getLogger(): LoggerInterface
+    {
+        if (empty($this->logger)) {
+            $this->logger = new NullLogger();
+        }
+        return $this->logger;
+    }
+
+    public function setHosts(array $hosts): self
+    {
+        $this->hosts = $hosts;
+        return $this;
+    }
+
+    public function getHosts(): array
+    {
+        return $this->hosts;
+    }
+
+    public function setCloudId(string $cloudId): self
+    {
+        $this->hosts = [$this->parseElasticCloudId($cloudId)];
+        return $this;
+    }
+
+    public function build(): Transport
+    {
+        return new Transport(
+            $this->getClient(),
+            $this->getNodePool()->setHosts($this->hosts),
+            $this->getLogger()
+        );
+    }
+
+    /**
+     * Return the URL of Elastic Cloud from the Cloud ID
+     */
+    private function parseElasticCloudId(string $cloudId): string
+    {
+        try {
+            list($name, $encoded) = explode(':', $cloudId);
+            list($uri, $uuids)    = explode('$', base64_decode($encoded));
+            list($es,)            = explode(':', $uuids);
+
+            return sprintf("https://%s.%s", $es, $uri);
+        } catch (Throwable $t) {
+            throw new Exception\CloudIdParseException(
+                'Could ID not valid'
+            );
+        }
+    }
+}

+ 87 - 0
vendor/elasticsearch/elasticsearch/BREAKING_CHANGES.md

@@ -0,0 +1,87 @@
+# 8.0
+
+This major release is a complete new PHP client for Elasticsearch. We build it from scratch!
+We tried to reduce the BC breaks as much as possible but there are some (big) differences: 
+
+## Architectural changes:
+
+- we changed the namespace, now everything is under `Elastic\Elasticsearch`
+- we used the [elastic-transport-php](https://github.com/elastic/elastic-transport-php) library for HTTP communications;
+- we changed the `Exception` model, using the namespace `Elastic\Elasticsearch\Exception`. All the exceptions extends the
+  `ElasticsearchException` interface, as in 7.x
+- we changed the response type of each endpoints using an [Elasticsearch](src/Response/Elasticsearch.php) response class.
+  This class wraps a a [PSR-7](https://www.php-fig.org/psr/psr-7/) response allowing the access of the body response
+  as array or object. This means you can access the API response as in 7.x, no BC break here! :angel:
+- we changed the `ConnectionPool` in `NodePool`. The `connection` naming was ambigous since the objects are nodes (hosts)
+
+## Specific changes:
+
+The following functions has been removed:
+
+- `ClientBuilder::getEndpoint()`
+- `ClientBuilder::getRegisteredNamespacesBuilders()`
+- `ClientBuilder::getRegisteredNamespacesBuilders()`
+- `ClientBuilder::defaultHandler()`
+- `ClientBuilder::multiHandler()`
+- `ClientBuilder::singleHandler()`
+- `ClientBuilder::setConnectionFactory()`
+- `ClientBuilder::setConnectionPool()`, you can use `ClientBuilder::setNodePool` instead
+- `ClientBuilder::setEndpoint()`
+- `ClientBuilder::registerNamespace()`
+- `ClientBuilder::setTransport()`, you can specify an HTTP PSR-18 client using `ClientBuilder::setHttpClient()`
+- `ClientBuilder::setHandler()`
+- `ClientBuilder::setTracer()`, you can only set a Logger using  `ClientBuilder::setLogger()`
+- `ClientBuilder::setSerializer()`
+- `ClientBuilder::setConnectionParams()`, you can use `ClientBuilder::setHttpClientOptions()` instead
+- `ClientBuilder::setSelector()`, you can set a `Selector` using the `setNodePool`, see [here](https://github.com/elastic/elastic-transport-php/blob/8.x/README.md#use-a-custom-selector) for more information
+- `ClientBuilder::setSniffOnStart()`
+- `ClientBuilder::includePortInHostHeader()`
+
+We removed the special `client` parameter passed in `$params` endpoints. In details: 
+
+- `$params['client']['never_retry']`
+- `$params['client']['verbose']`
+- `$params['client']['port_in_header']`
+- `$params['client']['future']`, you can set HTTP async using `Client::setAsync(true)`
+- `$params['client']['ignore']`, you can disable the Exception using `Client::setResponseException(false)`
+
+# 7.17
+
+- We changed the signature of `Elasticsearch\Common\EmptyLogger::log` adding the `void` return type.
+  This change has been needed to support psr/log v3.
+
+# 7.4
+
+- Using a deprecated parameter is notified triggering a [E_USER_DEPRECATED](https://www.php.net/manual/en/errorfunc.constants.php)
+  error (e.g. using the `type` parameter will generate a `Specifying types in urls has been deprecated`
+  deprecation message).
+- When `delete` with an empty `id` an `Elasticsearch\Common\Exceptions\RuntimeException\Missing404Exception`
+  exception is thrown. Previously it was a `Elasticsearch\Common\Exceptions\RuntimeException\InvalidArgumentException`.
+
+# 7.0
+
+- Requirement of PHP 7.1 instead of 7.0 that is not supported since 1 Jan 2019.
+  See [PHP supported version](https://www.php.net/supported-versions.php) for
+  more information.
+
+- Elasticsearch 7.0 deprecated APIs that accept types, introduced new typeless
+  APIs, and removed support for the _default_ mapping. Read [this](https://www.elastic.co/blog/moving-from-types-to-typeless-apis-in-elasticsearch-7-0)
+  blog post for more information.
+
+- Added type hints and return type declarations where possible
+  [#897](https://github.com/elastic/elasticsearch-php/pull/897)
+
+# 6.8
+
+- Method taskList() renamed to list() in TasksNamespace
+
+# 6.7
+
+- `{type}` part in `indices.put_mapping` API is not required anymore, see new specification [here](https://github.com/elastic/elasticsearch/blob/v6.7.0/rest-api-spec/src/main/resources/rest-api-spec/api/indices.put_mapping.json)
+
+# 6.0
+
+- [Search Templates]: PutTemplate endpoint has been removed (see [Elasticsearch Breaking Changes](https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking_60_scripting_changes.html#_stored_search_template_apis_removed)),
+use PutScript instead.
+
+- [#674](https://github.com/elastic/elasticsearch-php/pull/674) `ClientBuilder::defaultLogger()` method was removed. It is recommended to [create the logger object manually](https://github.com/elastic/elasticsearch-php/blob/master/docs/configuration.asciidoc#enabling-the-logger).

+ 484 - 0
vendor/elasticsearch/elasticsearch/CHANGELOG.md

@@ -0,0 +1,484 @@
+## Release 8.0.0-rc2
+
+- Added the common parameters in all the endpoints
+  [6427f8c](https://github.com/elastic/elasticsearch-php/commit/6427f8c42ba2afbe82c00adffdf93dd60b439432)
+
+## Release 8.0.0-rc1
+
+- Fixed query string in API endpoints + added a first integration test
+  [e404235](https://github.com/elastic/elasticsearch-php/commit/e404235890b53a99242f7fc5ddea6ee6b2459e8f)
+- Added AdapterOptions class and setNodePool() in ClientBuilder
+  [9150f71](https://github.com/elastic/elasticsearch-php/commit/9150f717488ddb74d83a119d215c0584aa98c95a)
+- Fixed urlencode in params, Exception in test code generation
+  [142327b](https://github.com/elastic/elasticsearch-php/commit/142327b3cb730042ec0b21b7c6076164bb0721ed)
+- Improved client/server response exception messages
+  [50de3e6](https://github.com/elastic/elasticsearch-php/commit/50de3e60fc9b0167a948a992fda78bc5e1a42152)
+
+## Release 8.0.0-alpha
+
+First alpha release of elasticsearch-php 8.0.0.
+
+This major release is a complete new PHP client for Elasticsearch. We build it from scratch!
+We tried to reduce the BC breaks as much as possible but there are some (big) differences: 
+
+### Architectural changes:
+
+- we changed the namespace, now everything is under `Elastic\Elasticsearch`
+- we used the [elastic-transport-php](https://github.com/elastic/elastic-transport-php) library for HTTP communications;
+- we changed the `Exception` model, using the namespace `Elastic\Elasticsearch\Exception`. All the exceptions extends the
+  `ElasticsearchException` interface, as in 7.x
+- we changed the response type of each endpoints using an [Elasticsearch](src/Response/Elasticsearch.php) response class.
+  This class wraps a a [PSR-7](https://www.php-fig.org/psr/psr-7/) response allowing the access of the body response
+  as array or object. This means you can access the API response as in 7.x, no BC break here! :angel:
+- we changed the `ConnectionPool` in `NodePool`. The `connection` naming was ambigous since the objects are nodes (hosts)
+
+You can have a look at the [BREAKING_CHANGES](BREAKING_CHANGES.md) file for more information.
+
+## Release 7.17.0
+
+- Allow psr/log v3
+  [#1184](https://github.com/elastic/elasticsearch-php/pull/1184)
+
+## Release 7.16.0
+
+- Added support of includePortInHostHeader in ClientBuilder::fromConfig
+  [#1181](https://github.com/elastic/elasticsearch-php/pull/1181)
+- Fixed UTF-16 issue in SmartSerializer with single unpaired surrogate in unicode escape
+  [#1179](https://github.com/elastic/elasticsearch-php/pull/1179)
+- Replace trait with abstract class to avoid Deprecated Functionality issue in PHP 8.1
+  [#1175](https://github.com/elastic/elasticsearch-php/pull/1175)
+
+## Release 7.15.0
+
+- Updated endpoints for Elasticsearch 7.15.0
+  [995f6d4](https://github.com/elastic/elasticsearch-php/commit/995f6d4bde7de76004e95d7a434b1d59da7a7e75)
+
+## Release 7.14.0
+
+- Usage of psr/log version 2
+  [#1154](https://github.com/elastic/elasticsearch-php/pull/1154)
+- Update search iterators to send `scroll_id` inside the request body
+  [#1134](https://github.com/elastic/elasticsearch-php/pull/1134)
+- Added the `ingest.geoip.downloader.enabled=false` setting for ES
+  [5867351](https://github.com/elastic/elasticsearch-php/commit/586735109dc18f22bfdf3b73ab0621b37e857be1)
+- Removed phpcs for autogenerated files (endpoints)
+  [651c57b](https://github.com/elastic/elasticsearch-php/commit/651c57b2e6bf98a0fd48220949966e630e5a804a)
+
+## Release 7.13.1
+
+- Added port in url for trace and logger messages
+  [#1126](https://github.com/elastic/elasticsearch-php/pull/1126) 
+## Release 7.13.0
+
+- (DOCS) Added the HTTP meta data section
+  [#1143](https://github.com/elastic/elasticsearch-php/pull/1143)
+- Added support for API Compatibility Header
+  [#1142](https://github.com/elastic/elasticsearch-php/pull/1142)
+- (DOCS) Added Helpers section to PHP book
+  [#1129](https://github.com/elastic/elasticsearch-php/pull/1129)
+- Added the API description in phpdoc section for each endpoint
+  [9e05c81](https://github.com/elastic/elasticsearch-php/commit/9e05c8108b638b60cc676b6a4f4be97c7df9eb64)
+- Usage of PHPUnit 9 only + migrated xml configurations
+  [038b5dd](https://github.com/elastic/elasticsearch-php/commit/038b5dd043dc76b20b9f5f265ea914a38d33568d)
+
+## Release 7.12.0
+
+- Updated the endpoints for ES 7.12 + removed cpliakas/git-wrapper
+  in favor of symplify/git-wrapper
+  [136d5b9](https://github.com/elastic/elasticsearch-php/commit/136d5b9717b3806c6b34ef8a5076bfe7cee8b46e)
+- Fixed warning header as array in YAML tests generator
+  [0d81be1](https://github.com/elastic/elasticsearch-php/commit/0d81be131bfc7eff6ef82468e61c16077a892aab)
+- Refactored TEST_SUITE with free, platinum + removed old YamlRunnerTest
+  [f69d96f](https://github.com/elastic/elasticsearch-php/commit/f69d96fc283580177002b4088c279c3d0c07befe)
+  
+## Release 7.11.0
+
+- Added the `X-Elastic-Client-Meta` header which is used by Elastic Cloud
+  and can be disabled with `ClientBuilder::setElasticMetaHeader(false)`
+  [#1089](https://github.com/elastic/elasticsearch-php/pull/1089)
+- Replaced `array_walk` with `array_map` in `Connection::getURI` for PHP 8
+  compatibility
+  [#1075](https://github.com/elastic/elasticsearch-php/pull/1075)
+- Remove unnecessary `InvalidArgumentExceptions`
+  [#1069](https://github.com/elastic/elasticsearch-php/pull/1069)
+- Introducing PHP 8 compatibility
+  [#1063](https://github.com/elastic/elasticsearch-php/pull/1063) 
+- Replace Sami by Doctum and fix `.gitignore`
+  [#1062](https://github.com/elastic/elasticsearch-php/pull/1062)
+
+## Release 7.10.0
+
+- Updated endpoints and namespaces for Elasticsearch 7.10
+  [3ceb748](https://github.com/elastic/elasticsearch-php/commit/3ceb7484a111aa20126168460c79f098c4fe0792)
+- Fixed ClientBuilder::fromConfig allowing multiple function
+  parameters (e.g. setApiKey)
+  [#1076](https://github.com/elastic/elasticsearch-php/pull/1076)
+- Refactored the YAML tests using generated PHPUnit code
+  [85fadc2](https://github.com/elastic/elasticsearch-php/commit/85fadc2bd4b2b309b19761a50ff13010d43a524d)
+
+## Release 7.9.1
+
+- Fixed using object instead of array in onFailure transport event
+  [#1066](https://github.com/elastic/elasticsearch-php/pull/1066)
+- Fixed reset custom header after endpoint call
+  [#1065](https://github.com/elastic/elasticsearch-php/pull/1065)
+- Show generic error messages when server returns no response
+  [#1056](https://github.com/elastic/elasticsearch-php/pull/1056)
+
+## Release 7.9.0
+
+- Updated endpoints and namespaces for Elasticsearch 7.9
+  [28bf0ed](https://github.com/elastic/elasticsearch-php/commit/28bf0ed6df6bc95f83f369509431d97907bfdeb0)
+- Moved `scroll_id` into `body` for search operations in the documentation
+  [#1052](https://github.com/elastic/elasticsearch-php/pull/1052)
+- Fixed PHP 7.4 preloading feature for autoload.php
+  [#1051](https://github.com/elastic/elasticsearch-php/pull/1051)
+- Improved message of JSON errors using `json_last_error_msg()`
+  [#1045](https://github.com/elastic/elasticsearch-php/pull/1045)
+
+## Release 7.8.0
+
+- Updated endpoints and namespaces for Elasticsearch 7.8
+  [f2a0828](https://github.com/elastic/elasticsearch-php/commit/f2a0828d5ee9d126ad63e2a1d43f70b4013845e2)
+- Improved documentation
+  [#1038](https://github.com/elastic/elasticsearch-php/pull/1038)
+  [#1027](https://github.com/elastic/elasticsearch-php/pull/1027)
+  [#1025](https://github.com/elastic/elasticsearch-php/pull/1025)
+
+## Release 7.7.0
+
+- Removed setId() into endpoints, fixed `util/GenerateEndpoints.php`
+  [#1026](https://github.com/elastic/elasticsearch-php/pull/1026)
+- Fixes JsonErrorException with code instead of message
+  [#1022](https://github.com/elastic/elasticsearch-php/pull/1022)
+- Better exception message for Could not parse URI
+  [#1016](https://github.com/elastic/elasticsearch-php/pull/1016)
+- Added JUnit log for PHPUnit
+  [88b7e1c](https://github.com/elastic/elasticsearch-php/commit/88b7e1ce80a5a52c1d64d00c55fef77097bbd8a9)
+- Added the XPack endpoints
+  [763d91a](https://github.com/elastic/elasticsearch-php/commit/763d91a3d506075316b84a38b2bed7a098da5028)
+
+## Release 7.6.1
+
+- Fixed issue with `guzzlehttp/ringphp` and `guzzle/streams`
+  using forks `ezimuel/ringphp` and `ezimuel/guzzlestreams`
+  [92a6a4a](https://github.com/elastic/elasticsearch-php/commit/92a6a4adda5eafd1823c7c9c386e2c7e5e75cd08)
+
+## Release 7.6.0
+
+- Generated the new endpoints for Elasticsearch 7.6.0
+  [be31f31](https://github.com/elastic/elasticsearch-php/commit/be31f317af704f333b43bbcc7c01ddc7c91ec6f8)
+
+## Release 7.5.1
+
+- Fixes port missing in log [#925](https://github.com/elastic/elasticsearch-php/issues/925)
+  [75e0888](https://github.com/elastic/elasticsearch-php/commit/125594b40d167ef1509b3ee49a3f93426390c426)
+- Added `ClientBuilder::includePortInHostHeader()` to add the
+  `port` in the `Host` header. This fixes [#993](https://github.com/elastic/elasticsearch-php/issues/993).
+  By default the `port` is not included in the `Host` header.
+  [#997](https://github.com/elastic/elasticsearch-php/pull/997)
+- Replace abandoned packages: ringphp, streams and phpstan-shim 
+  [#996](https://github.com/elastic/elasticsearch-php/pull/996)
+- Fixed gzip compression when setting Cloud Id
+  [#986](https://github.com/elastic/elasticsearch-php/pull/986)
+
+## Release 7.5.0
+
+- Fixed `Client::extractArgument` iterable casting to array;
+  this allows passing a `Traversable` body for some endpoints
+  (e.g. Bulk, Msearch, MsearchTemplate)
+  [#983](https://github.com/elastic/elasticsearch-php/pull/983)
+- Fixed the Response Exception if the `reason` field is null
+  [#980](https://github.com/elastic/elasticsearch-php/pull/980)
+- Added support for PHP 7.4
+  [#976](https://github.com/elastic/elasticsearch-php/pull/976)
+
+## Release 7.4.1
+
+- We added the suppress operator `@` for the deprecation messages `@trigger_error()`.
+  With this approach we don't break existing application that convert PHP errors in Exception
+  (e.g. using Laravel with issue https://github.com/babenkoivan/scout-elasticsearch-driver/issues/297)
+  Using the `@` operator is still possible to intercept the deprecation message using
+  a custom error handler.
+  [#973](https://github.com/elastic/elasticsearch-php/pull/973)
+- Add missing leading slash in the URL of put mapping endpoint
+  [#970](https://github.com/elastic/elasticsearch-php/pull/970)
+- Fix pre 7.2 endpoint class name with aliases + reapply fix #947.
+  This PR solved the unexpected BC break introduce in 7.4.0 with the code
+  generation tool
+  [#968](https://github.com/elastic/elasticsearch-php/pull/968)
+
+## Release 7.4.0
+
+- Added the code generation for endpoints and namespaces based on
+  the [REST API specification](https://github.com/elastic/elasticsearch/tree/v7.4.2/rest-api-spec/src/main/resources/rest-api-spec/api)
+  of Elasticsearch. This tool is available in `util/GenerateEndpoints.php`.
+  [#966](https://github.com/elastic/elasticsearch-php/pull/966)
+- Fixed the asciidoc [endpoints documentation](https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/ElasticsearchPHP_Endpoints.html) based on the code generation 
+  using [Sami](https://github.com/FriendsOfPHP/Sami) project
+  [#966](https://github.com/elastic/elasticsearch-php/pull/966)
+- All the `experimental` and `beta` APIs are now signed with
+  a `@note` tag in the phpdoc section (e.g. [$client->rankEval()](https://github.com/elastic/elasticsearch-php/blob/master/src/Elasticsearch/Client.php)). For more information read the [experimental and beta APIs](docs/experimental-beta-apis.asciidoc)
+  section in the documentation.
+  [#966](https://github.com/elastic/elasticsearch-php/pull/966)
+- Removed `AlreadyExpiredException` since it has been removed
+  from Elasticsearch with https://github.com/elastic/elasticsearch/pull/24857
+  [#954](https://github.com/elastic/elasticsearch-php/pull/954)
+
+## Release 7.3.0
+
+- Added support for simplified access to the `X-Opaque-Id` header
+  [#952](https://github.com/elastic/elasticsearch-php/pull/952)
+- Added the HTTP port in the log messages
+  [#950](https://github.com/elastic/elasticsearch-php/pull/950)
+- Fixed hostname with underscore (ClientBuilder::prependMissingScheme)
+  [#949](https://github.com/elastic/elasticsearch-php/pull/949)
+- Removed unused Monolog in ClientBuilder
+  [#948](https://github.com/elastic/elasticsearch-php/pull/948)
+  
+## Release 7.2.2
+
+- Reintroduced the optional parameter in `Elasticsearch\Namespaces\IndicesNamespace::getAliases()`.
+  This fixes the BC break introduced in 7.2.0 and 7.2.1.
+  [#947](https://github.com/elastic/elasticsearch-php/pull/)
+
+## Release 7.2.1
+
+- Reintroduced `Elasticsearch\Namespaces\IndicesNamespace::getAliases()` as proxy
+  to `IndicesNamespace::getAlias()` to prevent BC breaks. The `getAliases()` is
+  marked as deprecated and it will be removed from `elasticsearch-php 8.0`
+  [#943](https://github.com/elastic/elasticsearch-php/pull/943)
+
+### Docs
+
+- Fixed missing put mapping code snippet in code examples
+  [#938](https://github.com/elastic/elasticsearch-php/pull/938)
+
+# Release 7.2.0
+
+- Updated the API endpoints for working with Elasticsearch 7.2.0:
+    - added `wait_for_active_shards` parameter to `indices.close` API;
+    - added `expand_wildcards` parameter to `cluster.health` API;
+    - added include_unloaded_segments`, `expand_wildcards`, `forbid_closed_indices`
+      parameters to `indices.stats` API.
+  [[27d721b]](https://github.com/elastic/elasticsearch-php/pull/933/commits/27d721ba44b8c199388650c5a1c8bd69757229aa)
+- Updated the phpdoc parameters for all the API endpoints
+  [[27d721b]](https://github.com/elastic/elasticsearch-php/pull/933/commits/27d721ba44b8c199388650c5a1c8bd69757229aa)  
+- Improved the Travis CI speed using cache feature with composer
+  [#929](https://github.com/elastic/elasticsearch-php/pull/929)
+- Fixed `php_uname()` usage checking if it is disabled
+  [#927](https://github.com/elastic/elasticsearch-php/pull/927)
+- Added support of Elastic Cloud ID and API key authentication
+  [#923](https://github.com/elastic/elasticsearch-php/pull/923)
+
+## Release 7.1.1
+
+- Fixed `ClientBuilder::setSSLVerification()` to accept string or boolean
+  [#917](https://github.com/elastic/elasticsearch-php/pull/917)
+- Fix type hinting for `setBody` in `Elasticsearch\Endpoints\Ingest\Pipeline\Put`
+  [#913](https://github.com/elastic/elasticsearch-php/pull/913)
+
+## Release 7.1.0
+
+- Added warning log for Elasticsearch response containing the `Warning` header
+  [#911](https://github.com/elastic/elasticsearch-php/pull/911)
+- Fixed #838 hosting company is blocking ports because of `YamlRunnerTest.php`
+  [#844](https://github.com/elastic/elasticsearch-php/pull/844)
+- Specialized inheritance of `NoNodesAvailableException` to extend `ServerErrorResponseException`
+  instead of the generic `\Exception`
+  [#607](https://github.com/elastic/elasticsearch-php/pull/607)
+- Fixed scroll TTL is extracted but not set as a body param
+  [#907](https://github.com/elastic/elasticsearch-php/pull/907)
+
+### Testing
+
+- Improved the speed of integration tests removing snapshots delete from `YamlRunnerTest::clean`
+  [#911](https://github.com/elastic/elasticsearch-php/pull/911)
+- Reduced the number of skipping YAML integration tests from 20 to 6
+  [#911](https://github.com/elastic/elasticsearch-php/pull/911)
+
+### Docs
+
+- Documentation updated for Elasticsearch 7
+  [#904](https://github.com/elastic/elasticsearch-php/pull/904)
+
+## Release 7.0.2
+
+- Fixed incorrect return type hint when using async requests/futures
+  [#905](https://github.com/elastic/elasticsearch-php/pull/905)
+
+## Release 7.0.1
+
+- Fixed SniffingConnectionPool removing the return type of Connection::sniff()
+  [#899](https://github.com/elastic/elasticsearch-php/pull/899)
+
+## Release 7.0.0
+
+- Requirement of PHP 7.1 instead of 7.0 that is not supported since 1 Jan 2019.
+  [#897](https://github.com/elastic/elasticsearch-php/pull/897)
+- Code refactoring using type hints and return type declarations where possible
+  [#897](https://github.com/elastic/elasticsearch-php/pull/897)
+- Update vendor libraries (PHPUnit 7.5, Symfony YAML 4.3, etc)
+  [#897](https://github.com/elastic/elasticsearch-php/pull/897)
+- Updated all the API endpoints using the [latest 7.0.0 specs](https://github.com/elastic/elasticsearch/tree/v7.0.0/rest-api-spec/src/main/resources/rest-api-spec/api) of Elasticsearch [#897](https://github.com/elastic/elasticsearch-php/pull/897)
+- Added the `User-Agent` in each HTTP request [#898](https://github.com/elastic/elasticsearch-php/pull/898)
+- Simplified the logging methods `logRequestFail($request, $response, $exception)`
+  and `logRequestSuccess($request, $response)` in `Elasticsearch\Connections\Connection`
+  [#876](https://github.com/elastic/elasticsearch-php/pull/876)
+- Fix `json_encode` for unicode(emoji) characters [856](https://github.com/elastic/elasticsearch-php/pull/856)
+- Fix HTTP port specification using CURLOPT_PORT, not anymore in the host [782](https://github.com/elastic/elasticsearch-php/pull/782)
+
+## Release 6.7.1
+
+- Added `track_total_hits` in `search` endpoint [0c9ff47](https://github.com/elastic/elasticsearch-php/commit/9f4f0dfa331c4f50d2c88c0068afd3062e6ea353)
+
+## Release 6.7.0
+
+- Removed requirement of `{type}` part in `indices.put_mapping`, see new API specification [here](https://github.com/elastic/elasticsearch/blob/v6.7.0/rest-api-spec/src/main/resources/rest-api-spec/api/indices.put_mapping.json)
+- Added `seq_no_primary_term` parameter in `bulk` endpoint [#884](https://github.com/elastic/elasticsearch-php/pull/884)
+- Added `include_type_name`, `if_primary_term`, `if_seq_no` in `delete` endpoint [#884](https://github.com/elastic/elasticsearch-php/pull/884)
+- Added `include_type_name` in `get`, `index`, `indices.create`, `indices.field.get`, `indices.get`, `indices.mapping.get`, `indices.mapping.getfield`, `indices.mapping.put`, `indices.rollover`, `indices.template.get`, `indices.template.put` endpoints [#884](https://github.com/elastic/elasticsearch-php/pull/884)
+- Added `seq_no_primary_term` in `search` endpoint [#884](https://github.com/elastic/elasticsearch-php/pull/884)
+- Added `if_primary_term', 'if_seq_no`in `update` endpoint [#884](https://github.com/elastic/elasticsearch-php/pull/884)
+
+### Testing
+
+- Fix tests for PHP 7 with ES 6.7 [[5401479](https://github.com/elastic/elasticsearch-php/pull/884/commits/5401479)
+
+### Docs
+
+- [DOCS] Fix doc links in README [[5a1782d]](https://github.com/elastic/elasticsearch-php/pull/884/commits/5a1782d)
+
+## Release 6.5.0
+
+- Remove `_suggest` endpoint, which has disappeared from ES6 [#763](https://github.com/elastic/elasticsearch-php/pull/763)
+- Fix `SearchHitIterator` key duplicates [#872](https://github.com/elastic/elasticsearch-php/pull/872)
+- Fixing script get and delete by removing `lang` from endpoint url [#814](https://github.com/elastic/elasticsearch-php/pull/814)
+- Fix `SearchResponseIterator` is scrolling the first page twice [#871](https://github.com/elastic/elasticsearch-php/pull/871), issue [#595](https://github.com/elastic/elasticsearch-php/issues/595)
+
+### Docs
+
+- [DOCS] Add reference to `parse_url()` for Extended Host Configuration [#778](https://github.com/elastic/elasticsearch-php/pull/778)
+- [DOCS] Update php version requirement [#757](https://github.com/elastic/elasticsearch-php/pull/757)
+- [DOCS] Update `community.asciidoc`, added `ElasticSearchQueryDSL` project [#749](https://github.com/elastic/elasticsearch-php/pull/749)
+- [DOCS] Proper return type array for get method for `IndicesNamespace` [#651](https://github.com/elastic/elasticsearch-php/pull/651)
+- [DOCS] Fix full docs link [#862](https://github.com/elastic/elasticsearch-php/pull/862)
+- [DOCS] Update breaking-changes.asciidoc, removal of ClientBuilder::defaultLogger() [879](https://github.com/elastic/elasticsearch-php/pull/879)
+
+### Testing
+
+- Fix integration tests using docker [#867](https://github.com/elastic/elasticsearch-php/pull/867)
+
+## Release 6.1.0
+
+- Add 'wait_for_no_initializing_shards' to Cluster\Health whitelist [[98a372c]](http://github.com/elasticsearch/elasticsearch-php/commit/98a372c)
+- Add 'wait_for_active_shards' to Indices\Open whitelist [[0275fe5]](http://github.com/elasticsearch/elasticsearch-php/commit/0275fe5)
+- Add 'max_concurrent_searches' to msearch whitelist [[5624123]](http://github.com/elasticsearch/elasticsearch-php/commit/5624123)
+- Add 'max_concurrent_shard_requests' param to MSearch endpoint [[00800c1]](http://github.com/elasticsearch/elasticsearch-php/commit/00800c1)
+- Add ReloadSecureSettings endpoint [[75b32b2]](http://github.com/elasticsearch/elasticsearch-php/commit/75b32b2)
+- Remove obsolete Shutdown API [[c75d690]](http://github.com/elasticsearch/elasticsearch-php/commit/c75d690)
+- Fix: Restore::setBody() does not throw exceptions (#828) [[a96bb9c]](http://github.com/elasticsearch/elasticsearch-php/commit/a96bb9c)
+- Fixed php 7.3 compatibility for elasticsearch 6 (#827) [[77916b2]](http://github.com/elasticsearch/elasticsearch-php/commit/77916b2)
+- Fix issue with getting status of respository and snapshots. (#719) [[2d11682]](http://github.com/elasticsearch/elasticsearch-php/commit/2d11682)
+- fix DeleteByQuery param white list (#748) [[8d963c6]](http://github.com/elasticsearch/elasticsearch-php/commit/8d963c6)
+
+### Docs
+- [Docs] Update elasticsearch version (#743) [[043ad4f]](http://github.com/elasticsearch/elasticsearch-php/commit/043ad4f)
+- [DOCS] reuqest → request typo fix (#728) [[68db9f0]](http://github.com/elasticsearch/elasticsearch-php/commit/68db9f0)
+- [DOCS] Fix documentation example of upsert (#730) [[805329b]](http://github.com/elasticsearch/elasticsearch-php/commit/805329b)
+- [DOCS] Replace deprecated string type with keyword type for index operations (#736) [[a550507]](http://github.com/elasticsearch/elasticsearch-php/commit/a550507)
+
+### Testing
+
+- [TEST] Fix travis untarring [[0106351]](http://github.com/elasticsearch/elasticsearch-php/commit/0106351)
+- [TEST] Download artifacts directly, migrate off esvm [[1e9f06c]](http://github.com/elasticsearch/elasticsearch-php/commit/1e9f06c)
+- Update Travis Matrix [[aa32b12]](http://github.com/elasticsearch/elasticsearch-php/commit/aa32b12)
+- [TEST] Fix teardown in yaml runner [[098030e]](http://github.com/elasticsearch/elasticsearch-php/commit/098030e)
+- Add Indices/Split endpoint [[46d5a7a]](http://github.com/elasticsearch/elasticsearch-php/commit/46d5a7a)
+- [TEST] Blacklist some bad yml tests [[d5edab7]](http://github.com/elasticsearch/elasticsearch-php/commit/d5edab7)
+
+## Release 6.0.1
+
+- Fix imports [[0106351]](http://github.com/elasticsearch/elasticsearch-php/commit/0106351)
+- ClientBuilder: setLogger() and setTracer() only accept \Psr\Log\LoggerInterface (#673) [[0270c4f]](http://github.com/elasticsearch/elasticsearch-php/commit/0270c4f)
+- fix for invalid GET /_aliases route. (#663) [[6d467fa]](http://github.com/elasticsearch/elasticsearch-php/commit/6d467fa)
+- Remove PutTemplate endpoint, lang param of PutScript no longer used [[a13544f]](http://github.com/elasticsearch/elasticsearch-php/commit/a13544f)
+  Note: I'm considering PutTemplate removal a bugfix, since the API doesn't exist in ES Core anymore. Using the endpoint throws an error,
+  so the removal is just fixing an existing bug, hence `6.0.1` instead of `6.1.0`
+
+### Docs
+- [DOCS] Add note about separate X-Pack library to README (#694) [[6ffdef8]](http://github.com/elasticsearch/elasticsearch-php/commit/6ffdef8)
+- [DOCS] add link to community index helper (#681) [[644f7f7]](http://github.com/elasticsearch/elasticsearch-php/commit/644f7f7)
+- [DOCS] Add missing content for breaking changes page [[5a515ac]](http://github.com/elasticsearch/elasticsearch-php/commit/5a515ac)
+- [DOCS] update autogenerated api docs [[7f2cd0b]](http://github.com/elasticsearch/elasticsearch-php/commit/7f2cd0b)
+- [DOCS] Update version tables [[b824bb7]](http://github.com/elasticsearch/elasticsearch-php/commit/b824bb7)
+
+## Release 6.0.0
+
+
+- Add Ingest\ProcessorGrok endpoint [[800b1ec]](http://github.com/elasticsearch/elasticsearch-php/commit/800b1ec)
+- Add Cluster\RemoteInfo endoint [[dfd8c3c]](http://github.com/elasticsearch/elasticsearch-php/commit/dfd8c3c)
+- Add Unauthorized401Exception [[cc68efd]](http://github.com/elasticsearch/elasticsearch-php/commit/cc68efd)
+- Add verify as acceptable query string parameter for createRepository (#665) [[885bfea]](http://github.com/elasticsearch/elasticsearch-php/commit/885bfea)
+- Fix parsing of NodesInfo for Sniffing [[e22f67f]](http://github.com/elasticsearch/elasticsearch-php/commit/e22f67f)
+- Do not schedule connection pool checks on 4xx level errors [[fd75e99]](http://github.com/elasticsearch/elasticsearch-php/commit/fd75e99)
+- Add 'terminate_after' to Count endpoint whitelist (#634) [[c3cacd7]](http://github.com/elasticsearch/elasticsearch-php/commit/c3cacd7)
+
+### Docs
+- [DOCS] Flip Branch / PHP Version table (#656) [[fa7bfb3]](http://github.com/elasticsearch/elasticsearch-php/commit/fa7bfb3)
+
+### Testing
+- [TEST] use proper TestCase parent clsas [[766b440]](http://github.com/elasticsearch/elasticsearch-php/commit/766b440)
+- [TEST] add PHPStan to build (#628) [[946cd65]](http://github.com/elasticsearch/elasticsearch-php/commit/946cd65)
+- [TEST] Fix some PHPCS violations in tests [[18a38dd]](http://github.com/elasticsearch/elasticsearch-php/commit/18a38dd)
+- [src] add PHP_CodeSniffer (#647) [[24900ef]](http://github.com/elasticsearch/elasticsearch-php/commit/24900ef)
+- [TEST] add PHP_CodeSniffer to build (#638) [[088a509]](http://github.com/elasticsearch/elasticsearch-php/commit/088a509)
+- [TEST] Use tests from corresponding ES version (#649) [[75c6680]](http://github.com/elasticsearch/elasticsearch-php/commit/75c6680)
+- [TEST] Add support for `bad_request` in yaml runner [[ad86f91]](http://github.com/elasticsearch/elasticsearch-php/commit/ad86f91)
+- [TEST] `max_compilations_per_minute` is now `max_compilations_rate` [[ebdba06]](http://github.com/elasticsearch/elasticsearch-php/commit/ebdba06)
+- [TEST] print elasticsearch.log if cluster fails to start [[fe796aa]](http://github.com/elasticsearch/elasticsearch-php/commit/fe796aa)
+- [TEST] move integration test to dedicated test file [[71ccfc1]](http://github.com/elasticsearch/elasticsearch-php/commit/71ccfc1)
+- [TEST] Client does not support accepting Yaml format responses [[fc9a9f9]](http://github.com/elasticsearch/elasticsearch-php/commit/fc9a9f9)
+
+
+
+## Release 6.0.0-beta1
+
+Woo!
+
+- Use upper-case "Host" header [[045aac4]](http://github.com/elasticsearch/elasticsearch-php/commit/045aac4)
+- Add 'allow_no_indices' param to Indices\Delete whitelist [[3a3a5ab]](http://github.com/elasticsearch/elasticsearch-php/commit/3a3a5ab)
+- Add 'verbose' param to Snapshot\Get whitelist [[b70b933]](http://github.com/elasticsearch/elasticsearch-php/commit/b70b933)
+- Add 'pre_filter_shard_size' param to Search whitelist [[f708d9d]](http://github.com/elasticsearch/elasticsearch-php/commit/f708d9d)
+- Add 'ignore_unavailable' param to Indices\Delete whitelist [[8133021]](http://github.com/elasticsearch/elasticsearch-php/commit/8133021)
+- Add 'include_defaults' param to Cluster\Settings\Get whitelist [[8e5ab38]](http://github.com/elasticsearch/elasticsearch-php/commit/8e5ab38)
+
+### Docs
+- [DOCS] Remove Sami from composer.json and update docs (#619) [[fcd5ff1]](http://github.com/elasticsearch/elasticsearch-php/commit/fcd5ff1)
+- [Docs] recommend composer/ca-bundle instead of Kdyby/CurlCaBundle (#613) [[7f43b2e]](http://github.com/elasticsearch/elasticsearch-php/commit/7f43b2e)
+
+
+### Testing
+
+- [TEST] Fix content-type assertions in test to match case [[5b37117]](http://github.com/elasticsearch/elasticsearch-php/commit/5b37117)
+- Capitalize 'Content-Type' for maximum compatibility [[b8ad96c]](http://github.com/elasticsearch/elasticsearch-php/commit/b8ad96c)
+- [TEST] Use percentage watermarks to be compatible with default flood [[95d2f89]](http://github.com/elasticsearch/elasticsearch-php/commit/95d2f89)
+- [TEST] remove watermark flood from static config [[9b71940]](http://github.com/elasticsearch/elasticsearch-php/commit/9b71940)
+- Shrink API was not setting body correctly [[e0f0985]](http://github.com/elasticsearch/elasticsearch-php/commit/e0f0985)
+- [TEST] Add some missing and required static configs [[38febbe]](http://github.com/elasticsearch/elasticsearch-php/commit/38febbe)
+- [TEST] Allow skipping individual tests inside of test file [[51b9b9b]](http://github.com/elasticsearch/elasticsearch-php/commit/51b9b9b)
+- Travis: add PHP 7.2 + ES 6.0 to build matrix (#622) [[061f100]](http://github.com/elasticsearch/elasticsearch-php/commit/061f100)
+- [TEST] tests code cleanup (#618) [[dc5d18c]](http://github.com/elasticsearch/elasticsearch-php/commit/dc5d18c)
+- [TEST] Fix RoundRobinSelector Tests (#617) [[23a0ba8]](http://github.com/elasticsearch/elasticsearch-php/commit/23a0ba8)
+- [TEST] skip new percentile tests for now [[b5d9613]](http://github.com/elasticsearch/elasticsearch-php/commit/b5d9613)
+- [TEST] drop HHVM from build [#611] (#616) [[21a2d24]](http://github.com/elasticsearch/elasticsearch-php/commit/21a2d24)
+- [TEST] Skip cat.aliases/20_headers.yml [[c83ca74]](http://github.com/elasticsearch/elasticsearch-php/commit/c83ca74)
+- [TEST] YamlRunnerTest should run both .yml and .yaml files [[98c2646]](http://github.com/elasticsearch/elasticsearch-php/commit/98c2646)
+- [TEST] build against ES 6 on Travis [[b5886a8]](http://github.com/elasticsearch/elasticsearch-php/commit/b5886a8)
+- [TEST] drop HHVM from build [#611] [[0a7b402]](http://github.com/elasticsearch/elasticsearch-php/commit/0a7b402)
+- [TEST] test tweaks to appease stricter types [[51f189e]](http://github.com/elasticsearch/elasticsearch-php/commit/51f189e)
+- Fix ClientBuilder - pass correct argument for Elasticsearch\Endpoints\MsearchTemplate::__construct. (#605) [[5f83b52]](http://github.com/elasticsearch/elasticsearch-php/commit/5f83b52)
+- [TEST] improve code quality of tests (#610) [[9ea2156]](http://github.com/elasticsearch/elasticsearch-php/commit/9ea2156)
+- [TEST] Support headers in yaml runner, do some bad-comment cleaning [[57b5489]](http://github.com/elasticsearch/elasticsearch-php/commit/57b5489)
+- [TEST] fix handling of format for Cat tests [[a24b7d1]](http://github.com/elasticsearch/elasticsearch-php/commit/a24b7d1)
+- [TEST] test files are now .yml instead of .yaml [[ceac5bd]](http://github.com/elasticsearch/elasticsearch-php/commit/ceac5bd)

+ 19 - 0
vendor/elasticsearch/elasticsearch/LICENSE

@@ -0,0 +1,19 @@
+Copyright 2022 Elasticsearch B.V (https://www.elastic.co)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.

+ 414 - 0
vendor/elasticsearch/elasticsearch/README.md

@@ -0,0 +1,414 @@
+<img align="right" width="auto" height="auto" src="https://www.elastic.co/static-res/images/elastic-logo-200.png"/>
+
+Elasticsearch PHP client
+========================
+
+[![Build status](https://github.com/elastic/elasticsearch-php/workflows/PHP%20test/badge.svg)](https://github.com/elastic/elasticsearch-php/actions) [![Latest Stable Version](https://poser.pugx.org/elasticsearch/elasticsearch/v/stable)](https://packagist.org/packages/elasticsearch/elasticsearch) [![Total Downloads](https://poser.pugx.org/elasticsearch/elasticsearch/downloads)](https://packagist.org/packages/elasticsearch/elasticsearch)
+
+This is the official PHP client for 
+[Elasticsearch](https://www.elastic.co/elasticsearch/).
+
+## Contents
+
+- [Getting started](#getting-started-)
+- [Configuration](#configuration)
+  - [Use Elastic Cloud](#use-elastic-cloud)
+- [Usage](#usage)
+  - [Index a document](#index-a-document)
+  - [Search a document](#search-a-document)
+  - [Delete a document](#delete-a-document)
+- [Versioning](#versioning)
+- [Backward Incompatible Changes](#backward-incompatible-changes-)
+- [Mock the Elasticsearch client](#mock-the-elasticsearch-client)
+- [FAQ](#faq-)
+- [Contribute](#contribute-)
+- [License](#license-)
+
+***
+
+## Getting started 🐣
+
+Using this client assumes that you have an 
+[Elasticsearch](https://www.elastic.co/elasticsearch/) server installed and 
+running.
+
+You can install the client in your PHP project using 
+[composer](https://getcomposer.org/):
+
+```bash
+composer require elasticsearch/elasticsearch
+```
+
+After the installation you can connect to Elasticsearch using the 
+`ClientBuilder` class. For instance, if your Elasticsearch is running on 
+`localhost:9200` you can use the following code:
+
+```php
+
+use Elastic\Elasticsearch\ClientBuilder;
+
+$client = ClientBuilder::create()
+    ->setHosts(['localhost:9200'])
+    ->build();
+
+// Info API
+$response = $client->info();
+
+echo $response['version']['number']; // 8.0.0
+```
+
+The `$response` is an object of `Elastic\Elasticsearch\Response\Elasticsearch`
+class that implements `ElasticsearchInterface`, PSR-7 
+[ResponseInterface](https://www.php-fig.org/psr/psr-7/#33-psrhttpmessageresponseinterface)
+and [ArrayAccess](https://www.php.net/manual/en/class.arrayaccess.php).
+
+This means the `$response` is a [PSR-7](https://www.php-fig.org/psr/psr-7/)
+object:
+
+```php
+echo $response->getStatusCode(); // 200
+echo (string) $response->getBody(); // Response body in JSON
+```
+
+and also an "array", meaning you can access the response body as an
+associative array, as follows:
+
+
+```php
+echo $response['version']['number']; // 8.0.0
+
+var_dump($response->asArray());  // response body content as array
+```
+
+Moreover, you can access the response body as object, string or bool:
+
+```php
+echo $response->version->number; // 8.0.0
+
+var_dump($response->asObject()); // response body content as object
+var_dump($response->asString()); // response body as string (JSON)
+var_dump($response->asBool());   // true if HTTP response code between 200 and 300
+```
+
+## Configuration
+
+Elasticsearch 8.0 offers 
+[security by default](https://www.elastic.co/blog/introducing-simplified-elastic-stack-security),
+that means it uses [TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security)
+for protect the communication between client and server.
+
+In order to configure `elasticsearch-php` for connecting to Elasticsearch 8.0 we
+need to have the certificate authority file (CA).
+
+You can install Elasticsearch in different ways, for instance using 
+[Docker](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html)
+you need to execute the followind command:
+
+```bash
+docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.1
+```
+Once you have the docker image installed, you can execute Elasticsearch, for 
+instance using a single-node cluster configuration, as follows:
+
+```bash
+docker network create elastic
+docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.0.1
+```
+
+This command creates an `elastic` Docker network and start Elasticsearch
+using the port `9200` (default).
+
+When you run the docker imnage a password is generated for the `elastic` user
+and it's printed to the terminal (you might need to scroll back a bit in the 
+terminal to view it). You have to copy it since we will need to connect to 
+Elasticsearch.
+
+Now that Elasticsearch is running we can get the `http_ca.crt` file certificate.
+We need to copy it from the docker instance, using the following command:
+
+```bash
+docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
+```
+
+Once we have the `http_ca.crt` certificate and the `password`, copied during the
+start of Elasticsearch, we can use it to connect with `elasticsearch-php` as 
+follows:
+
+```php
+$client = ClientBuilder::create()
+    ->setHosts(['https://localhost:9200'])
+    ->setBasicAuthentication('elastic', 'password copied during Elasticsearch start')
+    ->setCABundle('path/to/http_ca.crt')
+    ->build();
+```
+
+For more information about the Docker configuration of Elasticsearch you can
+read the official documentation 
+[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html).
+
+### Use Elastic Cloud
+
+You can use [Elastic Cloud](https://www.elastic.co/cloud/) as server with 
+`elasticsearch-php`. Elastic Cloud is the PaaS solution offered by 
+[Elastic](https://www.elastic.co).
+
+For connecting to Elastic Cloud you just need the `Cloud ID` and the `API key`.
+
+You can get the `Cloud ID` from the `My deployment` page of your dashboard (see 
+the red rectangle reported in the screenshot).
+
+![Cloud ID](docs/images/cloud_id.png)
+
+You can generate an `API key` in the `Management` page under the section 
+`Security`.
+
+![Security](docs/images/create_api_key.png)
+
+When you click on `Create API key` button you can choose a name and set the 
+other options (for example, restrict privileges, expire after time, and so on).
+
+![Choose an API name](docs/images/api_key_name.png)
+
+After this step you will get the `API key`in the API keys page. 
+
+![API key](docs/images/cloud_api_key.png)
+
+**IMPORTANT**: you need to copy and store the `API key`in a secure place, since 
+you will not be able to view it again in Elastic Cloud.
+
+Once you have collected the `Cloud ID` and the `API key`, you can use 
+`elasticsearch-php` to connect to your Elastic Cloud instance, as follows:
+
+```php
+$client = ClientBuilder::create()
+    ->setElasticCloudId('insert here the Cloud ID')
+    ->setApiKey('insert here the API key')
+    ->build();
+```
+
+## Usage
+
+The `elasticsearch-php` client offers 400+ endpoints for interacting with 
+Elasticsearch. A list of all these endpoints is available in the 
+[official documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html)
+of Elasticsearch APIs.
+
+Here we reported the basic operation that you can perform with the client: 
+index, search and delete.
+
+### Index a document
+
+You can store (index) a JSON document in Elasticsearch using the following code:
+
+```php
+use Elastic\Elasticsearch\Exception\ClientResponseException;
+use Elastic\Elasticsearch\Exception\ServerResponseException;
+
+$params = [
+    'index' => 'my_index',
+    'body'  => [ 'testField' => 'abc']
+];
+
+try {
+  $response = $client->index($params);
+} catch (ClientResponseException $e) {
+  // manage the 4xx error
+} catch (ServerResponseException $e) {
+  // manage the 5xx error
+} catch (Exception $e) {
+  // eg. network error like NoNodeAvailableException
+}
+
+print_r($response->asArray());  // response body content as array
+```
+
+Elasticsearch stores the `{"testField":"abc"}` JSON document in the `my_index` 
+index. The `ID` of the document is created automatically by Elasticsearch and 
+stored in `$response['_id']` field value. If you want to specify an `ID` for the 
+document you need to store it in `$params['id']`.
+
+You can manage errors using `ClientResponseException` and 
+`ServerResponseException`. The PSR-7 response is available using 
+`$e->getResponse()` and the HTTP status code is available using `$e->getCode()`.
+
+### Search a document
+
+Elasticsearch provides many different way to search documents. The simplest 
+search that you can perform is a 
+[match query](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html),
+as follows:
+
+```php
+$params = [
+    'index' => 'my_index',
+    'body'  => [
+        'query' => [
+            'match' => [
+                'testField' => 'abc'
+            ]
+        ]
+    ]
+];
+$response = $client->search($params);
+
+printf("Total docs: %d\n", $response['hits']['total']['value']);
+printf("Max score : %.4f\n", $response['hits']['max_score']);
+printf("Took      : %d ms\n", $response['took']);
+
+print_r($response['hits']['hits']); // documents
+```
+
+Using Elasticsearch you can perform different query search, for more information 
+we suggest toread the official documention reported 
+[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-your-data.html).
+
+### Delete a document
+
+You can delete a document specifing the `index` name and the `ID` of the 
+document, as follows:
+
+```php
+use Elastic\Elasticsearch\Exception\ClientResponseException;
+
+try {
+    $response = $client->delete([
+        'index' => 'my_index',
+        'id' => 'my_id'
+    ]);
+} catch (ClientResponseException $e) {
+    if ($e->getCode() === 404) {
+        // the document does not exist
+    }
+}
+if ($response['acknowledge'] === 1) {
+    // the document has been delete
+}
+```
+
+For more information about the Elasticsearch REST API you can read the official 
+documentation [here](https://www.elastic.co/guide/en/elasticsearch/reference/current/rest-apis.html).
+
+### Versioning
+
+This client is versioned and released alongside Elasticsearch server.
+
+To guarantee compatibility, use the most recent version of this library within 
+the major version of the corresponding Enterprise Search implementation.
+
+For example, for Elasticsearch `7.16`, use `7.16` of this library or above, but 
+not `8.0`.
+
+## Backward Incompatible Changes :boom:
+
+The 8.0.0 version of `elasticsearch-php` contains a new implementation compared 
+with 7.x. It supports [PSR-7](https://www.php-fig.org/psr/psr-7/) for HTTP 
+messages and [PSR-18](https://www.php-fig.org/psr/psr-18/) for HTTP client 
+communications. 
+
+We tried to reduce the BC breaks as much as possible with `7.x` but there are 
+some (big) differences:
+
+- we changed the namespace, now everything is under `Elastic\Elasticsearch`
+- we used the 
+  [elastic-transport-php](https://github.com/elastic/elastic-transport-php) 
+  library for HTTP communications;
+- we changed the `Exception` model, using the namespace 
+  `Elastic\Elasticsearch\Exception`. All the exceptions extends the 
+  `ElasticsearchException` interface, as in 7.x
+- we changed the response type of each endpoints using an 
+  [Elasticsearch](src/Response/Elasticsearch.php) response class. This class 
+  wraps a a [PSR-7](https://www.php-fig.org/psr/psr-7/) response allowing the 
+  access of the body response as array or object. This means you can access the 
+  API response as in 7.x, no BC break here! :angel:
+- we changed the `ConnectionPool` in `NodePool`. The `connection` naming was 
+  ambigous since the objects are nodes (hosts)
+
+You can have a look at the [BREAKING_CHANGES](BREAKING_CHANGES.md) file for more 
+information.
+
+## Mock the Elasticsearch client
+
+If you need to mock the Elasticsearch client you just need to mock a
+[PSR-18](https://www.php-fig.org/psr/psr-18/) HTTP Client.
+
+For instance, you can use the 
+[php-http/mock-client](https://github.com/php-http/mock-client) as follows:
+
+```php
+use Elastic\Elasticsearch\ClientBuilder;
+use Elastic\Elasticsearch\Response\Elasticsearch;
+use Http\Mock\Client;
+use Nyholm\Psr7\Response;
+
+$mock = new Client(); // This is the mock client
+
+$client = ClientBuilder::create()
+    ->setHttpClient($mock)
+    ->build();
+
+// This is a PSR-7 response
+$response = new Response(
+    200, 
+    [Elasticsearch::HEADER_CHECK => Elasticsearch::PRODUCT_NAME],
+    'This is the body!'
+);
+$mock->addResponse($response);
+
+$result = $client->info(); // Just calling an Elasticsearch endpoint
+
+echo $result->asString(); // This is the body!
+```
+
+We are using the `ClientBuilder::setHttpClient()` to set the mock client.
+You can specify the response that you want to have using the 
+`addResponse($response)` function. As you can see the `$response` is a PSR-7 
+response object. In this example we used the `Nyholm\Psr7\Response` object from 
+the [nyholm/psr7](https://github.com/Nyholm/psr7) project. If you are using 
+[PHPUnit](https://phpunit.de/) you can even mock the `ResponseInterface` as 
+follows:
+
+```php
+$response = $this->createMock('Psr\Http\Message\ResponseInterface');
+```
+
+**Notice**: we added a special header in the HTTP response. This is the product 
+check header, and it is required for guarantee that `elasticsearch-php` is 
+communicating with an Elasticsearch server 8.0+.
+
+For more information you can read the 
+[Mock client](https://docs.php-http.org/en/latest/clients/mock-client.html) 
+section of PHP-HTTP documentation.
+
+## FAQ 🔮
+
+### Where do I report issues with the client?
+
+If something is not working as expected, please open an 
+[issue](https://github.com/elastic/elasticsearh-php/issues/new).
+
+### Where else can I go to get help?
+
+You can checkout the 
+[Elastic community discuss forums](https://discuss.elastic.co/).
+
+## Contribute 🚀
+
+We welcome contributors to the project. Before you begin, some useful info...
+
++ If you want to contribute to this project you need to subscribe to a 
+  [Contributor Agreement](https://www.elastic.co/contributor-agreement).
++ Before opening a pull request, please create an issue to 
+  [discuss the scope of your proposal](https://github.com/elastic/elasticsearch-php/issues).
++ If you want to send a PR for version `8.0` please use the `8.0` branch, for 
+  `8.1` use the `8.1` branch and so on. 
++ Never send PR to `master` unless you want to contribute to the development 
+  version of the client (`master` represents the next major version).
++ Each PR should include a **unit test** using [PHPUnit](https://phpunit.de/). 
+  If you are not familiar with PHPUnit you can have a look at the 
+  [reference](https://phpunit.readthedocs.io/en/9.5/). 
+
+Thanks in advance for your contribution! :heart:
+
+## License 📗
+
+[MIT](LICENSE) © [Elastic](https://www.elastic.co/)

+ 52 - 0
vendor/elasticsearch/elasticsearch/composer.json

@@ -0,0 +1,52 @@
+{
+  "name": "elasticsearch/elasticsearch",
+  "description": "PHP Client for Elasticsearch",
+  "keywords": [
+    "search",
+    "client", 
+    "elasticsearch",
+    "elastic"
+  ],
+  "type": "library",
+  "license": "MIT",
+  "require": {
+    "php": "^7.4 || ^8.0",
+    "elastic/transport": "^8.3",
+    "psr/http-client": "^1.0",
+    "psr/http-message": "^1.0",
+    "psr/log": "^1|^2|^3",
+    "guzzlehttp/guzzle": "^7.0"
+  },
+  "require-dev": {
+    "ext-yaml": "*",
+    "ext-zip": "*",
+    "mockery/mockery": "^1.5",
+    "phpstan/phpstan": "^1.4",
+    "phpunit/phpunit": "^9.5",
+    "symfony/finder": "~4.0",
+    "nyholm/psr7": "^1.5",
+    "php-http/mock-client": "^1.5"
+  },
+  "autoload": {
+    "psr-4": {
+      "Elastic\\Elasticsearch\\": "src/"
+    }
+  },
+  "autoload-dev": {
+    "psr-4": {
+      "Elastic\\Elasticsearch\\Tests\\": "tests/",
+      "Elastic\\Elasticsearch\\Util\\": "util/"
+    }
+  },
+  "scripts": {
+    "test" : [
+      "vendor/bin/phpunit --testdox"
+    ],
+    "integration-test" : [
+      "vendor/bin/phpunit --testdox -c phpunit-integration-tests.xml"
+    ],
+    "phpstan": [
+      "phpstan analyse src --level 2 --no-progress"
+    ]
+  }
+}

+ 49 - 0
vendor/elasticsearch/elasticsearch/docs/breaking-changes.asciidoc

@@ -0,0 +1,49 @@
+[[breaking_changes]]
+=== Breaking changes from 7.x
+
+This major release is a complete new PHP client for {es}. We build it from scratch!
+We tried to reduce the BC breaks as much as possible but there are some (big) differences: 
+
+[discrete]
+==== Architectural changes
+
+- we changed the namespace, now everything is under `Elastic\Elasticsearch`
+- we used the https://github.com/elastic/elastic-transport-php[elastic-transport-php] library for HTTP communications;
+- we changed the `Exception` model, using the namespace `Elastic\Elasticsearch\Exception`. All the exceptions extends the
+  `ElasticsearchException` interface, as in 7.x
+- we changed the response type of each endpoint using an https://github.com/elastic/elasticsearch-php/blob/master/src/Response/Elasticsearch.php[Elasticsearch] response class.
+  This class wraps a https://www.php-fig.org/psr/psr-7/[PSR-7] response allowing the access of the body response
+  as array or object. This means you can access the API response as in 7.x, no BC break here! :angel:
+- we changed the `ConnectionPool` in `NodePool`. The `connection` naming was ambigous since the objects are nodes (hosts)
+
+[discrete]
+==== Specific changes
+
+The following functions has been removed:
+
+- `ClientBuilder::getEndpoint()`
+- `ClientBuilder::getRegisteredNamespacesBuilders()`
+- `ClientBuilder::getRegisteredNamespacesBuilders()`
+- `ClientBuilder::defaultHandler()`
+- `ClientBuilder::multiHandler()`
+- `ClientBuilder::singleHandler()`
+- `ClientBuilder::setConnectionFactory()`
+- `ClientBuilder::setConnectionPool()`, you can use `ClientBuilder::setNodePool` instead
+- `ClientBuilder::setEndpoint()`
+- `ClientBuilder::registerNamespace()`
+- `ClientBuilder::setTransport()`, you can specify an HTTP PSR-18 client using `ClientBuilder::setHttpClient()`
+- `ClientBuilder::setHandler()`
+- `ClientBuilder::setTracer()`, you can only set a Logger using  `ClientBuilder::setLogger()`
+- `ClientBuilder::setSerializer()`
+- `ClientBuilder::setConnectionParams()`, you can use `ClientBuilder::setHttpClientOptions()` instead
+- `ClientBuilder::setSelector()`, you can set a `Selector` using the `setNodePool`, see [here](https://github.com/elastic/elastic-transport-php/blob/8.x/README.md#use-a-custom-selector) for more information
+- `ClientBuilder::setSniffOnStart()`
+- `ClientBuilder::includePortInHostHeader()`
+
+We removed the special `client` parameter passed in `$params` endpoints. In details: 
+
+- `$params['client']['never_retry']`
+- `$params['client']['verbose']`
+- `$params['client']['port_in_header']`
+- `$params['client']['future']`, you can set HTTP async using `Client::setAsync(true)`
+- `$params['client']['ignore']`, you can disable the Exception using `Client::setResponseException(false)`

+ 41 - 0
vendor/elasticsearch/elasticsearch/docs/config-hash.asciidoc

@@ -0,0 +1,41 @@
+[discrete]
+[[config-hash]]
+=== Building the client from a configuration hash
+
+To help ease automated building of the client, all configurations can be 
+provided in a setting hash instead of calling the individual methods directly. 
+This functionality is exposed through the `ClientBuilder::fromConfig()` static 
+method, which accepts an array of configurations and returns a fully built 
+client.
+
+Array keys correspond to the method name, for example `retries` key corresponds 
+to `setRetries()` method.
+
+[source,php]
+----
+$params = [
+    'hosts' => [
+        'localhost:9200'
+    ],
+    'retries' => 2
+];
+$client = ClientBuilder::fromConfig($params);
+----
+
+Unknown parameters throw an exception, to help the user find potential problems. 
+If this behavior is not desired (for example, you are using the hash for other 
+purposes), you can set `$quiet = true` in fromConfig() to silence the exceptions.
+
+[source,php]
+----
+$params = [
+    'hosts' => [
+        'localhost:9200'
+    ],
+    'retries' => 2,
+    'imNotReal' => 5
+];
+
+// Set $quiet to true to ignore the unknown `imNotReal` key
+$client = ClientBuilder::fromConfig($params, true);
+----

+ 39 - 0
vendor/elasticsearch/elasticsearch/docs/configuration.asciidoc

@@ -0,0 +1,39 @@
+[[configuration]]
+== Configuration
+
+Almost every aspect of the client is configurable. Most users only need to 
+configure a few parameters to suit their needs, but it is possible to completely 
+replace much of the internals if required.
+
+Custom configuration is accomplished before the client is instantiated, through 
+the `ClientBuilder` class. You can find all the configuration options and 
+check sample code that helps you replace the various components.
+
+To learn more about JSON in PHP, read <<php_json_objects>>.
+
+* <<host-config>>
+* <<set-retries>>
+* <<http-meta-data>>
+* <<enabling_logger>>
+* <<http-client>>
+* <<namespaces>>
+* <<node_pool>>
+* <<config-hash>>
+
+include::php_json_objects.asciidoc[]
+
+include::host-config.asciidoc[]
+
+include::set-retries.asciidoc[]
+
+include::http-meta-data.asciidoc[]
+
+include::logger.asciidoc[]
+
+include::http-client.asciidoc[]
+
+include::namespaces.asciidoc[]
+
+include::node-pool.asciidoc[]
+
+include::config-hash.asciidoc[]

+ 109 - 0
vendor/elasticsearch/elasticsearch/docs/connecting.asciidoc

@@ -0,0 +1,109 @@
+[[connecting]]
+== Connecting
+
+This page contains the information you need to connect and use the Client with 
+{es}.
+
+**On this page**
+
+* <<auth-ec, Elastic Cloud>>
+* <<auth-http, Security by default (HTTPS)>>
+
+[discrete]
+[[auth-ec]]
+=== Elastic Cloud
+
+You can connect to https://www.elastic.co/cloud/[Elastic Cloud] using an **API key**
+and a **Cloud ID**:
+
+[source,php]
+----
+$client = ClientBuilder::create()
+   ->setElasticCloudId('<cloud-id>')
+   ->setApiKey('<api-key>')
+   ->build();
+----
+
+Where <cloud-id> and <api-key> can be retrieved using the Elastic Cloud web UI.
+
+You can get the `Cloud ID` from the `My deployment` page of your dashboard (see the red
+rectangle reported in the screenshot).
+
+image::images/cloud_id.png[alt="Elastic Cloud ID",align="center"]
+
+You can generate an `API key` in the `Management` page under the section `Security`.
+
+image::images/create_api_key.png[alt="Create API key",align="center"]
+
+When you click on `Create API key` button you can choose a name and set the other
+options (eg. restrict privileges, expire after time, etc).
+
+image::images/api_key_name.png[alt="Choose an API name",align="center"]
+
+After this step you will get the `API key`in the API keys page. 
+
+image::images/cloud_api_key.png[alt="Cloud API key",align="center"]
+
+**IMPORTANT**: you need to copy and store the `API key`in a secure place, since you will not
+be able to view it again in Elastic Cloud.
+
+
+[discrete]
+[[auth-http]]
+=== Security by default (HTTPS)
+
+{es} 8.0 offers https://www.elastic.co/blog/introducing-simplified-elastic-stack-security[security by default],
+that means it uses https://en.wikipedia.org/wiki/Transport_Layer_Security[TLS]
+for protect the communication between client and server.
+
+In order to configure `elasticsearch-php` for connecting to {es} 8.0 we
+need to have the certificate authority file (CA).
+
+You can install {es} in different ways, for instance using https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html[Docker]
+you need to execute the followind command:
+
+[source,shell]
+--------------------------
+docker pull docker.elastic.co/elasticsearch/elasticsearch:8.0.1
+--------------------------
+
+Once you have the docker image installed you can execute {es},
+for instance using a single-node cluster configuration, as follows:
+
+[source,shell]
+--------------------------
+docker network create elastic
+docker run --name es01 --net elastic -p 9200:9200 -p 9300:9300 -it docker.elastic.co/elasticsearch/elasticsearch:8.0.1
+--------------------------
+
+This command creates an `elastic` Docker network and start {es}
+using the port `9200` (default).
+
+When you run the docker imnage a password is generated for the `elastic` user
+and it's printed to the terminal (you might need to scroll back a bit in the terminal
+to view it). You have to copy it since we will need to connect to {es}.
+
+Now that {es} is running we can get the `http_ca.crt` file certificate.
+We need to copy it from the docker instance, using the following command:
+
+[source,shell]
+--------------------------
+docker cp es01:/usr/share/elasticsearch/config/certs/http_ca.crt .
+--------------------------
+
+Once we have the `http_ca.crt` certificate and the `password`, copied during the
+start of {es} , we can use it to connect with `elasticsearch-php`
+as follows:
+
+[source,php]
+--------------------------
+$client = ClientBuilder::create()
+    ->setHosts(['https://localhost:9200'])
+    ->setBasicAuthentication('elastic', 'password copied during Elasticsearch start')
+    ->setCABundle('path/to/http_ca.crt')
+    ->build();
+--------------------------
+
+For more information about the Docker configuration of Elasticsearch you can
+read the official documentation https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html[here].
+

+ 257 - 0
vendor/elasticsearch/elasticsearch/docs/crud.asciidoc

@@ -0,0 +1,257 @@
+[[indexing_documents]]
+=== Indexing documents
+
+When you add documents to {es}, you index JSON documents. This maps naturally to 
+PHP associative arrays, since they can easily be encoded in JSON. Therefore, in 
+Elasticsearch-PHP you create and pass associative arrays to the client for 
+indexing. There are several methods of ingesting data into {es} which we cover 
+here.
+
+[discrete]
+==== Single document indexing
+
+When indexing a document, you can either provide an ID or let {es} generate one 
+for you.
+
+{zwsp} +
+
+.Providing an ID value
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id',
+    'body'  => [ 'testField' => 'abc']
+];
+
+// Document will be indexed to my_index/_doc/my_id
+$response = $client->index($params);
+----
+{zwsp} +
+
+.Omitting an ID value
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'body'  => [ 'testField' => 'abc']
+];
+
+// Document will be indexed to my_index/_doc/<autogenerated ID>
+$response = $client->index($params);
+----
+{zwsp} +
+
+If you need to set other parameters, such as a `routing` value, you specify 
+those in the array alongside the `index`, and others. For example, let's set the 
+routing and timestamp of this new document:
+
+.Additional parameters
+[source,php]
+----
+$params = [
+    'index'     => 'my_index',
+    'id'        => 'my_id',
+    'routing'   => 'company_xyz',
+    'timestamp' => strtotime("-1d"),
+    'body'      => [ 'testField' => 'abc']
+];
+
+
+$response = $client->index($params);
+----
+{zwsp} +
+
+[discrete]
+==== Bulk Indexing
+
+{es} also supports bulk indexing of documents. The bulk API expects JSON 
+action/metadata pairs, separated by newlines. When constructing your documents 
+in PHP, the process is similar. You first create an action array object (for 
+example, an `index` object), then you create a document body object. This 
+process repeats for all your documents.
+
+A simple example might look like this:
+
+.Bulk indexing with PHP arrays
+[source,php]
+----
+for($i = 0; $i < 100; $i++) {
+    $params['body'][] = [
+        'index' => [
+            '_index' => 'my_index',
+	    ]
+    ];
+
+    $params['body'][] = [
+        'my_field'     => 'my_value',
+        'second_field' => 'some more values'
+    ];
+}
+
+$responses = $client->bulk($params);
+----
+
+In practice, you'll likely have more documents than you want to send in a single 
+bulk request. In that case, you need to batch up the requests and periodically 
+send them:
+
+.Bulk indexing with batches
+[source,php]
+----
+$params = ['body' => []];
+
+for ($i = 1; $i <= 1234567; $i++) {
+    $params['body'][] = [
+        'index' => [
+            '_index' => 'my_index',
+            '_id'    => $i
+        ]
+    ];
+
+    $params['body'][] = [
+        'my_field'     => 'my_value',
+        'second_field' => 'some more values'
+    ];
+
+    // Every 1000 documents stop and send the bulk request
+    if ($i % 1000 == 0) {
+        $responses = $client->bulk($params);
+
+        // erase the old bulk request
+        $params = ['body' => []];
+
+        // unset the bulk response when you are done to save memory
+        unset($responses);
+    }
+}
+
+// Send the last batch if it exists
+if (!empty($params['body'])) {
+    $responses = $client->bulk($params);
+}
+----
+
+[[getting_documents]]
+=== Getting documents
+
+{es} provides realtime GETs of documents. This means that as soon as the 
+document is indexed and your client receives an acknowledgement, you can 
+immediately retrieve the document from any shard. Get operations are performed 
+by requesting a document by its full `index/type/id` path:
+
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id'
+];
+
+// Get doc at /my_index/_doc/my_id
+$response = $client->get($params);
+----
+{zwsp} +
+
+[[updating_documents]]
+=== Updating documents
+
+Updating a document allows you to either completely replace the contents of the 
+existing document, or perform a partial update to just some fields (either 
+changing an existing field or adding new fields).
+
+[discrete]
+==== Partial document update
+
+If you want to partially update a document (for example, change an existing 
+field or add a new one) you can do so by specifying the `doc` in the `body` 
+parameter. This merges the fields in `doc` with the existing document.
+
+
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id',
+    'body'  => [
+        'doc' => [
+            'new_field' => 'abc'
+        ]
+    ]
+];
+
+// Update doc at /my_index/_doc/my_id
+$response = $client->update($params);
+----
+{zwsp} +
+
+[discrete]
+==== Scripted document update
+
+Sometimes you need to perform a scripted update, such as incrementing a counter 
+or appending a new value to an array. To perform a scripted update, you need to 
+provide a script and usually a set of parameters:
+
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id',
+    'body'  => [
+        'script' => 'ctx._source.counter += count',
+        'params' => [
+            'count' => 4
+        ]
+    ]
+];
+
+$response = $client->update($params);
+----
+{zwsp} +
+
+[discrete]
+==== Upserts
+
+Upserts are "Update or Insert" operations. This means an upsert attempts to run 
+your update script, but if the document does not exist (or the field you are 
+trying to update doesn't exist), default values are inserted instead.
+
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id',
+    'body'  => [
+        'script' => [
+            'source' => 'ctx._source.counter += params.count',
+            'params' => [
+                'count' => 4
+            ],
+        ],
+        'upsert' => [
+            'counter' => 1
+        ],
+    ]
+];
+
+$response = $client->update($params);
+----
+{zwsp} +
+
+
+[[deleting_documents]]
+=== Deleting documents
+
+Finally, you can delete documents by specifying their full `/index/_doc_/id` 
+path:
+
+[source,php]
+----
+$params = [
+    'index' => 'my_index',
+    'id'    => 'my_id'
+];
+
+// Delete doc at /my_index/_doc_/my_id
+$response = $client->delete($params);
+----
+{zwsp} +

+ 13 - 0
vendor/elasticsearch/elasticsearch/docs/examples/014b788c879e4aaa1020672e45e25473.asciidoc

@@ -0,0 +1,13 @@
+// search.asciidoc:72
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'transient' => [
+            'cluster.routing.use_adaptive_replica_selection' => false,
+        ],
+    ],
+];
+$response = $client->cluster()->putSettings($params);
+----

+ 16 - 0
vendor/elasticsearch/elasticsearch/docs/examples/015294a400986295039e52ebc62033be.asciidoc

@@ -0,0 +1,16 @@
+// docs/update.asciidoc:251
+
+[source, php]
+----
+$params = [
+    'index' => 'test',
+    'id' => '1',
+    'body' => [
+        'doc' => [
+            'name' => 'new_name',
+        ],
+        'detect_noop' => false,
+    ],
+];
+$response = $client->update($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/025b54db0edc50c24ea48a2bd94366ad.asciidoc

@@ -0,0 +1,9 @@
+// docs/update-by-query.asciidoc:606
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+];
+$response = $client->search($params);
+----

+ 41 - 0
vendor/elasticsearch/elasticsearch/docs/examples/028f6d6ac2594e20b78b8a8f8cbad49d.asciidoc

@@ -0,0 +1,41 @@
+// aggregations/bucket/terms-aggregation.asciidoc:336
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'aggs' => [
+            'countries' => [
+                'terms' => [
+                    'field' => 'artist.country',
+                    'order' => [
+                        [
+                            'rock>playback_stats.avg' => 'desc',
+                        ],
+                        [
+                            '_count' => 'desc',
+                        ],
+                    ],
+                ],
+                'aggs' => [
+                    'rock' => [
+                        'filter' => [
+                            'term' => [
+                                'genre' => 'rock',
+                            ],
+                        ],
+                        'aggs' => [
+                            'playback_stats' => [
+                                'stats' => [
+                                    'field' => 'play_count',
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 20 - 0
vendor/elasticsearch/elasticsearch/docs/examples/033778305d52746f5ce0a2a922c8e521.asciidoc

@@ -0,0 +1,20 @@
+// aggregations/bucket/terms-aggregation.asciidoc:410
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'aggs' => [
+            'genres' => [
+                'terms' => [
+                    'script' => [
+                        'source' => 'doc[\'genre\'].value',
+                        'lang' => 'painless',
+                    ],
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 21 - 0
vendor/elasticsearch/elasticsearch/docs/examples/047266b0d20fdb62ebc72d51952c8f6d.asciidoc

@@ -0,0 +1,21 @@
+// query-dsl/multi-match-query.asciidoc:341
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'multi_match' => [
+                'query' => 'Will Smith',
+                'type' => 'cross_fields',
+                'fields' => [
+                    'first_name',
+                    'last_name',
+                ],
+                'operator' => 'and',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 15 - 0
vendor/elasticsearch/elasticsearch/docs/examples/048d8abd42d094bbdcf4452a58ccb35b.asciidoc

@@ -0,0 +1,15 @@
+// docs/index_.asciidoc:531
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'id' => '1',
+    'body' => [
+        'user' => 'kimchy',
+        'post_date' => '2009-11-15T14:12:12',
+        'message' => 'trying out Elasticsearch',
+    ],
+];
+$response = $client->create($params);
+----

+ 6 - 0
vendor/elasticsearch/elasticsearch/docs/examples/04f5dd677c777bcb15d7d5fa63275fc8.asciidoc

@@ -0,0 +1,6 @@
+// cluster/health.asciidoc:36
+
+[source, php]
+----
+$response = $client->cluster()->health();
+----

+ 28 - 0
vendor/elasticsearch/elasticsearch/docs/examples/04fe1e3a0047b0cdb10987b79fc3f3f3.asciidoc

@@ -0,0 +1,28 @@
+// search/request/sort.asciidoc:568
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'term' => [
+                'user' => 'kimchy',
+            ],
+        ],
+        'sort' => [
+            '_script' => [
+                'type' => 'number',
+                'script' => [
+                    'lang' => 'painless',
+                    'source' => 'doc[\'field_name\'].value * params.factor',
+                    'params' => [
+                        'factor' => 1.1,
+                    ],
+                ],
+                'order' => 'asc',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 46 - 0
vendor/elasticsearch/elasticsearch/docs/examples/06afce2955f9094d96d27067ebca32e8.asciidoc

@@ -0,0 +1,46 @@
+// query-dsl/bool-query.asciidoc:36
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'bool' => [
+                'must' => [
+                    'term' => [
+                        'user' => 'kimchy',
+                    ],
+                ],
+                'filter' => [
+                    'term' => [
+                        'tag' => 'tech',
+                    ],
+                ],
+                'must_not' => [
+                    'range' => [
+                        'age' => [
+                            'gte' => 10,
+                            'lte' => 20,
+                        ],
+                    ],
+                ],
+                'should' => [
+                    [
+                        'term' => [
+                            'tag' => 'wow',
+                        ],
+                    ],
+                    [
+                        'term' => [
+                            'tag' => 'elasticsearch',
+                        ],
+                    ],
+                ],
+                'minimum_should_match' => 1,
+                'boost' => 1,
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/073539a7e38be3cdf13008330b6a536a.asciidoc

@@ -0,0 +1,9 @@
+// cat/indices.asciidoc:100
+
+[source, php]
+----
+$params = [
+    'index' => 'twi*',
+];
+$response = $client->cat()->indices($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0989cc65d8924f666ce3eb0820d2d244.asciidoc

@@ -0,0 +1,19 @@
+// indices/put-mapping.asciidoc:435
+
+[source, php]
+----
+$params = [
+    'index' => 'users',
+    'body' => [
+        'user_id' => 12345,
+    ],
+];
+$response = $client->index($params);
+$params = [
+    'index' => 'users',
+    'body' => [
+        'user_id' => 12346,
+    ],
+];
+$response = $client->index($params);
+----

+ 14 - 0
vendor/elasticsearch/elasticsearch/docs/examples/09d617863a103c82fb4101e6165ea7fe.asciidoc

@@ -0,0 +1,14 @@
+// query-dsl/match-all-query.asciidoc:11
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'match_all' => [
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 6 - 0
vendor/elasticsearch/elasticsearch/docs/examples/09dbd90c5e22ea4a17b4cf9aa72e08ae.asciidoc

@@ -0,0 +1,6 @@
+// api-conventions.asciidoc:231
+
+[source, php]
+----
+$response = $client->search();
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/09ecba5814d71e4c44468575eada9878.asciidoc

@@ -0,0 +1,19 @@
+// aggregations/bucket/datehistogram-aggregation.asciidoc:214
+
+[source, php]
+----
+$params = [
+    'index' => 'sales',
+    'body' => [
+        'aggs' => [
+            'sales_over_time' => [
+                'date_histogram' => [
+                    'field' => 'date',
+                    'fixed_interval' => '30d',
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 22 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0a958e486ede3f519d48431ab689eded.asciidoc

@@ -0,0 +1,22 @@
+// docs/update.asciidoc:271
+
+[source, php]
+----
+$params = [
+    'index' => 'test',
+    'id' => '1',
+    'body' => [
+        'script' => [
+            'source' => 'ctx._source.counter += params.count',
+            'lang' => 'painless',
+            'params' => [
+                'count' => 4,
+            ],
+        ],
+        'upsert' => [
+            'counter' => 1,
+        ],
+    ],
+];
+$response = $client->update($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0ac9916f47a2483b89c1416684af322a.asciidoc

@@ -0,0 +1,19 @@
+// query-dsl/match-query.asciidoc:241
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'match' => [
+                'message' => [
+                    'query' => 'to be or not to be',
+                    'operator' => 'and',
+                    'zero_terms_query' => 'all',
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0afaf1cad692e6201aa574c8feb6e622.asciidoc

@@ -0,0 +1,19 @@
+// aggregations/bucket/terms-aggregation.asciidoc:492
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'aggs' => [
+            'tags' => [
+                'terms' => [
+                    'field' => 'tags',
+                    'include' => '.*sport.*',
+                    'exclude' => 'water_.*',
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 16 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0ba0b2db24852abccb7c0fc1098d566e.asciidoc

@@ -0,0 +1,16 @@
+// docs/get.asciidoc:366
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'id' => '2',
+    'body' => [
+        'counter' => 1,
+        'tags' => [
+            'white',
+        ],
+    ],
+];
+$response = $client->index($params);
+----

+ 20 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0bbd30b9be3e54ff3028b9f4459634d2.asciidoc

@@ -0,0 +1,20 @@
+// indices/put-mapping.asciidoc:171
+
+[source, php]
+----
+$params = [
+    'index' => 'my_index',
+    'body' => [
+        'properties' => [
+            'name' => [
+                'properties' => [
+                    'last' => [
+                        'type' => 'text',
+                    ],
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->indices()->putMapping($params);
+----

+ 37 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0bd3923424a20a4ba860b0774b9991b1.asciidoc

@@ -0,0 +1,37 @@
+// query-dsl/nested-query.asciidoc:206
+
+[source, php]
+----
+$params = [
+    'index' => 'drivers',
+    'body' => [
+        'query' => [
+            'nested' => [
+                'path' => 'driver',
+                'query' => [
+                    'nested' => [
+                        'path' => 'driver.vehicle',
+                        'query' => [
+                            'bool' => [
+                                'must' => [
+                                    [
+                                        'match' => [
+                                            'driver.vehicle.make' => 'Powell Motors',
+                                        ],
+                                    ],
+                                    [
+                                        'match' => [
+                                            'driver.vehicle.model' => 'Canyonero',
+                                        ],
+                                    ],
+                                ],
+                            ],
+                        ],
+                    ],
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 14 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0be2c28ee65384774b1e479b47dc3d92.asciidoc

@@ -0,0 +1,14 @@
+// indices/update-settings.asciidoc:120
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'index' => [
+            'refresh_interval' => '1s',
+        ],
+    ],
+];
+$response = $client->indices()->putSettings($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0c4ad860a485fe53d8140ad3ccd11dcf.asciidoc

@@ -0,0 +1,19 @@
+// query-dsl/terms-query.asciidoc:19
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'terms' => [
+                'user' => [
+                    'kimchy',
+                    'elasticsearch',
+                ],
+                'boost' => 1,
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 16 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0cc991e3f7f8511a34730e154b3c5edc.asciidoc

@@ -0,0 +1,16 @@
+// docs/reindex.asciidoc:25
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'source' => [
+            'index' => 'twitter',
+        ],
+        'dest' => [
+            'index' => 'new_twitter',
+        ],
+    ],
+];
+$response = $client->reindex($params);
+----

+ 16 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0ce3606f1dba490eef83c4317b315b62.asciidoc

@@ -0,0 +1,16 @@
+// search/request-body.asciidoc:7
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'query' => [
+            'term' => [
+                'user' => 'kimchy',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 31 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0d664883151008b1051ef2c9ab2d0373.asciidoc

@@ -0,0 +1,31 @@
+// docs/update-by-query.asciidoc:537
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'slice' => [
+            'id' => 0,
+            'max' => 2,
+        ],
+        'script' => [
+            'source' => 'ctx._source[\'extra\'] = \'test\'',
+        ],
+    ],
+];
+$response = $client->updateByQuery($params);
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'slice' => [
+            'id' => 1,
+            'max' => 2,
+        ],
+        'script' => [
+            'source' => 'ctx._source[\'extra\'] = \'test\'',
+        ],
+    ],
+];
+$response = $client->updateByQuery($params);
+----

+ 20 - 0
vendor/elasticsearch/elasticsearch/docs/examples/0e118857b815b62118a30c042f079db1.asciidoc

@@ -0,0 +1,20 @@
+// query-dsl/multi-match-query.asciidoc:259
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'multi_match' => [
+                'query' => 'quick brown f',
+                'type' => 'phrase_prefix',
+                'fields' => [
+                    'subject',
+                    'message',
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 35 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1027ab1ca767ac1428176ef4f84bfbcf.asciidoc

@@ -0,0 +1,35 @@
+// search/request/scroll.asciidoc:206
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'slice' => [
+            'id' => 0,
+            'max' => 2,
+        ],
+        'query' => [
+            'match' => [
+                'title' => 'elasticsearch',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'slice' => [
+            'id' => 1,
+            'max' => 2,
+        ],
+        'query' => [
+            'match' => [
+                'title' => 'elasticsearch',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1216f8f7367df3aa823012cef310c08a.asciidoc

@@ -0,0 +1,19 @@
+// docs/reindex.asciidoc:716
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'source' => [
+            'index' => 'test',
+        ],
+        'dest' => [
+            'index' => 'test2',
+        ],
+        'script' => [
+            'source' => 'ctx._source.tag = ctx._source.remove("flag")',
+        ],
+    ],
+];
+$response = $client->reindex($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/12433d2b637d002e8d5c9a1adce69d3b.asciidoc

@@ -0,0 +1,9 @@
+// indices/put-mapping.asciidoc:89
+
+[source, php]
+----
+$params = [
+    'index' => 'publications',
+];
+$response = $client->indices()->create($params);
+----

+ 6 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1252fa45847edba5ec2b2f33da70ec5b.asciidoc

@@ -0,0 +1,6 @@
+// api-conventions.asciidoc:282
+
+[source, php]
+----
+$response = $client->cluster()->state();
+----

+ 10 - 0
vendor/elasticsearch/elasticsearch/docs/examples/138ccd89f72aa7502dd9578403dcc589.asciidoc

@@ -0,0 +1,10 @@
+// docs/get.asciidoc:53
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'id' => '0',
+];
+$response = $client->get($params);
+----

+ 18 - 0
vendor/elasticsearch/elasticsearch/docs/examples/14701dcc0cca9665fce2aace0cb62af7.asciidoc

@@ -0,0 +1,18 @@
+// docs/delete-by-query.asciidoc:511
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+    'body' => [
+        'query' => [
+            'range' => [
+                'likes' => [
+                    'lt' => 10,
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 14 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1577e6e806b3283c9e99f1596d310754.asciidoc

@@ -0,0 +1,14 @@
+// docs/reindex.asciidoc:704
+
+[source, php]
+----
+$params = [
+    'index' => 'test',
+    'id' => '1',
+    'body' => [
+        'text' => 'words words',
+        'flag' => 'foo',
+    ],
+];
+$response = $client->index($params);
+----

+ 27 - 0
vendor/elasticsearch/elasticsearch/docs/examples/15dad5338065baaaa7d475abe85f4c22.asciidoc

@@ -0,0 +1,27 @@
+// search/request/sort.asciidoc:515
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'sort' => [
+            [
+                '_geo_distance' => [
+                    'pin.location' => [
+                        -70,
+                        40,
+                    ],
+                    'order' => 'asc',
+                    'unit' => 'km',
+                ],
+            ],
+        ],
+        'query' => [
+            'term' => [
+                'user' => 'kimchy',
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 19 - 0
vendor/elasticsearch/elasticsearch/docs/examples/162b5b693b713f0bfab1209d59443c46.asciidoc

@@ -0,0 +1,19 @@
+// query-dsl/bool-query.asciidoc:130
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'constant_score' => [
+                'filter' => [
+                    'term' => [
+                        'status' => 'active',
+                    ],
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 22 - 0
vendor/elasticsearch/elasticsearch/docs/examples/179f0a3e84ff4bbac18787a018eabf89.asciidoc

@@ -0,0 +1,22 @@
+// query-dsl/multi-match-query.asciidoc:472
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'multi_match' => [
+                'query' => 'Jon',
+                'type' => 'cross_fields',
+                'analyzer' => 'standard',
+                'fields' => [
+                    'first',
+                    'last',
+                    '*.edge',
+                ],
+            ],
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 17 - 0
vendor/elasticsearch/elasticsearch/docs/examples/17de0020b228df961ad3c6b06233c948.asciidoc

@@ -0,0 +1,17 @@
+// indices/put-mapping.asciidoc:351
+
+[source, php]
+----
+$params = [
+    'index' => 'my_index',
+    'body' => [
+        'properties' => [
+            'user_id' => [
+                'type' => 'keyword',
+                'ignore_above' => 100,
+            ],
+        ],
+    ],
+];
+$response = $client->indices()->putMapping($params);
+----

+ 18 - 0
vendor/elasticsearch/elasticsearch/docs/examples/189a921df2f5b1fe580937210ce9c1c2.asciidoc

@@ -0,0 +1,18 @@
+// search.asciidoc:96
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'query' => [
+            'match_all' => [
+            ],
+        ],
+        'stats' => [
+            'group1',
+            'group2',
+        ],
+    ],
+];
+$response = $client->search($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/18ddb7e7a4bcafd449df956e828ed7a8.asciidoc

@@ -0,0 +1,9 @@
+// docs/update-by-query.asciidoc:498
+
+[source, php]
+----
+$params = [
+    'task_id' => 'r1A2WoRbTwKZ516z6NEs5A:36619',
+];
+$response = $client->tasks()->cancel($params);
+----

+ 41 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1aa91d3d48140d6367b6cabca8737b8f.asciidoc

@@ -0,0 +1,41 @@
+// docs/bulk.asciidoc:567
+
+[source, php]
+----
+$params = [
+    'body' => [
+        [
+            'update' => [
+                '_id' => '5',
+                '_index' => 'index1',
+            ],
+        ],
+        [
+            'doc' => [
+                'my_field' => 'foo',
+            ],
+        ],
+        [
+            'update' => [
+                '_id' => '6',
+                '_index' => 'index1',
+            ],
+        ],
+        [
+            'doc' => [
+                'my_field' => 'foo',
+            ],
+        ],
+        [
+            'create' => [
+                '_id' => '7',
+                '_index' => 'index1',
+            ],
+        ],
+        [
+            'my_field' => 'foo',
+        ],
+    ],
+];
+$response = $client->bulk($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1b542e3ea87a742f95641d64dcfb1bdb.asciidoc

@@ -0,0 +1,9 @@
+// search/count.asciidoc:7
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+];
+$response = $client->count($params);
+----

+ 35 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1b8655e6ba99fe39933c6eafe78728b7.asciidoc

@@ -0,0 +1,35 @@
+// docs/reindex.asciidoc:204
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'source' => [
+            'index' => 'twitter',
+            'slice' => [
+                'id' => 0,
+                'max' => 2,
+            ],
+        ],
+        'dest' => [
+            'index' => 'new_twitter',
+        ],
+    ],
+];
+$response = $client->reindex($params);
+$params = [
+    'body' => [
+        'source' => [
+            'index' => 'twitter',
+            'slice' => [
+                'id' => 1,
+                'max' => 2,
+            ],
+        ],
+        'dest' => [
+            'index' => 'new_twitter',
+        ],
+    ],
+];
+$response = $client->reindex($params);
+----

+ 31 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1b8caf0a6741126c6d0ad83b56fce290.asciidoc

@@ -0,0 +1,31 @@
+// indices/templates.asciidoc:146
+
+[source, php]
+----
+$params = [
+    'name' => 'template_1',
+    'body' => [
+        'index_patterns' => [
+            'te*',
+        ],
+        'settings' => [
+            'number_of_shards' => 1,
+        ],
+        'aliases' => [
+            'alias1' => [
+            ],
+            'alias2' => [
+                'filter' => [
+                    'term' => [
+                        'user' => 'kimchy',
+                    ],
+                ],
+                'routing' => 'kimchy',
+            ],
+            '{index}-alias' => [
+            ],
+        ],
+    ],
+];
+$response = $client->indices()->putTemplate($params);
+----

+ 24 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1bc731a4df952228af6dfa6b48627332.asciidoc

@@ -0,0 +1,24 @@
+// docs/reindex.asciidoc:819
+
+[source, php]
+----
+$params = [
+    'body' => [
+        'max_docs' => 10,
+        'source' => [
+            'index' => 'twitter',
+            'query' => [
+                'function_score' => [
+                    'random_score' => [
+                    ],
+                    'min_score' => 0.9,
+                ],
+            ],
+        ],
+        'dest' => [
+            'index' => 'random_twitter',
+        ],
+    ],
+];
+$response = $client->reindex($params);
+----

+ 9 - 0
vendor/elasticsearch/elasticsearch/docs/examples/1c23507edd7a3c18538b68223378e4ab.asciidoc

@@ -0,0 +1,9 @@
+// indices/create-index.asciidoc:10
+
+[source, php]
+----
+$params = [
+    'index' => 'twitter',
+];
+$response = $client->indices()->create($params);
+----

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác