目前用es5.3,较es2.0有很大差别,对用法记录一下。
Spingboot 只集成了es2.0的版本,没有集成5.0以上的,所以只能自己设置esClient,esClient设置有两种方式,用常用的
@Configuration
public class EsClientConfig {
@Value("${esclient.host}")
private String host;
@Value("${esclient.clusterName}")
private String clusterName;
@Value("${esclient.port}")
private int port;
@Bean(name = "esClient")
public TransportClient esClient() {
Settings settings = Settings.builder()
.put("cluster.name", clusterName)
.put("client.transport.sniff", true).build();
//5.x 添加了自动嗅探功能,添加一个ip就行。
TransportClient client = new PreBuiltTransportClient(settings);
try {
client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host), port));
} catch (UnknownHostException e) {
e.printStackTrace();
}
return client;
}
}
1、es查询demo
根据es查询,es2.0版本用在setType后面有setFields 设置返回字段,此处修改为setFetchSource()
@Service
public class EsService {
@Autowired
private TransportClient esClient;
public List<Map<String, Object>> getEsResultByFields(String index, String type, int size, String fields){
// IdsQueryBuilder qb = QueryBuilders.idsQuery();
// 设置id qb.addIds(id);
// MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery("",fields);
// SearchResponse resp = esClient.prepareSearch("ent_index").setTypes("ENT_INDEX").setSize(size).execute().actionGet();
// List<Map<String, Object>> data = new ArrayList<>();
// for (SearchHit hit : resp.getHits()) {
// Map<String, Object> map = hit.getSource();
// data.add(map);
// }
SearchResponse resp = esClient.prepareSearch(index).setTypes(type).setFetchSource(fields.split(","), null).setSize(size).execute().actionGet();
List<Map<String, Object>> data = new ArrayList<>();
for (SearchHit hit : resp.getHits()) {
data.add(hit.getSource());
}
return data;
}
}
2、es聚合demo
http://blog.csdn.net/napoay/article/details/53484730