ElasticSearch 基础查询(分页查询、排序、数据过滤列、条件查询、高亮显示)

xiaoxiao2025-07-06  7

ElasticSearch 基础查询(分页查询、排序、数据过滤列、条件查询、高亮显示)

ElasticSearch Demo:

package org.ssgroup; import java.io.IOException; import java.net.InetAddress; import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.client.transport.TransportClient; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.transport.TransportAddress; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.transport.client.PreBuiltTransportClient; public class ElasticSearchQuery { private static String ES_HOST1 = "192.168.10.252"; private static String ES_HOST2 = "192.168.10.254"; private static String ES_HOST3 = "192.168.10.255"; private static int ES_PORT = 9300; public static void main(String[] args) throws IOException { Settings settings = Settings.builder() .put("cluster.name", "my-application").build(); TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName(ES_HOST1), ES_PORT)) .addTransportAddress(new TransportAddress(InetAddress.getByName(ES_HOST2), ES_PORT)) .addTransportAddress(new TransportAddress(InetAddress.getByName(ES_HOST3), ES_PORT)); //查询所有数据 //searchAll(client); //分页查询 //searchPage(client); //排序查询 //searchSort(client); //数据过滤(展示某些列) //searchInclude(client); //单个条件查询 //searchByCondition(client); //高亮字段 searchHighLight(client); client.close(); } /** * 查询所有 * @param client */ public static void searchAll(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); SearchResponse response = builder.setQuery(QueryBuilders.matchAllQuery()).execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); } } /** * 分页查询 * @param client */ public static void searchPage(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); SearchResponse response = builder.setQuery(QueryBuilders.matchAllQuery()) .setFrom(0).setSize(2) .execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); } } /** * 排序查询 * @param client */ public static void searchSort(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); SearchResponse response = builder.setQuery(QueryBuilders.matchAllQuery()) .addSort("publishDate",SortOrder.DESC) .execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); } } /** * 数据列过滤 * @param client */ public static void searchInclude(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); SearchResponse response = builder.setQuery(QueryBuilders.matchAllQuery()) .setFetchSource(new String[] {"title","price"}, null) .execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); } } /** * 条件查询 * @param client */ public static void searchByCondition(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); SearchResponse response = builder.setQuery(QueryBuilders.matchQuery("title", "战")) .setFetchSource(new String[] {"title","price"}, null) .execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); } } /** * 高亮查询 * @param client */ public static void searchHighLight(TransportClient client) { SearchRequestBuilder builder = client.prepareSearch("film").setTypes("dongzuo"); HighlightBuilder highlightBuilder = new HighlightBuilder(); highlightBuilder.preTags("<h2>"); highlightBuilder.postTags("</h2>"); highlightBuilder.field("title"); SearchResponse response = builder.setQuery(QueryBuilders.matchQuery("title", "战")) .highlighter(highlightBuilder) .setFetchSource(new String[] {"title","price"}, null) .execute().actionGet(); SearchHits searchHits = response.getHits(); for(SearchHit searchHit : searchHits.getHits()) { System.out.println(searchHit.getSourceAsString()); System.out.println("高亮字段:"+searchHit.getHighlightFields()); } } }

 

转载请注明原文地址: https://www.6miu.com/read-5032650.html

最新回复(0)