当前位置: 首页 > 知识库问答 >
问题:

如何实现弹性搜索的spring Rest客户端?

芮建茗
2023-03-14

我们正在spring boot开发一个弹性搜索应用程序。我们不能使用弹性搜索提供的Java API或Java Rest客户端API。相反,我们需要使用spring的rest模板在弹性中进行操作,但是弹性似乎不接受来自rest客户端的索引请求,我们得到了“不接受”的回复。如果有人给我们一些提示或信息,我真的很感激。

弹性版:5.6

共有1个答案

尹昂雄
2023-03-14

试试这个。它适用于通过HTTP API使用HTTPURLConnection对文档进行索引。

URL obj = new URL("http://localhost:9200/index/type");
String json = "{\n" + 
            "    \"user\" : \"kimchy\",\n" + 
            "    \"post_date\" : \"2009-11-15T14:12:12\",\n" + 
            "    \"message\" : \"trying out Elasticsearch\"\n" + 
            "}";
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("POST");
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
osw.write(json);
osw.flush();
osw.close();

System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());
if (con != null)
    con.disconnect();

使用HttpurlConnection进行简单搜索。

URL obj = new URL("http://localhost:9200/index/type/_search");
String json = "{\n" + 
                "  \"query\": {\n" + 
                "    \"match_all\": {}\n" + 
                "  }\n" + 
                "}";
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("GET");
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream());
osw.write(json);
osw.flush();
osw.close();

BufferedReader br = new BufferedReader(new InputStreamReader((con.getInputStream())));

System.out.println("Response : " + br.readLine());

System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());

if (con != null)
    con.disconnect();
 类似资料:
  • 通过以下命令,我可以查看弹性搜索部署的endpoint,并且从Postman那里没有任何问题:GET https://:@d97215aee2.us-east-1.aws.found.io:9243 我也可以使用邮递员的这个命令创建索引...将https://el弹力:4yqimxfosz9mxpgy1fj7t5bu@d97218f74f6d48489b355dd7d665aee2.us-east

  • 我们计划为我们的多租户应用引入弹性搜索(AWS)。我们有以下几种选择, 每个租户使用一个索引 每个租户使用一种类型 所有租户与自定义路由共享一个索引 根据这个博客https://www.elastic.co/blog/found-multi-tenancy第一个选项会导致内存问题。但不清楚还有其他选择。 似乎如果我们使用第三个选项,那么就没有数据分离。不确定安全性。 我相信第二种选择会更好,因为数

  • 我正在尝试将我的弹性搜索(6.6.1)、spring boot(2.1.3)应用程序从Java8迁移到Java11。之前,我使用高级java rest客户端创建和搜索索引。因为存在一个问题(https://github.com/elastic/elasticsearch/issues/38299)在模块化高级rest客户端api时,我试图使用低级rest客户端,但无法获得任何搜索结果。 请看一些代

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 在es中搜索时,如何使用spring的rest模板或elasticsearch自己的高/低rest客户端,我左右为难。与spring rest模板相比,es客户端是否提供了HTTP连接池、性能等方面的任何优势。这两个模板中的哪一个在从服务器获取响应时花费的时间更少。请有人解释一下?