例如,
日期: 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(',');
}
//其他其他指令可以在此扩展
});
分享到:
相关推荐
在本文中,我们将深入探讨如何在Spring Boot应用中动态地操作Elasticsearch组件。Elasticsearch是一个开源的、分布式搜索引擎,常用于大数据分析和实时搜索。Spring Boot与Elasticsearch的集成使得在Java环境中处理 ...
赠送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;...
而Elasticsearch(ES)则是一款强大的全文搜索引擎,常用于大数据分析和实时搜索。本篇文章将详细介绍如何将Mybatis的Mapper方式与Elasticsearch的DSL(Domain Specific Language)查询相结合,以及如何通过CGlib...
赠送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...
赠送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...
基于ElasticSearch7.3.2、RestHighLevelClient、SpringBoot搭建的通用搜索系统脚手架,帮助开发者快速搭建搜索系统 简介 基于ElasticSearch7.3.2版本的通用搜索系统 使用rest-high-level-client操作ES 封装常用api...
在本文中,我们将深入探讨如何使用Spring Boot与Elasticsearch 7.6.2进行基本操作,包括创建索引、添加数据以及查询数据。Elasticsearch是一个强大的分布式搜索引擎,而Spring Boot是Java开发中的轻量级框架,两者...
maven项目编写的一个elasticsearch rest方式进行增删改查的api工具类含测试代码,rest方式仅需10多个jar即可实现,比elasticsearch client可以少引用数十个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。类中有详细的注释,可供参考学习。希望能帮到有需要的同学。
在IT行业中,日志管理是系统维护和故障排查的关键环节,而Elasticsearch(简称ES)作为一款强大的全文搜索引擎,常被用来存储和分析大量日志数据。然而,随着日积月累,这些数据可能会变得非常庞大,如果不进行有效...
es索引模板
elasticsearch 同义词创建索引实例
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...
而标题中提到的"一款基于Java注解的elasticsearch mapping生成工具",正是针对这一需求,为开发者提供了一种简洁且高效的方式来创建和管理ES的映射。 **Java注解与Elasticsearch Mapping** Java注解是一种元数据,...
标题《基于ElasticSearch的分布式全文搜索系统》的文件是一篇关于构建和实现基于ElasticSearch技术的分布式全文搜索引擎的研究。从文件描述来看,这篇文章的目的是为了提高海量及复杂数据的访问效率,在对Elastic...
【基于ElasticSearch的搜索系统的设计与实现】 随着移动互联网时代的到来,网络信息量呈现爆炸式增长,这对信息检索服务提出了更高的要求。传统的搜索引擎在处理大数据量时往往面临搜索效率低下和匹配度单一的问题...