例如,
日期: 2014-09-11至2014-09-12
Template: http://192.168.0.1:9200/{repeat:(prefix, dayslot, suffix)}/_search
调用方式:
var urlcomplie = new shyl.view.esreport.ux.EsUrlCompiler(url),
url = urlcomplie.getValue(options);//options = {dayslot: [20140911, 20140912]} 日期需要处理好
结果 url= http://192.168.0.1:9200/prefix20140911suffix,prefix20140912suffix, /_search
/**
* url 模板编译类, 基于ES RESTFul定制数据源时, 它的URL配置往往是需要支持动态生成的,
* 所以该类主要用来处理URL的模板部分例如:
* http://host:port/{指令名称:(参数值)}/{指令名称:(参数值)}。
* 基于这样的设计,你可以定义自己想要的格式。
*
* @author wang xiu fu
*/
Ext.define('shyl.view.esreport.ux.EsUrlCompiler', {
requires: [],
/**
* 匹配模板表达式
*/
re: /\{([\w]+)(?:\:)\(([\w,]+)?\)\}/g,
url: null,
complied: Ext.emptyFn,
commands: {
repeat: true
},
isUrlCompiler: true,
constructor: function(url, options) {
options = options || {};
Ext.apply(this, options);
this.complie(url);
},
complie: function(url) {
var me=this,
bodyReturn,
body;
function fn (m, command, params) {
if (!me.commands[command]) {
Ext.Error.raise('url模板中的"+command+"不存在');
}
params = params || '';
var params = params.split(','),
len = params.length,
prefix = '',
suffix = '',
array = '',
i;
switch(len) {
case 1:
array = "this['" + params[0] + "']";
break;
case 2:
prefix = "'" + params[0] + "',";
array = "this['" + params[1] + "']";
break;
case 3:
prefix = "'" + params[0] + "'";
array = "this['" + params[1] + "']";
suffix = ",'" + params[0] + "'";
break;
}
return "' + this." + command + "(" + prefix + array + suffix +") + '";
}
bodyReturn = "'" + url.replace(me.re, fn) + "'";
body = "this.complied = function() { return " + bodyReturn + "; }";
eval(body);
return me;
},
getValue: function(options) {
options = options || {};
if (Ext.isFunction(options)) {
options = options();
}
Ext.apply(this, options);
return this.complied();
},
//---------------------------------command-----------------------------------------------
/**
* 重复指令,该参数有个参数
*
*/
repeat: function(prefix, array, suffix) {
var me=this,
prefix = prefix || "",
suffix = suffix || "",
array = array || [],
i;
if (!array || !array.length || array.length === 0) {
throw new Error('url模板包含错误的参数');
}
for (i in array) {
array[i] = prefix + array[i] + suffix;
}
return array.join(',');
}
//其他其他指令可以在此扩展
});
分享到:
相关推荐
赠送jar包:elasticsearch-rest-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elastic...
资源方法有单个的增删改查,模糊查询分页 ,固定字段的模糊查询,所有属性字段的模糊查询
赠送jar包:elasticsearch-rest-high-level-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-high-level-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-high-level-client-6.8.3-sources.jar;...
赠送jar包:elasticsearch-rest-high-level-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-high-level-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-high-level-client-6.8.3-sources.jar;...
赠送jar包:elasticsearch-rest-client-6.3.0.jar; 赠送原API文档:elasticsearch-rest-client-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.3.0-sources.jar; 赠送Maven依赖信息文件:elastic...
改类封装elasticsearch5.x以rest风格操作的索引的部分api。类中有详细的注释,可供参考学习。希望能帮到有需要的同学。
Mybatis的Mapper方式整合elasticsearch的DSL调用,之前的AOP进行了改进,使用cglib动态代理生成代理类,基于接口和代理生成bean注入的方式进行调用
赠送jar包:elasticsearch-rest-client-6.3.0.jar; 赠送原API文档:elasticsearch-rest-client-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.3.0-sources.jar; 赠送Maven依赖信息文件:elastic...
基于ElasticSearch7.3.2、RestHighLevelClient、SpringBoot搭建的通用搜索系统脚手架,帮助开发者快速搭建搜索系统 简介 基于ElasticSearch7.3.2版本的通用搜索系统 使用rest-high-level-client操作ES 封装常用api...
Spring Boot elasticsearch7.6.2基础操作:创建索引、新增数据、查询数据
es索引模板
lasticsearch整合分词、创建索引、搜索例子,elasticsearch版本为1.0,索引数据从数据表中动态读取生成,有关键字高亮效果,查询分页 1 在dababase目录中导致相关的数据库文件,修改DBCOperation java文件数据库连接...
赠送jar包:elasticsearch-rest-client-6.2.3.jar; 赠送原API文档:elasticsearch-rest-client-6.2.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.2.3-sources.jar; 赠送Maven依赖信息文件:elastic...
maven项目编写的一个elasticsearch rest方式进行增删改查的api工具类含测试代码,rest方式仅需10多个jar即可实现,比elasticsearch client可以少引用数十个jar,有兴趣的可以看看
赠送jar包:elasticsearch-rest-client-6.8.3.jar; 赠送原API文档:elasticsearch-rest-client-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.8.3-sources.jar; 赠送Maven依赖信息文件:elastic...
EsREST 有许多优点: 由于方法链,EsREST API 非常直观(参见下面的示例) EsREST 不依赖于 Elasticsearch jar EsREST 将清楚地指示请求是成功还是失败不过也有一些缺点: 这个项目很新,正在积极开发中现在只实现...
基于Koa2 Elasticsearch5.0 的Rest Api
赠送jar包:elasticsearch-rest-client-6.2.3.jar; 赠送原API文档:elasticsearch-rest-client-6.2.3-javadoc.jar; 赠送源代码:elasticsearch-rest-client-6.2.3-sources.jar; 赠送Maven依赖信息文件:elastic...
基于ElasticSearch的搜房网实战一、核心技术1.ElasticSearch+MySQL+Kafka实现站内搜索引擎2.ElasticSearch+百度
java运行依赖jar包