Elasticsearch 的基本添加方法

本文介绍了一个使用Elasticsearch RestHighLevelClient进行基本CRUD操作的例子,包括如何添加、查询文档,并展示了如何利用Java代码实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import com.alibaba.fastjson.JSONObject;
import com.sun.xml.internal.bind.v2.TODO;

import java.io.IOException;
import java.time.LocalDateTime;
import java.util.*;


import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.get.GetResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContent;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.common.xcontent.json.JsonXContent;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.IdsQueryBuilder;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.script.Script;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.FieldSortBuilder;
import org.elasticsearch.search.sort.SortBuilders;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.work.util.PageUtil;

import redis.RedisUtil;

@Controller
@RequestMapping(value = "base/BaseLog")
public class BaseLogController {

	@Autowired
	private RestHighLevelClient rhlClient;

	@Autowired
	private RedisUtil redisUtil;

/**
     *
     * @Description: TODO  elasticSearch的基本添加方法
     * @param
     * @return
     * @throws
     * @author pengbin
     * 2018/2/27 16:14
     */
    @RequestMapping(value = "TestEsAdd", method = RequestMethod.POST)
    public void TestEsAdd() {
        System.out.println("ok");
        IndexRequest indexRequest = new IndexRequest("my_project", "doc");
        JSONObject json = new JSONObject();
        json.put("className","test01");
        json.put("doMethod","test02");
        json.put("level","info");
        json.put("@timestamp", LocalDateTime.now());
        String source = json.toString();
        indexRequest.source(source, XContentType.JSON);
        try {
            rhlClient.index(indexRequest);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




        //查询证明有数据了
        QueryBuilder queryBuilder = QueryBuilders.termQuery("className","test01");
        SearchRequest searchRequest = new SearchRequest("my_project*");
        searchRequest.types("doc");

        SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
        sourceBuilder.query(queryBuilder);
        searchRequest.source(sourceBuilder);

        try {
            SearchResponse response = rhlClient.search(searchRequest);
            SearchHits searchHits=response.getHits();
            SearchHit[] searchHitList=searchHits.getHits();
            //查询的数据查看只有在循环获取的getSourceAsMap后才能在debug中看到(不知道为什么),因此获取看下结构
            for (SearchHit fields : searchHitList) {
                Map<String,Object> map = fields.getSourceAsMap();
                //获取id
                System.out.println(fields.getId());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

其他参考资料:

ElasticSearch RestHighLevelClient 教程(一)通用操作

http://blog.csdn.net/paditang/article/details/78802799

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值