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