1.准备工作
pom.xml中添加
<dependency>
<groupId>org.ssssssss</groupId>
<artifactId>magic-api-plugin-elasticsearch</artifactId>
<version>2.1.1</version>
</dependency>
配置文件application.yml中添加ES相关的配置
# 配置ElasticSearch
elasticsearch:
rest:
uris: http://ip:port
username:
password:
进行打包发布
2.操作ES
操作方法
import elasticsearch; //导入redis模块
// 根据_id保存,当存在时更新,不存在时插入
elasticsearch.index('index名称').save(_id, data);
// 不指定_id插入
elasticsearch.index('index名称').insert(data);
// 指定_id插入,当_id存在时不会更新
elasticsearch.index('index名称').insert(_id, data);
// 根据_id删除
elasticsearch.index('index名称').delete(_id);
// 批量保存,当包含id时,则使用该列值匹配保存
elasticsearch.index('index名称').bulkSave(list);
// 根据_id修改
elasticsearch.index('index名称').delete(_id, data);
// 根据`DSL`语句搜索
elasticsearch.index('index名称').search(dsl);
elasticsearch.rest('url')
.parameter(key, value) // 添加请求参数
.parameters(map) // 批量添加参数
.put(data) // 执行put方法
.delete() // 执行delete方法,不带请求体
.delete(data) // 执行delete方法,带请求体
.post(data) // 执行post方法,带请求体
.get() // 执行get方法
2.1查询
import elasticsearch;
var dsl = {
"query": {
"match": {
"unionOrgId": 2988
}
}
}
var data = elasticsearch.index('union_member').search(dsl);
return data;
dsl的语法情况参考官方文档
2.2更新
import elasticsearch;
import log
var d = {
"doc":{
"deleted":1
}
}
// //elasticsearch.index('sz_es_prd').type("union_member").update("27639870", d);
return elasticsearch.rest('/sz_es_test/union_member/10029/_update')
.post(d)
3.实践
通过自增ID遍历ES中存在ID,并且保存在Mysql中
import elasticsearch;
import log
for(i in range(0,10)){
log.info("start={}, end={}",50*i,50*(i+1))
var dsl = {
"from": 0,
"size":50,
"query": {
"bool":{
"must":[
{
"match": {
"deleted": "0"
}
},
{
"range":{
"id":{ "gte":50*i,"lt":50*(i+1)}
}
}
]
}
}
}
var data = elasticsearch.index('sz_es_test').search(dsl);
var insertSql = "insert into dw.tmp_member_es_1228 values "
if(data.hits.hits.size()>0){
data.hits.hits.each(item=>{
insertSql +="("+item._source.id+"),"
})
insertSql = insertSql.substring(0,insertSql.length()-1)
//log.info(insertSql)
db.union.update(insertSql)
}
}
return true;
4.总结
Magic-API可以实现对异构数据源的操作,对数据处理有一定帮助。