学习ElasticSearch:java控制es

1、导入maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.es</groupId>
    <artifactId>es-first</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.6.8</version>
        </dependency>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.6.8</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-to-slf4j</artifactId>
            <version>2.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.24</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.21</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>

2、创建索引库

public class ElasticSearchTest {

    @Test
    public void createIndex() throws Exception {
        //1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
        Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
        //2、创建一个客户端Client对象
        TransportClient client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
        //3、使用Client对象创建一个索引库
        client.admin().indices().prepareCreate("index-blog").get();
        //4、关闭客户端
        client.close();
    }
}

在这里插入图片描述

2、设置mapping

@Test
    public void setMappings() throws Exception {
        //1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
        Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
        //2、创建一个客户端Client对象
        TransportClient client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
        //3、创建一个mappings的信息
        XContentBuilder builder = XContentFactory.jsonBuilder()
                .startObject()
                    .startObject("article")
                        .startObject("properties")
                            .startObject("id")
                                .field("type","long")
                                .field("store","true")
                            .endObject()
                            .startObject("title")
                                .field("type","text")
                                .field("store","true")
                                .field("analyzer","ik_smart")
                            .endObject()
                            .startObject("content")
                                .field("type","text")
                                .field("store","true")
                                .field("analyzer","ik_smart")
                            .endObject()
                        .endObject()
                    .endObject()
                .endObject();
        //4、使用客户端将mapping信息设置到索引库中
        client.admin().indices().preparePutMapping("index-blog").setType("article").setSource(builder).get();
        client.close();
    }

在这里插入图片描述

3、添加文档(1)

@Test
public void addDocument() throws IOException {
  	//1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
    Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
    //2、创建一个客户端Client对象
    TransportClient client = new PreBuiltTransportClient(settings);
    client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
    XContentBuilder builder = XContentFactory.jsonBuilder()
            .startObject()
                .field("id","1")
                .field("title","哈哈哈")
                .field("content","heiheihei")
            .endObject();
    //把文档添加到索引库中
    client.prepareIndex().setIndex("index-blog").setType("article").setId("1").setSource(builder).get();
    client.close();
}

在这里插入图片描述

4、查询

在这里插入图片描述

根据id查询
   /**
     * 根据id进行查询
     */
    @Test
   public void searchById() throws UnknownHostException {
       //1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
       Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
       //2、创建一个客户端Client对象
       TransportClient client = new PreBuiltTransportClient(settings);
       client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
       //3、创建一个查询对象
       QueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1","2");
       //4、执行查询
       SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
       //5、取查询的结果集
       SearchHits hits = response.getHits();
       //6、取查询总记录条数
       System.out.println("记录条数:"+hits.getTotalHits());
       //7、查询结果列表
       SearchHit[] searchHits = hits.getHits();
       for(int i = 0;i < searchHits.length;i++){
           System.out.println("json => {}"+searchHits[i].getSourceAsString());
           Map<String,Object> document = searchHits[i].getSource();
           System.out.println(document.get("id"));
           System.out.println(document.get("title"));
           System.out.println(document.get("content"));
       }
       client.close();
    }

在这里插入图片描述

根据term查询
/**
     * 根据term查询
     */
 @Test
 public void searchByTerm() throws UnknownHostException {
     //1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
     Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
     //2、创建一个客户端Client对象
     TransportClient client = new PreBuiltTransportClient(settings);
     client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
     //3、创建一个查询对象
     QueryBuilder queryBuilder = QueryBuilders.termQuery("content","么");
     //4、执行查询
     SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
     //5、取查询的结果集
     SearchHits hits = response.getHits();
     //6、取查询总记录条数
     System.out.println("记录条数:"+hits.getTotalHits());
     //7、查询结果列表
     SearchHit[] searchHits = hits.getHits();
     for(int i = 0;i < searchHits.length;i++){
         System.out.println("json => {}"+searchHits[i].getSourceAsString());
         Map<String,Object> document = searchHits[i].getSource();
         System.out.println(document.get("id"));
         System.out.println(document.get("title"));
         System.out.println(document.get("content"));
     }
     client.close();
 }

在这里插入图片描述

根据queryString查询
/**
     * 根据queryString查询
     */
    @Test
    public void searchByString() throws UnknownHostException {
        //1、创建一个settings对象,相当于是一个配置信息,主要配置集群的名称
        Settings settings = Settings.builder().put("cluster.name","my-elasticsearch").build();
        //2、创建一个客户端Client对象
        TransportClient client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"),9301));
        //3、创建一个查询对象
        QueryBuilder queryBuilder = QueryBuilders.queryStringQuery("么么哒")
                .defaultField("content");
        //4、执行查询
        SearchResponse response = client.prepareSearch("index-blog").setTypes("article").setQuery(queryBuilder).get();
        //5、取查询的结果集
        SearchHits hits = response.getHits();
        //6、取查询总记录条数
        System.out.println("记录条数:"+hits.getTotalHits());
        //7、查询结果列表
        SearchHit[] searchHits = hits.getHits();
        for(int i = 0;i < searchHits.length;i++){
            System.out.println("json => {}"+searchHits[i].getSourceAsString());
            Map<String,Object> document = searchHits[i].getSource();
            System.out.println(document.get("id"));
            System.out.println(document.get("title"));
            System.out.println(document.get("content"));
        }
        client.close();
    }

在这里插入图片描述

5、设置分页信息

  • 修改这个位置即可
//4、执行查询
 SearchResponse response = client.prepareSearch("index-blog")
          .setTypes("article")
          .setQuery(queryBuilder)
          .setFrom(0)
          .setSize(20)
          .get();
发布了134 篇原创文章 · 获赞 91 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_44588495/article/details/103267507