elasticsearch java api 的增删改查

上一篇写了es在springboot中的实现,今天在maven中实现一下

首先是建立maven工程,然后在pom.xml中添加es,log4j,junit依赖:

    <dependencies>
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>6.2.4</version>
        </dependency>

        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.7</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

 

在junit测试类下:

首先先配置java和es的连接:

    private Logger logger = LoggerFactory.getLogger(service1.class);

    public final static String HOST = "127.0.0.1";

    public final static int PORT = 9300; //http请求的端口是9200,客户端是9300

    private TransportClient client = null;

    /**
     * 获取客户端连接信息
     */
    @Before
    public void getConnect() throws UnknownHostException {

        TransportAddress node = new TransportAddress(
                InetAddress.getByName(HOST),
                PORT);

        Settings settings = Settings.builder()
                .put("cluster.name", "astronaut's cluster")
                .build();

        client = new PreBuiltTransportClient(settings);
        client.addTransportAddress(node);

        logger.info("连接信息:" + client.toString());
    }

    /**
     * 关闭连接
     */
    @After
    public void closeConnect() {
        if (null != client) {
            logger.info("执行关闭连接操作...");
            client.close();
        }
    }

从es中获取数据:


    /**
     * 从索引库获取数据
     */
    @Test
    public void getData() {
        GetResponse result = client.prepareGet("people", "man", "1").get();
        logger.info("索引库的数据:" + result.getSourceAsString());
        System.out.println("索引库的数据:" + result.getSourceAsString());
    }

向es中添加数据:

    /**
     * 向索引库中添加数据
     */ 
   @Test
    public void add() {
        try {
            XContentBuilder content = XContentFactory.jsonBuilder()
                    .startObject()
                    .field("name", "test astronaut1")
                    .field("country", "test China")
                    .field("age", 15)
                    .field("date", "2003-03-20")
                    .endObject();

            IndexResponse result = this.client.prepareIndex("people", "man")
                    .setSource(content)
                    .get();
//            logger.info("jsonObject索引名称:" + result.getIndex() + "\n jsonObject类型:" + result.getType()
//                    + "\n jsonObject文档ID:" + result.getId() + "\n当前实例jsonObject状态:" + result.status());
            System.out.println("jsonObject索引名称:" + result.getIndex()
                    + "\n jsonObject类型:" + result.getType()
                    + "\n jsonObject文档ID:" + result.getId()
                    + "\n当前实例jsonObject状态:" + result.status());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

删除:

    @Test
    public void delete() {
        DeleteResponse result = this.client.prepareDelete("people", "man", "9Ty_O2gBXmM2FcMyOqHD").get();
    }

更新es中的数据:

    @Test
    public void update() {
        UpdateRequest update = new UpdateRequest("people", "man", "9jzAO2gBXmM2FcMyBKFb");

        try {
            XContentBuilder builder = XContentFactory.jsonBuilder().startObject()
                    .field("name", "test_update_astronaut")
                    .field("country", "test_update_China")
                    .field("age", 16)
                    .field("date", "2004-03-20")
                    .endObject();
            update.doc(builder);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            UpdateResponse result = this.client.update(update).get();
            System.out.println("result索引名称:" + result.getIndex()
                    + "\n result类型:" + result.getType()
                    + "\n result文档ID:" + result.getId()
                    + "\n当前实例result状态:" + result.status());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

查询:

    @Test
    public void query() {

        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

        boolQuery.must(QueryBuilders.matchQuery("name", "astronaut"));
//        boolQuery.must(QueryBuilders.matchQuery("country", "China"));

//        RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("age").from(10).to(20);

//        boolQuery.filter(rangeQuery);

        SearchRequestBuilder builder = this.client.prepareSearch("people")
                .setTypes("man")
                .setQuery(boolQuery)
                .setFrom(0)
                .setSize(10);

        //System.out.println(builder);

        SearchResponse response = builder.get();
        List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();

        for(SearchHit hit : response.getHits()){
            result.add(hit.getSourceAsMap());
        }

        for(Map<String, Object> map : result){
            for(String key:map.keySet()){
                System.out.println(map.get(key));
            }
        }

    }

 

参考:http://www.sunny58.top/blog/articles/103.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值