对不起,我之前给出的代码示例使用了过时的 QueryBuilders.termQuery
方法。在 Elasticsearch 8 中,可以使用 QueryBuilder.matchQuery
或者 QueryBuilder.termQuery
方法来实现精确搜索。
以下是一个使用 Elasticsearch 8 Java API 实现精确搜索字段的示例:
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http"))
);
String fieldName = "your_field_name";
String searchValue = "your_search_value";
QueryBuilder termQuery = QueryBuilders.matchQuery(fieldName, searchValue).fuzziness(Fuzziness.ZERO);
SearchRequest searchRequest = new SearchRequest("your_index_name");
searchRequest.source().query(termQuery);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
client.close();
请注意替换示例代码中的 your_field_name
、your_search_value
和 your_index_name
分别为实际的字段名、搜索值和索引名。
希望这次能够满足你的需求!如果还有其他问题,请随时提问。
内容由零声教学AI助手提供,问题来源于学员提问