ElasticSearch JAVA 应用

创建maven工程

pom.xml 中加入 Elasticsearch 的依赖:

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch.client</groupId>
      <artifactId>transport</artifactId>
      <version>6.4.1</version>
    </dependency>
    <dependency>
      <groupId>org.elasticsearch</groupId>
      <artifactId>elasticsearch</artifactId>
      <version>6.4.1</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.46</version>
    </dependency>

创建ES连接测试

在敲代码过程中有红色下划线需要使用Alt+Enter,抛出异常。

查询

package big_data;

public class ESdemo {

    public final static String HOST = "192.168.108.126";
    public final static int PORT = 9300;
    //从ES中进行查询
    @Test
    public void test1() throws UnknownHostException {
        //指定ES集群,名称在elasticsearch.yml中查看
        Settings settings = Settings.builder().put("cluster.name","my-application").build();

        //创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                                 .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        //数据查询
        GetResponse response = client.prepareGet("postgres_test","doc","1").execute().actionGet();

        //得到查询结果
        System.out.println(response.getSourceAsString());

        //关闭查询
        client.close();
    }
}

添加文档

    @Test
    public void test_add() throws IOException {
        //指定ES集群,名称在elasticsearch.yml中查看
        Settings settings = Settings.builder().put("cluster.name","my-application").build();

        //创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                                 .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        //添加文档
        XContentBuilder doc = XContentFactory.jsonBuilder()
                              .startObject()
                              .field("id","1")
                              .field("title","Java设计原理")
                              .endObject();
        IndexResponse response = client.prepareIndex("index1","blog","1")
                                 .setSource(doc).get();
        System.out.println(response.status());
    }

删除文档

    @Test
    public void test_delete() throws UnknownHostException {
        //指定ES集群,名称在elasticsearch.yml中查看
        Settings settings = Settings.builder().put("cluster.name","my-application").build();

        //创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        //删除文档
        DeleteResponse response = client.prepareDelete("index1","blog","1").get();

        System.out.println(response.status());
    }

range查询

    @Test
    public void test_range() throws UnknownHostException {
        //指定ES集群,名称在elasticsearch.yml中查看
        Settings settings = Settings.builder().put("cluster.name","my-application").build();

        //创建访问ES服务器的客户端
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        //range查询
        QueryBuilder build = QueryBuilders.rangeQuery("birthday")
                             .from("1990-01-01")
                             .to("2010-11-01")
                             .format("YYYY-MM-DD");

        SearchResponse response = client.prepareSearch("lib3")
                                    .setQuery(build)
                                    .get();

        SearchHits hits = response.getHits();

        for(SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }
    }

term查询

    @Test
    public void test_term() throws UnknownHostException {

        //构建Transport Client
        Settings settings = Settings.builder().put("cluster.name","my-application").build();
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        QueryBuilder build = QueryBuilders.termQuery("title","设");

        SearchResponse response = client.prepareSearch("index1")
                                    .setQuery(build)
                                    .get();

        SearchHits hits = response.getHits();
        for (SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }
    }

terms查询

    @Test
    public void test_terms() throws UnknownHostException {
        //构建Transport Client
        Settings settings = Settings.builder().put("cluster.name","my-application").build();
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        QueryBuilder build = QueryBuilders.termsQuery("title","设","原");

        SearchResponse response = client.prepareSearch("index1")
                                        .setQuery(build)
                                        .get();

        SearchHits hits = response.getHits();
        for (SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }
    }

各类查询

    @Test
    public void query_test() throws UnknownHostException {
        Settings settings = Settings.builder().put("cluster.name","my-application").build();
        TransportClient client = new PreBuiltTransportClient(settings)
                .addTransportAddress(new TransportAddress(InetAddress.getByName(HOST),PORT));

        //prefix查询,前缀查询
        //QueryBuilder build = QueryBuilders.prefixQuery("bumen","数");

        //wildcard查询,宽查询
        //QueryBuilder build = QueryBuilders.wildcardQuery("bumen","数*");

        //fuzzy查询,模糊查询
        //QueryBuilder build = QueryBuilders.fuzzyQuery("xingming","张");

        //type查询
        //QueryBuilder build = QueryBuilders.typeQuery("logs");

        //ids查询
        QueryBuilder build = QueryBuilders.idsQuery("2","5");

        //结果展示
        SearchResponse response = client.prepareSearch("omega2").setQuery(build).get();
        SearchHits hits = response.getHits();
        for (SearchHit hit:hits){
            System.out.println(hit.getSourceAsString());
        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_43315211/article/details/85636513