{"action":"created","comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/236295013","pull_request_review_id":178339634,"id":236295013,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNjI5NTAxMw==","diff_hunk":"@@ -0,0 +1,132 @@\n+/*\n+ * Licensed to Elasticsearch under one or more contributor\n+ * license agreements. See the NOTICE file distributed with\n+ * this work for additional information regarding copyright\n+ * ownership. Elasticsearch licenses this file to you under\n+ * the Apache License, Version 2.0 (the \"License\"); you may\n+ * not use this file except in compliance with the License.\n+ * You may obtain a copy of the License at\n+ *\n+ *    http://www.apache.org/licenses/LICENSE-2.0\n+ *\n+ * Unless required by applicable law or agreed to in writing,\n+ * software distributed under the License is distributed on an\n+ * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n+ * KIND, either express or implied.  See the License for the\n+ * specific language governing permissions and limitations\n+ * under the License.\n+ */\n+package org.elasticsearch.search.aggregations.bucket.terms;\n+\n+import org.apache.lucene.util.CollectionUtil;\n+import org.elasticsearch.common.io.stream.StreamInput;\n+import org.elasticsearch.common.io.stream.StreamOutput;\n+import org.elasticsearch.common.util.BloomFilter;\n+import org.elasticsearch.search.DocValueFormat;\n+import org.elasticsearch.search.aggregations.AggregationExecutionException;\n+import org.elasticsearch.search.aggregations.BucketOrder;\n+import org.elasticsearch.search.aggregations.InternalAggregation;\n+import org.elasticsearch.search.aggregations.pipeline.PipelineAggregator;\n+\n+import java.io.IOException;\n+import java.util.ArrayList;\n+import java.util.HashMap;\n+import java.util.List;\n+import java.util.Map;\n+\n+public abstract class InternalMappedRareTerms<A extends InternalTerms<A, B>, B extends InternalTerms.Bucket<B>>\n+    extends InternalMappedTerms<A,B> {\n+\n+    final long maxDocCount;\n+    final BloomFilter bloom;\n+\n+    InternalMappedRareTerms(String name, BucketOrder order, List<PipelineAggregator> pipelineAggregators,\n+                            Map<String, Object> metaData, DocValueFormat format,\n+                            List<B> buckets, long maxDocCount, BloomFilter bloom) {\n+        // TODO is there a way to determine sum_other_doc_count and doc_count_error_upper_bound equivalents for rare based on bloom?\n+        super(name, order, 0, 1, pipelineAggregators, metaData, format, 0, false, 0, buckets, 0);\n+        this.maxDocCount = maxDocCount;\n+        this.bloom = bloom;\n+    }\n+\n+    public long getMaxDocCount() {\n+        return maxDocCount;\n+    }\n+\n+    BloomFilter getBloom() {\n+        return bloom;\n+    }\n+\n+    /**\n+     * Read from a stream.\n+     */\n+    InternalMappedRareTerms(StreamInput in, Bucket.Reader<B> bucketReader) throws IOException {\n+        super(in, bucketReader);\n+        maxDocCount = in.readLong();\n+        bloom = new BloomFilter(in);\n+    }\n+\n+    @Override\n+    protected void writeTermTypeInfoTo(StreamOutput out) throws IOException {\n+        super.writeTermTypeInfoTo(out);\n+        out.writeLong(maxDocCount);\n+        bloom.writeTo(out);\n+    }\n+\n+    @Override\n+    public InternalAggregation doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) {\n+        Map<Object, List<B>> buckets = new HashMap<>();\n+        InternalTerms<A, B> referenceTerms = null;\n+        BloomFilter bloomFilter = null;\n+\n+        for (InternalAggregation aggregation : aggregations) {\n+\n+            // Unmapped rare terms don't have a bloom filter so we'll skip all this work\n+            // and save some type casting headaches later.\n+            if (aggregation.isMapped() == false) {\n+                continue;\n+            }\n+\n+            @SuppressWarnings(\"unchecked\")\n+            InternalTerms<A, B> terms = (InternalTerms<A, B>) aggregation;\n+            if (referenceTerms == null && aggregation.getClass().equals(UnmappedRareTerms.class) == false) {\n+                referenceTerms = terms;\n+            }\n+            if (referenceTerms != null &&\n+                referenceTerms.getClass().equals(terms.getClass()) == false &&\n+                terms.getClass().equals(UnmappedRareTerms.class) == false) {\n+                // control gets into this loop when the same field name against which the query is executed\n+                // is of different types in different indices.\n+                throw new AggregationExecutionException(\"Merging/Reducing the aggregations failed when computing the aggregation [\"\n+                    + referenceTerms.getName() + \"] because the field you gave in the aggregation query existed as two different \"\n+                    + \"types in two different indices\");\n+            }\n+            for (B bucket : terms.getBuckets()) {\n+                List<B> bucketList = buckets.computeIfAbsent(bucket.getKey(), k -> new ArrayList<>());\n+                bucketList.add(bucket);\n+            }\n+\n+            if (bloomFilter == null) {\n+                bloomFilter = ((InternalMappedRareTerms)aggregation).bloom;","path":"server/src/main/java/org/elasticsearch/search/aggregations/bucket/terms/InternalMappedRareTerms.java","position":110,"original_position":110,"commit_id":"cee5ce31a0a4feedfe2f5d6017f398757dac7ad1","original_commit_id":"cee5ce31a0a4feedfe2f5d6017f398757dac7ad1","user":{"login":"polyfractal","id":1224228,"node_id":"MDQ6VXNlcjEyMjQyMjg=","avatar_url":"https://avatars1.githubusercontent.com/u/1224228?v=4","gravatar_id":"","url":"https://api.github.com/users/polyfractal","html_url":"https://github.com/polyfractal","followers_url":"https://api.github.com/users/polyfractal/followers","following_url":"https://api.github.com/users/polyfractal/following{/other_user}","gists_url":"https://api.github.com/users/polyfractal/gists{/gist_id}","starred_url":"https://api.github.com/users/polyfractal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polyfractal/subscriptions","organizations_url":"https://api.github.com/users/polyfractal/orgs","repos_url":"https://api.github.com/users/polyfractal/repos","events_url":"https://api.github.com/users/polyfractal/events{/privacy}","received_events_url":"https://api.github.com/users/polyfractal/received_events","type":"User","site_admin":false},"body":"++ will do","created_at":"2018-11-26T15:17:51Z","updated_at":"2018-11-26T15:17:51Z","html_url":"https://github.com/elastic/elasticsearch/pull/35718#discussion_r236295013","pull_request_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/236295013"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/35718#discussion_r236295013"},"pull_request":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718"}},"in_reply_to_id":235346069},"pull_request":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718","id":232126648,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMyMTI2NjQ4","html_url":"https://github.com/elastic/elasticsearch/pull/35718","diff_url":"https://github.com/elastic/elasticsearch/pull/35718.diff","patch_url":"https://github.com/elastic/elasticsearch/pull/35718.patch","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/35718","number":35718,"state":"open","locked":false,"title":"Add RareTerms aggregation","user":{"login":"polyfractal","id":1224228,"node_id":"MDQ6VXNlcjEyMjQyMjg=","avatar_url":"https://avatars1.githubusercontent.com/u/1224228?v=4","gravatar_id":"","url":"https://api.github.com/users/polyfractal","html_url":"https://github.com/polyfractal","followers_url":"https://api.github.com/users/polyfractal/followers","following_url":"https://api.github.com/users/polyfractal/following{/other_user}","gists_url":"https://api.github.com/users/polyfractal/gists{/gist_id}","starred_url":"https://api.github.com/users/polyfractal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polyfractal/subscriptions","organizations_url":"https://api.github.com/users/polyfractal/orgs","repos_url":"https://api.github.com/users/polyfractal/repos","events_url":"https://api.github.com/users/polyfractal/events{/privacy}","received_events_url":"https://api.github.com/users/polyfractal/received_events","type":"User","site_admin":false},"body":"This adds a `rare_terms` aggregation.  It is an aggregation designed to identify the long-tail of keywords, e.g. terms that are \"rare\" or have low doc counts.\r\n\r\nThis aggregation is designed to be more memory efficient than the alternative, which is setting a terms aggregation to `size: MAX_LONG` (or worse, ordering a terms agg by count ascending, which has unbounded error).\r\n\r\nThis aggregation works by maintaining a map of terms that have been seen. A counter associated with each value is incremented when we see the term again.  If the counter surpasses a predefined threshold, the term is removed from the map and inserted into a bloom filter.  If a future term is found in the bloom filter we assume it was previously removed from the map and is \"common\".\r\n\r\nThe map keys are the \"rare\" terms after collection is done. \r\n\r\n## Outstanding issues\r\n\r\n- Unclear how we should default the bloom filter.\r\n- Do we expose the bloom filter params to the user, or try to pick a one-size fits all?  I think we probably need to expose some settings but right now nothing is configurable\r\n- What's the max `max_doc_count` that we allow?  Currently set to 10 but I think that's probably too low.  It's mainly another safety mechanism, the max buckets limit will still trigger too.  It might not make sense to even have a max here, since it's pretty data-dependent.\r\n- No global ordinal support for strings.  The PR was already huge so I think this should be done in a followup?\r\n- A few misc items questions in `//TODO review` comments\r\n- I don't have any \"big\" integration tests, just the yaml tests.  Should I add a QA test or something that tests this on a few thousand docs?\r\n\r\nCloses #20586 (finally!)\r\n\r\n@andyb-elastic @not-napoleon tagged you both as reviewers in case your interested but no pressure if not, or too busy :)\r\n\r\nAlso /cc @clintongormley ","created_at":"2018-11-19T22:05:00Z","updated_at":"2018-11-26T15:17:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"722e59b0c4a5d0ff083dae4883ebc50ec8084bfc","assignee":null,"assignees":[],"requested_reviewers":[{"login":"not-napoleon","id":979663,"node_id":"MDQ6VXNlcjk3OTY2Mw==","avatar_url":"https://avatars0.githubusercontent.com/u/979663?v=4","gravatar_id":"","url":"https://api.github.com/users/not-napoleon","html_url":"https://github.com/not-napoleon","followers_url":"https://api.github.com/users/not-napoleon/followers","following_url":"https://api.github.com/users/not-napoleon/following{/other_user}","gists_url":"https://api.github.com/users/not-napoleon/gists{/gist_id}","starred_url":"https://api.github.com/users/not-napoleon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/not-napoleon/subscriptions","organizations_url":"https://api.github.com/users/not-napoleon/orgs","repos_url":"https://api.github.com/users/not-napoleon/repos","events_url":"https://api.github.com/users/not-napoleon/events{/privacy}","received_events_url":"https://api.github.com/users/not-napoleon/received_events","type":"User","site_admin":false},{"login":"andyb-elastic","id":29205940,"node_id":"MDQ6VXNlcjI5MjA1OTQw","avatar_url":"https://avatars2.githubusercontent.com/u/29205940?v=4","gravatar_id":"","url":"https://api.github.com/users/andyb-elastic","html_url":"https://github.com/andyb-elastic","followers_url":"https://api.github.com/users/andyb-elastic/followers","following_url":"https://api.github.com/users/andyb-elastic/following{/other_user}","gists_url":"https://api.github.com/users/andyb-elastic/gists{/gist_id}","starred_url":"https://api.github.com/users/andyb-elastic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andyb-elastic/subscriptions","organizations_url":"https://api.github.com/users/andyb-elastic/orgs","repos_url":"https://api.github.com/users/andyb-elastic/repos","events_url":"https://api.github.com/users/andyb-elastic/events{/privacy}","received_events_url":"https://api.github.com/users/andyb-elastic/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":141141324,"node_id":"MDU6TGFiZWwxNDExNDEzMjQ=","url":"https://api.github.com/repos/elastic/elasticsearch/labels/:Analytics/Aggregations","name":":Analytics/Aggregations","color":"0e8a16","default":false},{"id":23172,"node_id":"MDU6TGFiZWwyMzE3Mg==","url":"https://api.github.com/repos/elastic/elasticsearch/labels/%3Efeature","name":">feature","color":"006b75","default":false},{"id":1102494662,"node_id":"MDU6TGFiZWwxMTAyNDk0NjYy","url":"https://api.github.com/repos/elastic/elasticsearch/labels/v6.6.0","name":"v6.6.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/35718/commits","review_comments_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718/comments","review_comment_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/35718/comments","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/cee5ce31a0a4feedfe2f5d6017f398757dac7ad1","head":{"label":"polyfractal:rare_terms3","ref":"rare_terms3","sha":"cee5ce31a0a4feedfe2f5d6017f398757dac7ad1","user":{"login":"polyfractal","id":1224228,"node_id":"MDQ6VXNlcjEyMjQyMjg=","avatar_url":"https://avatars1.githubusercontent.com/u/1224228?v=4","gravatar_id":"","url":"https://api.github.com/users/polyfractal","html_url":"https://github.com/polyfractal","followers_url":"https://api.github.com/users/polyfractal/followers","following_url":"https://api.github.com/users/polyfractal/following{/other_user}","gists_url":"https://api.github.com/users/polyfractal/gists{/gist_id}","starred_url":"https://api.github.com/users/polyfractal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polyfractal/subscriptions","organizations_url":"https://api.github.com/users/polyfractal/orgs","repos_url":"https://api.github.com/users/polyfractal/repos","events_url":"https://api.github.com/users/polyfractal/events{/privacy}","received_events_url":"https://api.github.com/users/polyfractal/received_events","type":"User","site_admin":false},"repo":{"id":7764033,"node_id":"MDEwOlJlcG9zaXRvcnk3NzY0MDMz","name":"elasticsearch","full_name":"polyfractal/elasticsearch","private":false,"owner":{"login":"polyfractal","id":1224228,"node_id":"MDQ6VXNlcjEyMjQyMjg=","avatar_url":"https://avatars1.githubusercontent.com/u/1224228?v=4","gravatar_id":"","url":"https://api.github.com/users/polyfractal","html_url":"https://github.com/polyfractal","followers_url":"https://api.github.com/users/polyfractal/followers","following_url":"https://api.github.com/users/polyfractal/following{/other_user}","gists_url":"https://api.github.com/users/polyfractal/gists{/gist_id}","starred_url":"https://api.github.com/users/polyfractal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/polyfractal/subscriptions","organizations_url":"https://api.github.com/users/polyfractal/orgs","repos_url":"https://api.github.com/users/polyfractal/repos","events_url":"https://api.github.com/users/polyfractal/events{/privacy}","received_events_url":"https://api.github.com/users/polyfractal/received_events","type":"User","site_admin":false},"html_url":"https://github.com/polyfractal/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine","fork":true,"url":"https://api.github.com/repos/polyfractal/elasticsearch","forks_url":"https://api.github.com/repos/polyfractal/elasticsearch/forks","keys_url":"https://api.github.com/repos/polyfractal/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/polyfractal/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/polyfractal/elasticsearch/teams","hooks_url":"https://api.github.com/repos/polyfractal/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/polyfractal/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/polyfractal/elasticsearch/events","assignees_url":"https://api.github.com/repos/polyfractal/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/polyfractal/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/polyfractal/elasticsearch/tags","blobs_url":"https://api.github.com/repos/polyfractal/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/polyfractal/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/polyfractal/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/polyfractal/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/polyfractal/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/polyfractal/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/polyfractal/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/polyfractal/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/polyfractal/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/polyfractal/elasticsearch/subscription","commits_url":"https://api.github.com/repos/polyfractal/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/polyfractal/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/polyfractal/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/polyfractal/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/polyfractal/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/polyfractal/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/polyfractal/elasticsearch/merges","archive_url":"https://api.github.com/repos/polyfractal/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/polyfractal/elasticsearch/downloads","issues_url":"https://api.github.com/repos/polyfractal/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/polyfractal/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/polyfractal/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/polyfractal/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/polyfractal/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/polyfractal/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/polyfractal/elasticsearch/deployments","created_at":"2013-01-22T23:47:55Z","updated_at":"2015-05-01T23:01:11Z","pushed_at":"2018-11-21T20:23:06Z","git_url":"git://github.com/polyfractal/elasticsearch.git","ssh_url":"git@github.com:polyfractal/elasticsearch.git","clone_url":"https://github.com/polyfractal/elasticsearch.git","svn_url":"https://github.com/polyfractal/elasticsearch","homepage":"http://elasticsearch.org","size":468198,"stargazers_count":1,"watchers_count":1,"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":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"elastic:master","ref":"master","sha":"90c0d444cf3ec8a265a1b56d7ade3970e0b44625","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-11-26T15:00:24Z","pushed_at":"2018-11-26T15:11:00Z","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":533900,"stargazers_count":36311,"watchers_count":36311,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":12284,"mirror_url":null,"archived":false,"open_issues_count":1824,"license":{"key":"other","name":"Other","spdx_id":"NOASSERTION","url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":12284,"open_issues":1824,"watchers":36311,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/35718"},"issue":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/35718"},"comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/35718/comments"},"review_comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718/comments"},"review_comment":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/35718/commits"},"statuses":{"href":"https://api.github.com/repos/elastic/elasticsearch/statuses/cee5ce31a0a4feedfe2f5d6017f398757dac7ad1"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"polyfractal"}}