JAVA集成ElasticSearch、Java集成es

注:ES和Maven引用的版本尽量一致

使用Maven的情况下


     org.elasticsearch.client 
    elasticsearch-rest-high-level-client
    7.12.0



    org.elasticsearch
    elasticsearch
    7.12.0

这两个就够用了

如果没使用Maven项目管理集成Es的话 

https://download.csdn.net/download/gaolengroujiamo/16245088

在上面这个路径去下载集成Jar包去,已经给大家准备好了。

分隔线================================================================================================================================

ElasticSearch准备的基础数据

JAVA集成ElasticSearch、Java集成es_第1张图片

JAVA集成ElasticSearch、Java集成es_第2张图片

 

代码示例

package com.example.demoes.controller;

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

import java.io.IOException;

public class EsApiController {
    public static org.elasticsearch.client.RestHighLevelClient RestHighLevelClient= new RestHighLevelClient(
            RestClient.builder(
            new HttpHost("localhost", 9200, "http"),
                        new HttpHost("localhost", 9201, "http")));//初始化
    private static IndexApi indexApi = new IndexApi();
    private static SelectApi searchApi = new SelectApi();
    public static void main(String[] args) throws IOException {
        //indexApi.CreateIndexApi();//创建索引
        //indexApi.QueryIndexApi();//查询索引是否存在
        //indexApi.GetIndexDocumet("blog","2");
        //searchApi.SearchAll();
        //searchApi.SearchSoleParam("么稳");
        searchApi.SearchMuchParam("这是一段话");
        //searchApi.SearchParam("A350-A-71-00-51-00001-720A-A");
        //searchApi.SearchParam("JCNUMBER");

        EsApiController.close();
    }
    public static void close() throws IOException {
        RestHighLevelClient.close();
    }
}

索引API

package com.example.demoes.controller;

import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.Map;

public class IndexApi {
    private static Logger logger = LoggerFactory.getLogger(IndexApi.class);
    private static RestHighLevelClient restHighLevelClient =EsApiController.RestHighLevelClient;
    /**
     * 创建索引
     */
    public void  CreateIndexApi() throws IOException {
        CreateIndexRequest indexRequest = new CreateIndexRequest("addindex");
        CreateIndexResponse createIndexResponse = restHighLevelClient.indices().create(indexRequest, RequestOptions.DEFAULT);
        logger.info(createIndexResponse.toString());
        System.out.println(createIndexResponse);
    }
    /**
     * 查找索引
     */
    public void  QueryIndexApi() throws IOException {
        GetIndexRequest indexRequest = new GetIndexRequest("addindex");
        boolean createIndexResponse = restHighLevelClient.indices().exists(indexRequest,RequestOptions.DEFAULT);
        logger.info(createIndexResponse+"");
        System.out.println(createIndexResponse);
    }
    /**
     * 查找索引
     */
    public void  GetIndexDocumet(String indexName,String id ) throws IOException {
        GetRequest  indexRequest = new GetRequest(indexName,id);
        indexRequest.fetchSourceContext(FetchSourceContext.DO_NOT_FETCH_SOURCE);
        GetResponse documentFields = restHighLevelClient.get(indexRequest, RequestOptions.DEFAULT);
        System.out.println(documentFields.getSource().toString());

    }
}

简单查询API

package com.example.demoes.controller;

import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryResponse;
import org.elasticsearch.action.get.GetRequest;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.common.unit.Fuzziness;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.List;

public class SelectApi {
    private static Logger logger = LoggerFactory.getLogger(SelectApi.class);
    private static RestHighLevelClient restHighLevelClient =EsApiController.RestHighLevelClient;
    /**
     * 全部查询
     */
    public void  SearchAll() throws IOException {
        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder  searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchAllQuery());
        searchSourceBuilder.size(50);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        for(SearchHit hit : hits){
            String sourceAsString = hit.getSourceAsString();
            if (sourceAsString != null) {
                System.out.println(sourceAsString);
            }
        }
    }

    /**
     * 模糊匹配单独字段查询
     * @param param
     * @throws IOException
     */
    public void  SearchSoleParam(String param) throws IOException {
        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder  searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(QueryBuilders.matchQuery("title",param).fuzziness(Fuzziness.AUTO));//无效
        searchSourceBuilder.query(QueryBuilders.matchQuery("content",param).fuzziness(Fuzziness.AUTO));//无效
        searchSourceBuilder.query(QueryBuilders.matchQuery("jcXmlContent",param).fuzziness(Fuzziness.AUTO));//无效
        searchSourceBuilder.query(QueryBuilders.matchQuery("jcNumber",param).fuzziness(Fuzziness.AUTO));//无效
        searchSourceBuilder.query(QueryBuilders.matchQuery("author",param).fuzziness(Fuzziness.AUTO));//有效
        searchSourceBuilder.size(50);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        for(SearchHit hit : hits){
            String sourceAsString = hit.getSourceAsString();
            if (sourceAsString != null) {
                System.out.println("参数:"+sourceAsString);
            }
        }
    }
    /**
     * 模糊匹配多字段查询
     * @param param
     * @throws IOException
     */
    public void  SearchMuchParam(String param) throws IOException {
        SearchRequest searchRequest = new SearchRequest();
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("title",param));
        boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("content",param));
        boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("jcXmlContent",param));
        boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("jcNumber",param));
        boolQueryBuilder.should(QueryBuilders.matchPhraseQuery("author",param));
        searchSourceBuilder.size(50) ;
        searchSourceBuilder.query(boolQueryBuilder);
        searchRequest.source(searchSourceBuilder);
        SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = search.getHits();
        for(SearchHit hit : hits){
            String sourceAsString = hit.getSourceAsString();
            if (sourceAsString != null) {
                System.out.println("参数:"+sourceAsString);
            }
        }
    }
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
}

查询出来的数据

JAVA集成ElasticSearch、Java集成es_第3张图片

一些复杂的查询可以去ES官网查看一下具体的API

https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/java-rest-high.html

如果对您有帮助的话劳烦您的小手点点赞

你可能感兴趣的:(java,elasticsearch,全文检索)