{"action":"created","comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/228991926","pull_request_review_id":169381070,"id":228991926,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyODk5MTkyNg==","diff_hunk":"@@ -577,6 +577,554 @@ value of `service` to the value of the field `code`:\n --------------------------------------------------\n // NOTCONSOLE\n \n+[[ingest-conditionals]]\n+== Conditional Execution in Pipelines\n+\n+Each processor allows for an optional `if` condition to determine if that\n+processor should be executed or skipped. The value of the `if` is a\n+<<modules-scripting-painless, Painless>> script that needs to evaluate\n+to `true` or `false`.\n+\n+For example the following processor will <<drop-processor,drop>> the document\n+(e.g. not index it) if the input document has a field named `network_name`\n+and it is equal to `Guest`.\n+\n+[source,js]\n+--------------------------------------------------\n+PUT _ingest/pipeline/drop_guests_network\n+{\n+  \"processors\": [\n+    {\n+      \"drop\": {\n+        \"if\": \"ctx.network_name == 'Guest'\"\n+      }\n+    }\n+  ]\n+}\n+--------------------------------------------------\n+// CONSOLE\n+\n+Using that pipeline for an index request:\n+\n+[source,js]\n+--------------------------------------------------\n+POST test/_doc/1?pipeline=drop_guests_network\n+{\n+  \"network_name\" : \"Guest\"\n+}\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+\n+Results in nothing indexed since the conditional evaluated to `true`.\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"_index\": \"test\",\n+  \"_type\": \"_doc\",\n+  \"_id\": \"1\",\n+  \"_version\": -3,\n+  \"result\": \"noop\",\n+  \"_shards\": {\n+    \"total\": 0,\n+    \"successful\": 0,\n+    \"failed\": 0\n+  }\n+}\n+--------------------------------------------------\n+// TESTRESPONSE\n+\n+\n+[[ingest-conditional-nullcheck]]\n+=== Handling Nested Fields in Conditionals\n+\n+Source documents often contain nested fields. Care should be taken\n+to avoid NullPointerExceptions if the parent object does not exist\n+in the document. For example `ctx.a.b.c` can throw an NullPointerExceptions\n+if the source document does not have top level `a` object, or a second\n+level `b` object.\n+\n+To help protect against NullPointerExceptions, null safe operations should be used.\n+Fortunately Painless makes {painless}/painless-operators-reference.html#null-safe-operator[null safe]\n+operations easy with the `?.` operator.\n+\n+[source,js]\n+--------------------------------------------------\n+PUT _ingest/pipeline/drop_guests_network\n+{\n+  \"processors\": [\n+    {\n+      \"drop\": {\n+        \"if\": \"ctx.network?.name == 'Guest'\"\n+      }\n+    }\n+  ]\n+}\n+--------------------------------------------------\n+// CONSOLE\n+\n+The following document will get <<drop-processor,dropped>> correctly:\n+\n+[source,js]\n+--------------------------------------------------\n+POST test/_doc/1?pipeline=drop_guests_network\n+{\n+  \"network\": {\n+    \"name\": \"Guest\"\n+  }\n+}\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+\n+////\n+Hidden example assertion:\n+[source,js]\n+--------------------------------------------------\n+GET test/_doc/1\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+// TEST[catch:missing]\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"_index\": \"test\",\n+  \"_type\": \"_doc\",\n+  \"_id\": \"1\",\n+  \"found\": false\n+}\n+--------------------------------------------------\n+// TESTRESPONSE\n+////\n+\n+Thanks to the `?.` operator the following document will not throw an error.\n+If the pipeline used a `.` the following document would throw a NullPointerException\n+since the `network` object is not part of the source document.\n+\n+[source,js]\n+--------------------------------------------------\n+POST test/_doc/2?pipeline=drop_guests_network\n+{\n+  \"foo\" : \"bar\"\n+}\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+\n+////\n+Hidden example assertion:\n+[source,js]\n+--------------------------------------------------\n+GET test/_doc/2\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"_index\": \"test\",\n+  \"_type\": \"_doc\",\n+  \"_id\": \"2\",\n+  \"_version\": 1,\n+  \"found\": true,\n+  \"_source\": {\n+    \"foo\": \"bar\"\n+  }\n+}\n+--------------------------------------------------\n+// TESTRESPONSE\n+////\n+\n+The source document can also use dot delimited fields to represent nested fields.\n+\n+For example instead the source document defining the fields nested:\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"network\": {\n+    \"name\": \"Guest\"\n+  }\n+}\n+--------------------------------------------------\n+// NOTCONSOLE\n+\n+The source document may have the nested fields flattened as such:\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"network.name\": \"Guest\"\n+}\n+--------------------------------------------------\n+// NOTCONSOLE\n+\n+If this is the case, use the <<dot-expand-processor, Dot Expand Processor>>\n+so that the nested fields may be used in a conditional.\n+\n+[source,js]\n+--------------------------------------------------\n+PUT _ingest/pipeline/drop_guests_network\n+{\n+  \"processors\": [\n+    {\n+      \"dot_expander\": {\n+        \"field\": \"network.name\"\n+      }\n+    },\n+    {\n+      \"drop\": {\n+        \"if\": \"ctx.network?.name == 'Guest'\"\n+      }\n+    }\n+  ]\n+}\n+--------------------------------------------------\n+// CONSOLE\n+\n+Now the following input document can be used with a conditional in the pipeline.\n+\n+[source,js]\n+--------------------------------------------------\n+POST test/_doc/3?pipeline=drop_guests_network\n+{\n+  \"network.name\": \"Guest\"\n+}\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+\n+////\n+Hidden example assertion:\n+[source,js]\n+--------------------------------------------------\n+GET test/_doc/3\n+--------------------------------------------------\n+// CONSOLE\n+// TEST[continued]\n+// TEST[catch:missing]\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"_index\": \"test\",\n+  \"_type\": \"_doc\",\n+  \"_id\": \"3\",\n+  \"found\": false\n+}\n+--------------------------------------------------\n+// TESTRESPONSE\n+////\n+\n+The `?.` operators works well for use in the `if` conditional\n+because the {painless}/painless-operators-reference.html#null-safe-operator[null safe operator]\n+returns null if the object is null and `==` is null safe (as well as many other\n+{painless}/painless-operators.html[painless operators]).\n+\n+However, calling a method such as `.equalsIgnoreCase` is not null safe\n+and can result in a NullPointerException.\n+\n+Some situations allow for the same functionality but done so in a null safe manner.\n+For example: `'Guest'.equalsIgnoreCase(ctx.network?.name)` is null safe because\n+`Guest` is always non null, but `ctx.network?.name.equalsIgnoreCase('Guest') is not null safe\n+since `ctx.network?.name` can return null.\n+\n+Some situations require an explicit null check. In the following example there\n+is not null safe alternative, so an explict null check is needed.\n+\n+[source,js]\n+--------------------------------------------------\n+{\n+  \"drop\": {\n+    \"if\": \"ctx.network?.name != null && ctx.network.name.contains('Guest')\"\n+  }\n+}\n+--------------------------------------------------\n+// NOTCONSOLE\n+\n+[[ingest-conditional-complex]]\n+=== Complex Conditionals\n+The `if` condition can be more then a simple equality check.\n+The full power of the <<modules-scripting-painless, Painless Scripting Language>> ability to declare `tag` and `on_failure` fields. These fields are optional\n+running in the {painless}/painless-ingest-processor-context.html#null-safe-operator[ingest processor context]\n+can be used to determine if the condition should evaluate to `true` or `false`.\n+\n+IMPORTANT: Values in an `if` condition are read-only and may not change any","path":"docs/reference/ingest/ingest-node.asciidoc","position":279,"original_position":279,"commit_id":"4ee42c8aa22fa5e70caad72ae2e3504f1be39b19","original_commit_id":"4ee42c8aa22fa5e70caad72ae2e3504f1be39b19","user":{"login":"original-brownbear","id":6490959,"node_id":"MDQ6VXNlcjY0OTA5NTk=","avatar_url":"https://avatars0.githubusercontent.com/u/6490959?v=4","gravatar_id":"","url":"https://api.github.com/users/original-brownbear","html_url":"https://github.com/original-brownbear","followers_url":"https://api.github.com/users/original-brownbear/followers","following_url":"https://api.github.com/users/original-brownbear/following{/other_user}","gists_url":"https://api.github.com/users/original-brownbear/gists{/gist_id}","starred_url":"https://api.github.com/users/original-brownbear/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/original-brownbear/subscriptions","organizations_url":"https://api.github.com/users/original-brownbear/orgs","repos_url":"https://api.github.com/users/original-brownbear/repos","events_url":"https://api.github.com/users/original-brownbear/events{/privacy}","received_events_url":"https://api.github.com/users/original-brownbear/received_events","type":"User","site_admin":false},"body":"NIT: Wouldn't just: \"The value of `ctx` is read-only in `if` conditions. Trying to mutate it will throw and `Exception`.\" be cleaner? (because it's not \"values\" that are read-only but just `ctx`)","created_at":"2018-10-29T16:05:52Z","updated_at":"2018-10-29T16:09:52Z","html_url":"https://github.com/elastic/elasticsearch/pull/35044#discussion_r228991926","pull_request_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/228991926"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/35044#discussion_r228991926"},"pull_request":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044"}}},"pull_request":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044","id":226600585,"node_id":"MDExOlB1bGxSZXF1ZXN0MjI2NjAwNTg1","html_url":"https://github.com/elastic/elasticsearch/pull/35044","diff_url":"https://github.com/elastic/elasticsearch/pull/35044.diff","patch_url":"https://github.com/elastic/elasticsearch/pull/35044.patch","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/35044","number":35044,"state":"open","locked":false,"title":"ingest: extended `if` documentation","user":{"login":"jakelandis","id":976291,"node_id":"MDQ6VXNlcjk3NjI5MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/976291?v=4","gravatar_id":"","url":"https://api.github.com/users/jakelandis","html_url":"https://github.com/jakelandis","followers_url":"https://api.github.com/users/jakelandis/followers","following_url":"https://api.github.com/users/jakelandis/following{/other_user}","gists_url":"https://api.github.com/users/jakelandis/gists{/gist_id}","starred_url":"https://api.github.com/users/jakelandis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jakelandis/subscriptions","organizations_url":"https://api.github.com/users/jakelandis/orgs","repos_url":"https://api.github.com/users/jakelandis/repos","events_url":"https://api.github.com/users/jakelandis/events{/privacy}","received_events_url":"https://api.github.com/users/jakelandis/received_events","type":"User","site_admin":false},"body":"part of #33188\r\n\r\n@acchen97 - requesting your review since the `if` conditional enables new ingest patterns and wanted to get your feedback here. Let me know if you want me to upload the rendered doc somewhere.   ","created_at":"2018-10-29T15:17:29Z","updated_at":"2018-10-29T16:09:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6ef7eb31d666816c6704f1aec78d88ed3a9948d4","assignee":null,"assignees":[],"requested_reviewers":[{"login":"rjernst","id":289412,"node_id":"MDQ6VXNlcjI4OTQxMg==","avatar_url":"https://avatars3.githubusercontent.com/u/289412?v=4","gravatar_id":"","url":"https://api.github.com/users/rjernst","html_url":"https://github.com/rjernst","followers_url":"https://api.github.com/users/rjernst/followers","following_url":"https://api.github.com/users/rjernst/following{/other_user}","gists_url":"https://api.github.com/users/rjernst/gists{/gist_id}","starred_url":"https://api.github.com/users/rjernst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rjernst/subscriptions","organizations_url":"https://api.github.com/users/rjernst/orgs","repos_url":"https://api.github.com/users/rjernst/repos","events_url":"https://api.github.com/users/rjernst/events{/privacy}","received_events_url":"https://api.github.com/users/rjernst/received_events","type":"User","site_admin":false},{"login":"acchen97","id":13039544,"node_id":"MDQ6VXNlcjEzMDM5NTQ0","avatar_url":"https://avatars1.githubusercontent.com/u/13039544?v=4","gravatar_id":"","url":"https://api.github.com/users/acchen97","html_url":"https://github.com/acchen97","followers_url":"https://api.github.com/users/acchen97/followers","following_url":"https://api.github.com/users/acchen97/following{/other_user}","gists_url":"https://api.github.com/users/acchen97/gists{/gist_id}","starred_url":"https://api.github.com/users/acchen97/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/acchen97/subscriptions","organizations_url":"https://api.github.com/users/acchen97/orgs","repos_url":"https://api.github.com/users/acchen97/repos","events_url":"https://api.github.com/users/acchen97/events{/privacy}","received_events_url":"https://api.github.com/users/acchen97/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":268963484,"node_id":"MDU6TGFiZWwyNjg5NjM0ODQ=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Core/Ingest","name":":Core/Ingest","color":"0e8a16","default":false},{"id":23715,"node_id":"MDU6TGFiZWwyMzcxNQ==","url":"https://api.github.com/repos/elastic/elasticsearch/labels/%3Edocs","name":">docs","color":"db755e","default":false},{"id":962378555,"node_id":"MDU6TGFiZWw5NjIzNzg1NTU=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/v6.5.0","name":"v6.5.0","color":"Dddddd","default":false},{"id":484855464,"node_id":"MDU6TGFiZWw0ODQ4NTU0NjQ=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/v7.0.0","name":"v7.0.0","color":"dddddd","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044/commits","review_comments_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044/comments","review_comment_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/35044/comments","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/4ee42c8aa22fa5e70caad72ae2e3504f1be39b19","head":{"label":"jakelandis:doc_extended_conditional","ref":"doc_extended_conditional","sha":"4ee42c8aa22fa5e70caad72ae2e3504f1be39b19","user":{"login":"jakelandis","id":976291,"node_id":"MDQ6VXNlcjk3NjI5MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/976291?v=4","gravatar_id":"","url":"https://api.github.com/users/jakelandis","html_url":"https://github.com/jakelandis","followers_url":"https://api.github.com/users/jakelandis/followers","following_url":"https://api.github.com/users/jakelandis/following{/other_user}","gists_url":"https://api.github.com/users/jakelandis/gists{/gist_id}","starred_url":"https://api.github.com/users/jakelandis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jakelandis/subscriptions","organizations_url":"https://api.github.com/users/jakelandis/orgs","repos_url":"https://api.github.com/users/jakelandis/repos","events_url":"https://api.github.com/users/jakelandis/events{/privacy}","received_events_url":"https://api.github.com/users/jakelandis/received_events","type":"User","site_admin":false},"repo":{"id":96800477,"node_id":"MDEwOlJlcG9zaXRvcnk5NjgwMDQ3Nw==","name":"elasticsearch","full_name":"jakelandis/elasticsearch","private":false,"owner":{"login":"jakelandis","id":976291,"node_id":"MDQ6VXNlcjk3NjI5MQ==","avatar_url":"https://avatars2.githubusercontent.com/u/976291?v=4","gravatar_id":"","url":"https://api.github.com/users/jakelandis","html_url":"https://github.com/jakelandis","followers_url":"https://api.github.com/users/jakelandis/followers","following_url":"https://api.github.com/users/jakelandis/following{/other_user}","gists_url":"https://api.github.com/users/jakelandis/gists{/gist_id}","starred_url":"https://api.github.com/users/jakelandis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jakelandis/subscriptions","organizations_url":"https://api.github.com/users/jakelandis/orgs","repos_url":"https://api.github.com/users/jakelandis/repos","events_url":"https://api.github.com/users/jakelandis/events{/privacy}","received_events_url":"https://api.github.com/users/jakelandis/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jakelandis/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine","fork":true,"url":"https://api.github.com/repos/jakelandis/elasticsearch","forks_url":"https://api.github.com/repos/jakelandis/elasticsearch/forks","keys_url":"https://api.github.com/repos/jakelandis/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jakelandis/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jakelandis/elasticsearch/teams","hooks_url":"https://api.github.com/repos/jakelandis/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/jakelandis/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/jakelandis/elasticsearch/events","assignees_url":"https://api.github.com/repos/jakelandis/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/jakelandis/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/jakelandis/elasticsearch/tags","blobs_url":"https://api.github.com/repos/jakelandis/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jakelandis/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jakelandis/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/jakelandis/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jakelandis/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/jakelandis/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/jakelandis/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/jakelandis/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/jakelandis/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/jakelandis/elasticsearch/subscription","commits_url":"https://api.github.com/repos/jakelandis/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/jakelandis/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/jakelandis/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/jakelandis/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/jakelandis/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/jakelandis/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jakelandis/elasticsearch/merges","archive_url":"https://api.github.com/repos/jakelandis/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jakelandis/elasticsearch/downloads","issues_url":"https://api.github.com/repos/jakelandis/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/jakelandis/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/jakelandis/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/jakelandis/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jakelandis/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/jakelandis/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/jakelandis/elasticsearch/deployments","created_at":"2017-07-10T16:49:03Z","updated_at":"2018-07-03T16:25:59Z","pushed_at":"2018-10-29T15:12:02Z","git_url":"git://github.com/jakelandis/elasticsearch.git","ssh_url":"git@github.com:jakelandis/elasticsearch.git","clone_url":"https://github.com/jakelandis/elasticsearch.git","svn_url":"https://github.com/jakelandis/elasticsearch","homepage":"https://www.elastic.co/products/elasticsearch","size":504319,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"elastic:master","ref":"master","sha":"6fd7ea71f1f8aa9e058da9528fdaca40a7046d9e","user":{"login":"elastic","id":6764390,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY3NjQzOTA=","avatar_url":"https://avatars0.githubusercontent.com/u/6764390?v=4","gravatar_id":"","url":"https://api.github.com/users/elastic","html_url":"https://github.com/elastic","followers_url":"https://api.github.com/users/elastic/followers","following_url":"https://api.github.com/users/elastic/following{/other_user}","gists_url":"https://api.github.com/users/elastic/gists{/gist_id}","starred_url":"https://api.github.com/users/elastic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elastic/subscriptions","organizations_url":"https://api.github.com/users/elastic/orgs","repos_url":"https://api.github.com/users/elastic/repos","events_url":"https://api.github.com/users/elastic/events{/privacy}","received_events_url":"https://api.github.com/users/elastic/received_events","type":"Organization","site_admin":false},"repo":{"id":507775,"node_id":"MDEwOlJlcG9zaXRvcnk1MDc3NzU=","name":"elasticsearch","full_name":"elastic/elasticsearch","private":false,"owner":{"login":"elastic","id":6764390,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY3NjQzOTA=","avatar_url":"https://avatars0.githubusercontent.com/u/6764390?v=4","gravatar_id":"","url":"https://api.github.com/users/elastic","html_url":"https://github.com/elastic","followers_url":"https://api.github.com/users/elastic/followers","following_url":"https://api.github.com/users/elastic/following{/other_user}","gists_url":"https://api.github.com/users/elastic/gists{/gist_id}","starred_url":"https://api.github.com/users/elastic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/elastic/subscriptions","organizations_url":"https://api.github.com/users/elastic/orgs","repos_url":"https://api.github.com/users/elastic/repos","events_url":"https://api.github.com/users/elastic/events{/privacy}","received_events_url":"https://api.github.com/users/elastic/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/elastic/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine","fork":false,"url":"https://api.github.com/repos/elastic/elasticsearch","forks_url":"https://api.github.com/repos/elastic/elasticsearch/forks","keys_url":"https://api.github.com/repos/elastic/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/elastic/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/elastic/elasticsearch/teams","hooks_url":"https://api.github.com/repos/elastic/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/elastic/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/elastic/elasticsearch/events","assignees_url":"https://api.github.com/repos/elastic/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/elastic/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/elastic/elasticsearch/tags","blobs_url":"https://api.github.com/repos/elastic/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/elastic/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/elastic/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/elastic/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/elastic/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/elastic/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/elastic/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/elastic/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/elastic/elasticsearch/subscription","commits_url":"https://api.github.com/repos/elastic/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/elastic/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/elastic/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/elastic/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/elastic/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/elastic/elasticsearch/merges","archive_url":"https://api.github.com/repos/elastic/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/elastic/elasticsearch/downloads","issues_url":"https://api.github.com/repos/elastic/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/elastic/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/elastic/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/elastic/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/elastic/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/elastic/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/elastic/elasticsearch/deployments","created_at":"2010-02-08T13:20:56Z","updated_at":"2018-10-29T16:07:54Z","pushed_at":"2018-10-29T16:06:40Z","git_url":"git://github.com/elastic/elasticsearch.git","ssh_url":"git@github.com:elastic/elasticsearch.git","clone_url":"https://github.com/elastic/elasticsearch.git","svn_url":"https://github.com/elastic/elasticsearch","homepage":"https://www.elastic.co/products/elasticsearch","size":523544,"stargazers_count":35645,"watchers_count":35645,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12032,"mirror_url":null,"archived":false,"open_issues_count":1729,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":12032,"open_issues":1729,"watchers":35645,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/35044"},"issue":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/35044"},"comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/35044/comments"},"review_comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044/comments"},"review_comment":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35044/commits"},"statuses":{"href":"https://api.github.com/repos/elastic/elasticsearch/statuses/4ee42c8aa22fa5e70caad72ae2e3504f1be39b19"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"original-brownbear"}}