Magic-API操作ES

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可以实现对异构数据源的操作,对数据处理有一定帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值