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

用于弹性搜索的RestClient

拓拔辰钊
2023-03-14

我试图从弹性搜索集群中获取数据。索引名称:testIndex类型:testType主机:localhost端口:8080

我想使用弹性搜索5.4版本,使用RestClient,我想使用多重匹配查询获取数据。

示例查询如下所示。

GET testIndex/testType/_search
{
  "query": {
    "multi_match": {
      "query":"slabs",
      "fields": ["field1","field2"]
    }
  }
}

最好的方法是什么?我是否可以使用QueryBuilder构建查询并将其用于rest客户端

共有2个答案

邹山
2023-03-14
RestClient client = new RestClient(serverhost, port,username, password);
SearchSourceBuilder query = new SearchSourceBuilder();
SearchRequest searchRequest = new SearchRequest(IndexName);
searchRequest.source(query);
SearchResponse searchResponse = restClient.search(IndexName , query);

您应该使用Rest客户端来创建与elasticsearch的连接,对于查询请求和搜索响应,您应该使用SearchSourceBuilder、SearchACK。对于查询,您可以使用弹性搜索的QueryBuilders。

须景辉
2023-03-14

RestClient的QueryBuilder将在版本6发布时可用。将有一个低级和一个高级REST客户端。高级REST客户端将支持QueryBuilder。您已经可以在此处使用它:

具有高级REST客户端的QueryBuilder

在此之前,QueryBuilder不适用于REST客户端,因此在5.4版中,您需要自己构建查询。有很多方法可以做到这一点。

一种方法是使用像jTwig这样的语言模板。Jettro Coenradie在这里解释了一个非常好的示例。

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

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?

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

  • 当我执行ps-aef grep elasticsearch HeapDumpOnOutOfMemoryError时看到了这一点 501 373 47 1 0 2:29pm ttys004 0:04.14/usr/bin/Java-xms4g-xmx4g-xss256k-djava.awt.headless=true-xx:+useparnewgc-xx:+useparnewgc-xx:+usepa

  • 我从ElasticSearch得到以下错误。 我在Ubuntu上运行Elasticsearch 1.7.2。 我做错了什么?

  • 我正在开发JSF项目并将Elastic Search与本机JavaApi(不是Jest)一起使用。我在elasticsearch索引映射中为高级全文搜索定义了分析器和nGram过滤器。如何使用java api进行此查询定义?