gpt4 book ai didi

java - ElasticSearch 查询没有返回好的结果

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:38 24 4
gpt4 key购买 nike

我有数据结构:

{
first_name: Ann,
last_name: Smith
}

我想使用查询搜索记录:

  1. AND:名字 = 安 AND 姓 = 史密斯
  2. 或:名字 = 安 或姓 = 史密斯
  3. 喜欢:名字 = n 和姓氏 = mi
  4. 获取接受查询的总条数记录

我尝试使用 Java 代码进行搜索:

Settings settings = ImmutableSettings.settingsBuilder().put("cluster.name", "elasticsearch").build();
TransportClient transportClient = new TransportClient(settings);
transportClient = transportClient.addTransportAddress(new InetSocketTransportAddress("localhost", 9300));

Client client = transportClient;

SearchRequestBuilder srb1 = client.prepareSearch().setQuery(QueryBuilders.matchQuery("firstName", firstName));
SearchRequestBuilder srb2 = client.prepareSearch().setQuery(QueryBuilders.matchQuery("lastName", lastName));

MultiSearchResponse query = client.prepareMultiSearch()
.add(srb1)
.add(srb2)
.execute().actionGet();

for (MultiSearchResponse.Item item : query.getResponses()) {
SearchResponse response = item.getResponse();
System.out.println(response);
}
transportClient.close();
client.close();

但是我没有得到好的结果。而且 ElasticSearch Java API 文档非常少。

最佳答案

我认为你需要这个:

SearchRequestBuilder srb1 = client.prepareSearch().setQuery(QueryBuilders
.boolQuery()
.must(QueryBuilders.termQuery("first_name", "Ann"))
.must(QueryBuilders.termQuery("last_name", "Smith")));

以上查询将为您提供 first_name = Ann AND last_name = Smith 的结果

SearchRequestBuilder srb2 = client.prepareSearch().setQuery(QueryBuilders
.boolQuery()
.should(QueryBuilders.termQuery("first_name", "Ann"))
.should(QueryBuilders.termQuery("last_name", "Smith")));

以上查询将为您提供first_name = Ann OR last_name = Smith的结果

SearchRequestBuilder srb3 = client.prepareSearch().setQuery(QueryBuilders
.boolQuery()
.must(QueryBuilders.wildcardQuery("first_name", "n*"))
.must(QueryBuilders.wildcardQuery("last_name", "mi*")));

以上查询将为您提供“以 n 开头的名字和以 mi 开头的姓氏”的结果

顺便说一句,prepareMultiSearch 仅用于使用单个请求向 ES 发送多个搜索请求(较少的通信开销)。

请看一下:http://search-lucene.com/ 。您可以找到大量有关 Elasticsearch、Lucene、Solr 及相关项目的有用信息。

关于java - ElasticSearch 查询没有返回好的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27353842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com