{"action":"created","comment":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/56410010","id":56410010,"diff_hunk":"@@ -0,0 +1,260 @@\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+\n+package org.elasticsearch.index.percolator;\n+\n+import org.apache.lucene.index.FieldInfo;\n+import org.apache.lucene.index.LeafReader;\n+import org.apache.lucene.index.LeafReaderContext;\n+import org.apache.lucene.index.PostingsEnum;\n+import org.apache.lucene.index.StoredFieldVisitor;\n+import org.apache.lucene.index.Term;\n+import org.apache.lucene.search.DocIdSetIterator;\n+import org.apache.lucene.search.Query;\n+import org.elasticsearch.ElasticsearchException;\n+import org.elasticsearch.Version;\n+import org.elasticsearch.common.bytes.BytesArray;\n+import org.elasticsearch.common.bytes.BytesReference;\n+import org.elasticsearch.common.cache.Cache;\n+import org.elasticsearch.common.cache.CacheBuilder;\n+import org.elasticsearch.common.settings.Setting;\n+import org.elasticsearch.common.unit.TimeValue;\n+import org.elasticsearch.common.xcontent.XContentHelper;\n+import org.elasticsearch.common.xcontent.XContentParser;\n+import org.elasticsearch.index.AbstractIndexComponent;\n+import org.elasticsearch.index.IndexSettings;\n+import org.elasticsearch.index.IndexWarmer;\n+import org.elasticsearch.index.engine.Engine;\n+import org.elasticsearch.index.mapper.internal.SourceFieldMapper;\n+import org.elasticsearch.index.mapper.internal.TypeFieldMapper;\n+import org.elasticsearch.index.query.PercolatorQuery;\n+import org.elasticsearch.index.query.QueryShardContext;\n+import org.elasticsearch.index.shard.IndexShard;\n+import org.elasticsearch.threadpool.ThreadPool;\n+\n+import java.io.Closeable;\n+import java.io.IOException;\n+import java.util.concurrent.CountDownLatch;\n+import java.util.concurrent.Executor;\n+import java.util.function.Supplier;\n+\n+public final class PercolatorQueryCache extends AbstractIndexComponent implements Closeable, LeafReader.CoreClosedListener, PercolatorQuery.QueryRegistry {\n+\n+    public final static Setting<Boolean> INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING = Setting.boolSetting(\"index.percolator.map_unmapped_fields_as_string\", false, Setting.Property.IndexScope);\n+\n+    private final Supplier<QueryShardContext> queryShardContextSupplier;\n+    private final Cache<Object, QueriesLeaf> cache;\n+    private final boolean mapUnmappedFieldsAsString;\n+\n+    public PercolatorQueryCache(IndexSettings indexSettings, Supplier<QueryShardContext> queryShardContextSupplier) {\n+        super(indexSettings);\n+        this.queryShardContextSupplier = queryShardContextSupplier;\n+        cache = CacheBuilder.<Object, QueriesLeaf>builder().build();\n+        this.mapUnmappedFieldsAsString = indexSettings.getValue(INDEX_MAP_UNMAPPED_FIELDS_AS_STRING_SETTING);\n+    }\n+\n+    @Override\n+    public Leaf getQueries(LeafReaderContext ctx) {\n+        QueriesLeaf percolatorQueries = cache.get(ctx.reader().getCoreCacheKey());\n+        if (percolatorQueries == null) {\n+            throw new IllegalStateException(\"queries not loaded, queries should be have been preloaded during index warming...\");\n+        }\n+        return percolatorQueries;\n+    }\n+\n+    public IndexWarmer.Listener createListener(ThreadPool threadPool) {\n+        return new IndexWarmer.Listener() {\n+\n+            final Executor executor = threadPool.executor(ThreadPool.Names.WARMER);\n+\n+            @Override\n+            public IndexWarmer.TerminationHandle warmNewReaders(IndexShard indexShard, Engine.Searcher searcher) {\n+                final CountDownLatch latch = new CountDownLatch(searcher.reader().leaves().size());\n+                for (final LeafReaderContext ctx : searcher.reader().leaves()) {\n+                    executor.execute(() -> {\n+                        try {\n+                            final long start = System.nanoTime();\n+                            QueriesLeaf queries = loadQueries(ctx, indexShard.indexSettings().getIndexVersionCreated());\n+                            cache.put(ctx.reader().getCoreCacheKey(), queries);\n+                            if (indexShard.warmerService().logger().isTraceEnabled()) {\n+                                indexShard.warmerService().logger().trace(\"loading percolator queries took [{}]\", TimeValue.timeValueNanos(System.nanoTime() - start));\n+                            }\n+                        } catch (Throwable t) {\n+                            indexShard.warmerService().logger().warn(\"failed to load percolator queries\", t);\n+                        } finally {\n+                            latch.countDown();\n+                        }\n+                    });\n+                }\n+                return () -> latch.await();\n+            }\n+\n+            @Override\n+            public IndexWarmer.TerminationHandle warmTopReader(IndexShard indexShard, Engine.Searcher searcher) {\n+                return IndexWarmer.TerminationHandle.NO_WAIT;\n+            }\n+        };\n+    }\n+\n+    QueriesLeaf loadQueries(LeafReaderContext context, Version indexVersionCreated) throws IOException {\n+        LeafReader leafReader = context.reader();\n+\n+        int numQueries = 0;\n+        Query[] queries = new Query[leafReader.maxDoc()];\n+\n+        PostingsEnum postings = leafReader.postings(new Term(TypeFieldMapper.NAME, PercolatorFieldMapper.TYPE_NAME), PostingsEnum.NONE);\n+        if (postings != null) {\n+            for (int docId = postings.nextDoc(); docId != DocIdSetIterator.NO_MORE_DOCS; docId = postings.nextDoc()) {\n+                if (leafReader.getLiveDocs() == null || leafReader.getLiveDocs().get(docId)) {","path":"core/src/main/java/org/elasticsearch/index/percolator/PercolatorQueryCache.java","position":124,"original_position":124,"commit_id":"6d949a013ad764f0d0a994e9706debe1785a69bb","original_commit_id":"6d949a013ad764f0d0a994e9706debe1785a69bb","user":{"login":"jpountz","id":299848,"avatar_url":"https://avatars.githubusercontent.com/u/299848?v=3","gravatar_id":"","url":"https://api.github.com/users/jpountz","html_url":"https://github.com/jpountz","followers_url":"https://api.github.com/users/jpountz/followers","following_url":"https://api.github.com/users/jpountz/following{/other_user}","gists_url":"https://api.github.com/users/jpountz/gists{/gist_id}","starred_url":"https://api.github.com/users/jpountz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpountz/subscriptions","organizations_url":"https://api.github.com/users/jpountz/orgs","repos_url":"https://api.github.com/users/jpountz/repos","events_url":"https://api.github.com/users/jpountz/events{/privacy}","received_events_url":"https://api.github.com/users/jpountz/received_events","type":"User","site_admin":false},"body":"hmm actually I think we should load deleted queries too","created_at":"2016-03-16T20:37:04Z","updated_at":"2016-03-16T20:37:04Z","html_url":"https://github.com/elastic/elasticsearch/pull/16349#discussion_r56410010","pull_request_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349","_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments/56410010"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/16349#discussion_r56410010"},"pull_request":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349"}}},"pull_request":{"url":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349","id":57871697,"html_url":"https://github.com/elastic/elasticsearch/pull/16349","diff_url":"https://github.com/elastic/elasticsearch/pull/16349.diff","patch_url":"https://github.com/elastic/elasticsearch/pull/16349.patch","issue_url":"https://api.github.com/repos/elastic/elasticsearch/issues/16349","number":16349,"state":"open","locked":false,"title":"Replace percolate APIs with a percolator query","user":{"login":"martijnvg","id":580421,"avatar_url":"https://avatars.githubusercontent.com/u/580421?v=3","gravatar_id":"","url":"https://api.github.com/users/martijnvg","html_url":"https://github.com/martijnvg","followers_url":"https://api.github.com/users/martijnvg/followers","following_url":"https://api.github.com/users/martijnvg/following{/other_user}","gists_url":"https://api.github.com/users/martijnvg/gists{/gist_id}","starred_url":"https://api.github.com/users/martijnvg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martijnvg/subscriptions","organizations_url":"https://api.github.com/users/martijnvg/orgs","repos_url":"https://api.github.com/users/martijnvg/repos","events_url":"https://api.github.com/users/martijnvg/events{/privacy}","received_events_url":"https://api.github.com/users/martijnvg/received_events","type":"User","site_admin":false},"body":"By replacing the percolator APIs by a percolator query means that percolating will be done via the search API. This has many advantages:\r\n* Removing a lot of code\r\n* A lot of requested features are now supported.\r\n* There will never be a need to sync the search and percolate apis.\r\n\r\nUsing the percolator query in the search API:\r\n\r\n```\r\n\"query\" : {\r\n   \"percolator\" : {\r\n        \"doc_type\" : \"type\",\r\n        \"source\" : {\r\n            \"field1\" : \"value\",\r\n            ...\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nPercolating an existing document:\r\n```\r\n\"query\" : {\r\n   \"percolator\" : {\r\n        \"doc_type\" : \"type\",\r\n        \"get\" : {\r\n            \"index\" : \"_index\",\r\n            \"type\" : \"_type\",\r\n            \"id\" : \"_id\"\r\n        }\r\n    }\r\n}\r\n```\r\n\r\nThe search response will now include hits of type `.percolator`.\r\n\r\nThe percolate and mpercolate APIs still exist in this PR, but just these APIs just build a search request and delegates the request to the search API behind the scene for bwc reason. In the next major version after 3.0 these APIs can be removed.\r\n\r\nThis PR builds, but is not ready yet. Tests need to be added and the entire percolator docs need to be revised.\r\n\r\nCloses #10741\r\nCloses #7297\r\nCloses #13176\r\nCloses #13978\r\nCloses #11264\r\nCloses #10741\r\nCloses #4317","created_at":"2016-02-01T17:27:22Z","updated_at":"2016-03-16T20:37:04Z","closed_at":null,"merged_at":null,"merge_commit_sha":"5c6bd60d29541ea07ac2d26f2bfef47de8bfbbe6","assignee":{"login":"jpountz","id":299848,"avatar_url":"https://avatars.githubusercontent.com/u/299848?v=3","gravatar_id":"","url":"https://api.github.com/users/jpountz","html_url":"https://github.com/jpountz","followers_url":"https://api.github.com/users/jpountz/followers","following_url":"https://api.github.com/users/jpountz/following{/other_user}","gists_url":"https://api.github.com/users/jpountz/gists{/gist_id}","starred_url":"https://api.github.com/users/jpountz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpountz/subscriptions","organizations_url":"https://api.github.com/users/jpountz/orgs","repos_url":"https://api.github.com/users/jpountz/repos","events_url":"https://api.github.com/users/jpountz/events{/privacy}","received_events_url":"https://api.github.com/users/jpountz/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349/commits","review_comments_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349/comments","review_comment_url":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}","comments_url":"https://api.github.com/repos/elastic/elasticsearch/issues/16349/comments","statuses_url":"https://api.github.com/repos/elastic/elasticsearch/statuses/6d949a013ad764f0d0a994e9706debe1785a69bb","head":{"label":"martijnvg:percolate_rewrite","ref":"percolate_rewrite","sha":"6d949a013ad764f0d0a994e9706debe1785a69bb","user":{"login":"martijnvg","id":580421,"avatar_url":"https://avatars.githubusercontent.com/u/580421?v=3","gravatar_id":"","url":"https://api.github.com/users/martijnvg","html_url":"https://github.com/martijnvg","followers_url":"https://api.github.com/users/martijnvg/followers","following_url":"https://api.github.com/users/martijnvg/following{/other_user}","gists_url":"https://api.github.com/users/martijnvg/gists{/gist_id}","starred_url":"https://api.github.com/users/martijnvg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martijnvg/subscriptions","organizations_url":"https://api.github.com/users/martijnvg/orgs","repos_url":"https://api.github.com/users/martijnvg/repos","events_url":"https://api.github.com/users/martijnvg/events{/privacy}","received_events_url":"https://api.github.com/users/martijnvg/received_events","type":"User","site_admin":false},"repo":{"id":3584739,"name":"elasticsearch","full_name":"martijnvg/elasticsearch","owner":{"login":"martijnvg","id":580421,"avatar_url":"https://avatars.githubusercontent.com/u/580421?v=3","gravatar_id":"","url":"https://api.github.com/users/martijnvg","html_url":"https://github.com/martijnvg","followers_url":"https://api.github.com/users/martijnvg/followers","following_url":"https://api.github.com/users/martijnvg/following{/other_user}","gists_url":"https://api.github.com/users/martijnvg/gists{/gist_id}","starred_url":"https://api.github.com/users/martijnvg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/martijnvg/subscriptions","organizations_url":"https://api.github.com/users/martijnvg/orgs","repos_url":"https://api.github.com/users/martijnvg/repos","events_url":"https://api.github.com/users/martijnvg/events{/privacy}","received_events_url":"https://api.github.com/users/martijnvg/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/martijnvg/elasticsearch","description":"Open Source, Distributed, RESTful Search Engine with grouping","fork":true,"url":"https://api.github.com/repos/martijnvg/elasticsearch","forks_url":"https://api.github.com/repos/martijnvg/elasticsearch/forks","keys_url":"https://api.github.com/repos/martijnvg/elasticsearch/keys{/key_id}","collaborators_url":"https://api.github.com/repos/martijnvg/elasticsearch/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/martijnvg/elasticsearch/teams","hooks_url":"https://api.github.com/repos/martijnvg/elasticsearch/hooks","issue_events_url":"https://api.github.com/repos/martijnvg/elasticsearch/issues/events{/number}","events_url":"https://api.github.com/repos/martijnvg/elasticsearch/events","assignees_url":"https://api.github.com/repos/martijnvg/elasticsearch/assignees{/user}","branches_url":"https://api.github.com/repos/martijnvg/elasticsearch/branches{/branch}","tags_url":"https://api.github.com/repos/martijnvg/elasticsearch/tags","blobs_url":"https://api.github.com/repos/martijnvg/elasticsearch/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/martijnvg/elasticsearch/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/martijnvg/elasticsearch/git/refs{/sha}","trees_url":"https://api.github.com/repos/martijnvg/elasticsearch/git/trees{/sha}","statuses_url":"https://api.github.com/repos/martijnvg/elasticsearch/statuses/{sha}","languages_url":"https://api.github.com/repos/martijnvg/elasticsearch/languages","stargazers_url":"https://api.github.com/repos/martijnvg/elasticsearch/stargazers","contributors_url":"https://api.github.com/repos/martijnvg/elasticsearch/contributors","subscribers_url":"https://api.github.com/repos/martijnvg/elasticsearch/subscribers","subscription_url":"https://api.github.com/repos/martijnvg/elasticsearch/subscription","commits_url":"https://api.github.com/repos/martijnvg/elasticsearch/commits{/sha}","git_commits_url":"https://api.github.com/repos/martijnvg/elasticsearch/git/commits{/sha}","comments_url":"https://api.github.com/repos/martijnvg/elasticsearch/comments{/number}","issue_comment_url":"https://api.github.com/repos/martijnvg/elasticsearch/issues/comments{/number}","contents_url":"https://api.github.com/repos/martijnvg/elasticsearch/contents/{+path}","compare_url":"https://api.github.com/repos/martijnvg/elasticsearch/compare/{base}...{head}","merges_url":"https://api.github.com/repos/martijnvg/elasticsearch/merges","archive_url":"https://api.github.com/repos/martijnvg/elasticsearch/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/martijnvg/elasticsearch/downloads","issues_url":"https://api.github.com/repos/martijnvg/elasticsearch/issues{/number}","pulls_url":"https://api.github.com/repos/martijnvg/elasticsearch/pulls{/number}","milestones_url":"https://api.github.com/repos/martijnvg/elasticsearch/milestones{/number}","notifications_url":"https://api.github.com/repos/martijnvg/elasticsearch/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/martijnvg/elasticsearch/labels{/name}","releases_url":"https://api.github.com/repos/martijnvg/elasticsearch/releases{/id}","deployments_url":"https://api.github.com/repos/martijnvg/elasticsearch/deployments","created_at":"2012-02-29T18:56:33Z","updated_at":"2014-08-09T22:19:31Z","pushed_at":"2016-03-16T16:54:03Z","git_url":"git://github.com/martijnvg/elasticsearch.git","ssh_url":"git@github.com:martijnvg/elasticsearch.git","clone_url":"https://github.com/martijnvg/elasticsearch.git","svn_url":"https://github.com/martijnvg/elasticsearch","homepage":"http://elasticsearch.org","size":189017,"stargazers_count":12,"watchers_count":12,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":2,"mirror_url":null,"open_issues_count":0,"forks":2,"open_issues":0,"watchers":12,"default_branch":"master"}},"base":{"label":"elastic:master","ref":"master","sha":"d83e12094e591aa36b08493cb64107167c7e61ca","user":{"login":"elastic","id":6764390,"avatar_url":"https://avatars.githubusercontent.com/u/6764390?v=3","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,"name":"elasticsearch","full_name":"elastic/elasticsearch","owner":{"login":"elastic","id":6764390,"avatar_url":"https://avatars.githubusercontent.com/u/6764390?v=3","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},"private":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":"2016-03-16T14:56:33Z","pushed_at":"2016-03-16T19:58:35Z","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":297630,"stargazers_count":16099,"watchers_count":16099,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5178,"mirror_url":null,"open_issues_count":1054,"forks":5178,"open_issues":1054,"watchers":16099,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349"},"html":{"href":"https://github.com/elastic/elasticsearch/pull/16349"},"issue":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/16349"},"comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/issues/16349/comments"},"review_comments":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349/comments"},"review_comment":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/elastic/elasticsearch/pulls/16349/commits"},"statuses":{"href":"https://api.github.com/repos/elastic/elasticsearch/statuses/6d949a013ad764f0d0a994e9706debe1785a69bb"}}}}