elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java ElasticSearch-如何快速查询3000万文档中的一个结果

Java ElasticSearch-如何快速查询3000万文档中的一个结果,java,elasticsearch,Java,elasticsearch,现在的情况是,我们希望在短时间内从ElasticSearch搜索300万次。 为了测试,我们设置了一个Es集群,它有4核cpu和16G内存,这将需要8个小时。 我们使用的查询是: GET XXX/TYPE/_search { "query": { "match": { "poiName": { "query": "XXXXX" , "operator": "or" } } } } 我们使用JavaHTTP请求来使用hadoop查询

现在的情况是,我们希望在短时间内从ElasticSearch搜索300万次。 为了测试,我们设置了一个Es集群,它有4核cpu和16G内存,这将需要8个小时。 我们使用的查询是:

 GET XXX/TYPE/_search
{
"query": {
"match": {
     "poiName": {
       "query": "XXXXX"
       , "operator": "or"
     }
    }
   }
}
我们使用JavaHTTP请求来使用hadoop查询ElasticSearch

        URL url = new URL(searchUrl);
        con = (HttpURLConnection) url.openConnection();
        con.setDoOutput(true);
        con.setDoInput(true);

        OutputStreamWriter wr= new OutputStreamWriter(con.getOutputStream());
        String query = getQueryJson(field,value);
        wr.write(query);
        wr.flush();
        int HttpResult =con.getResponseCode();
        if(HttpResult ==HttpURLConnection.HTTP_OK){
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8"));
            String line = null;
            while ((line = br.readLine()) != null) {
                sb.append(line + "\n");
            }

            br.close();

        }
事实上,我们只需要一个结果响应。我如何改进这一点

=========================更新===============================

对于我的任务:

该文档类似于{doc\u name:An Foo Eoo,name\u id:123456,other field:value}

我们从ES查询Ann Foo Eoo以获取名称id,但我们不需要所有点击

我们将从ElasticSearch查询300万个不同的文档名

事实上,我们只需要最匹配的结果,而不在乎分数是多少。 附加我的术语查询。最小匹配取决于名称的大小

ps.最小匹配=poiName的Math.ceilterms大小/2

GET XXX/TYPE/_search
{
  "query": {
    "terms": {
      "poiName": [
        "An",
        "Foo",
        "Eoo"
      ],
      "minimum_match":2
    }
  }

}

这就像在我的索引中搜索300万个不同的词一样吗?是的,我们将搜索300万个不同的词。你能更广泛地解释你的任务吗?若您查询包含300万个术语的字符串,它将返回按分数排序的文档。你需要这个吗?或者您只想按特定术语筛选文档。也许有可能对您的结构进行非规范化,并创建类似术语组、术语超级组的内容,以减少适用术语的数量?好的,我将解释我的任务并更新我的术语查询