Es-settings创建
private TransportClient client;
@Bean
public Client init() {
// 设置集群的名字
Settings settings = Settings.builder().put("client.transport.sniff", false).put("cluster.name", clusterName)
.build();
// 创建集群client并添加集群节点地址
client = new PreBuiltTransportClient(settings);
try {
client.addTransportAddress(
new InetSocketTransportAddress(InetAddress.getByName(clusterIp), clusterPort));
} catch (UnknownHostException e) {
logger.error(e.getMessage());
}
return client;
}
//
使用client 直接注入client ;创建索引、添加数据
@Autowired
private Client client;
IndicesAdminClient c = client.admin().indices();
c.prepareExists(index).get().isExists() //是否存在index名称的索引
c.typesExists(new TypesExistsRequest(new String[] { index },type)).actionGet().isExists(); //是否存在index索引下的type类型
//这里如果不先判断所引的存在 会报 no index such 异常信息
//如果不存在 可以创建
c.prepareCreate(index).execute().actionGet();
//也可以直接创建并添加数据
// index-索引;type-类型;id -数据主键 o为map类型的key-value 数据
c.prepareIndex(index, type,id).setSource(o).execute().actionGet();
es中索引及数据的删除操作
// 删除指定type(tabName) 下的所有数据
DeleteByQueryRequestBuilder rr=DeleteByQueryAction.INSTANCE.newRequestBuilder(client);
BulkByScrollResponse rps= rr.filter(QueryBuilders.typeQuery(tabName)).source(systemName).get();
// 如要删除指定id 将filter 条件换为 .filter(QueryBuilders.termsQuery("_id", idss));
// 该处需要注意的是删除指定type下的ids集合数据 暂时没有提供具体的api;或许个人并没有发现
//需特殊处理::: 循环赋值id并执行
DeleteRequestBuilder db= client.prepareDelete();
db.setIndex(systemName).setType(col);
db.setId(tabName+"d").get();db.setId(tabName+"e").get();
// 删除索引下的所有数据 需将条件替换为
.filter(QueryBuilders.matechall...);//可以试试
//删除索引
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(index);
ActionFuture<DeleteIndexResponse> response =
client.admin().indices().delete(deleteIndexRequest);
//或者直接:
client.admin().indices().prepareDelete(systemName).get()
es 查询
// col 列名称; ids 集合主键
QueryBuilder qb = QueryBuilders.termsQuery(col, ids);
//设置查询index、type
SearchRequestBuilder requestBuilder = client.prepareSearch(systemName).setTypes(tabName).setSearchType(SearchType.DFS_QUERY_THEN_FETCH);
//设置查询条件qb 并执行
requestBuilder.setQuery(qb).get();
es 数据的批量增加、更新操作
// 创建批量提交; 单次增加json格式数据并提交
BulkRequestBuilder bulkRequest = client.prepareBulk();
bulkRequest.add(client.prepareIndex(index, type, id).setSource(json)).get();
统计字段出现次数:
{
"query": {
"wildcard": {
"name.keyword": "*不等边角钢*"
}
},
"aggs": {
"data": {
"terms": {
"field": "name.keyword"
}
}
}
}