- 浏览: 697615 次
- 性别:
- 来自: 长沙
文章分类
- 全部博客 (364)
- quick start (57)
- bboss aop (43)
- bboss mvc (48)
- bboss persistent (96)
- bboss taglib (30)
- bboss event (10)
- bbossgroups (52)
- bboss (32)
- bboss会话共享 (17)
- bboss rpc (7)
- bboss 国际化 (5)
- bboss 序列化 (9)
- bboss cxf webservice (8)
- bboss hessian (3)
- bboss 安全认证SSO (15)
- bboss 工作流 (6)
- 平台 (18)
- bboss quartz (3)
- 杂谈 (5)
- 大数据 (1)
- bboss elastic (24)
- bboss http (1)
- bboss kafka (1)
- Elasticsearch Scroll和Slice Scroll查询API使用案例 (1)
最新评论
-
qianhao123:
...
采用gradle构建和发布bboss方法介绍 -
qianhao123:
[img][/img]
采用gradle构建和发布bboss方法介绍 -
yin_bp:
欢迎大家参与working
高性能elasticsearch ORM开发库使用介绍 -
qq641879434:
万分感谢
bboss 持久层sql xml配置文件编写和加载方法介绍 -
yin_bp:
qq641879434 写道怎么设置配置文件 可以查看执行的S ...
bboss 持久层sql xml配置文件编写和加载方法介绍
the best elasticsearch highlevel java rest api-----bboss
ElasticSearch DSL Script使用案例分享,涉及到的功能点:
1前言
先看看elasticsearch官方的script dsl块文本的写法:通过一对""" """来包含块文本
对应的bboss script dsl块文本的写法:通过一对@""" """来包含块文本
bboss中管理的dsl块文本和elasticsearch官方的dsl中的块文本唯一的区别就是在开头的"""前面加了个@符号
2.定义dsl配置
在demo.xml文件中增加以下配置
2.执行脚本处理
定义类ScriptImpl,增加方法updateDocumentByScriptPath来执行脚本
3.一个比较复杂Script的案例
4 参考资料
https://my.oschina.net/bboss/blog/1556866#h3_37
https://www.elastic.co/guide/en/elasticsearch/painless/6.3/painless-examples.html
elasticsearch技术交流群:166471282
elasticsearch微信公众号:
ElasticSearch DSL Script使用案例分享,涉及到的功能点:
- 脚本片段使用
- 多行文本使用
- 添加属性字段
1前言
先看看elasticsearch官方的script dsl块文本的写法:通过一对""" """来包含块文本
{ "query": { "function_score": { "script_score": { "script": { "lang": "painless", "source": """ int total = 0; for (int i = 0; i < doc['goals'].length; ++i) { total += doc['goals'][i]; } return total; """ } } } } }
对应的bboss script dsl块文本的写法:通过一对@""" """来包含块文本
{ "query": { "function_score": { "script_score": { "script": { "lang": "painless", "source": @""" int total = 0; for (int i = 0; i < doc['goals'].length; ++i) { total += doc['goals'][i]; } return total; """ } } } } }
bboss中管理的dsl块文本和elasticsearch官方的dsl中的块文本唯一的区别就是在开头的"""前面加了个@符号
2.定义dsl配置
在demo.xml文件中增加以下配置
<property name="scriptPianduan"> <![CDATA[ "params": { "last": #[last], "nick": #[nick] } ]]> </property> <property name="scriptDsl"> <![CDATA[{ "script": { "lang": "painless", "source": @""" ##块文本开始 ctx._source.last = params.last; ctx._source.nick = params.nick """,##块文本结束 @{scriptPianduan} } }]]> </property>
2.执行脚本处理
定义类ScriptImpl,增加方法updateDocumentByScriptPath来执行脚本
package org.bboss.elasticsearchtest.script; /* * Copyright 2008 biaoping.yin * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.bboss.elasticsearchtest.crud.DocumentCRUD; import org.frameworkset.elasticsearch.ElasticSearchHelper; import org.frameworkset.elasticsearch.client.ClientInterface; import java.util.HashMap; import java.util.Map; public class ScriptImpl { private String mappath = "esmapper/demo.xml"; public void updateDocumentByScriptPath(){ //初始化数据,会创建type为demo的indice demo,并添加docid为2的文档 DocumentCRUD documentCRUD = new DocumentCRUD(); documentCRUD.testCreateIndice(); documentCRUD.testBulkAddDocument(); //创建加载配置文件的客户端工具,用来检索文档,单实例多线程安全 ClientInterface clientUtil = ElasticSearchHelper.getConfigRestClientUtil(mappath); Map<String,Object> params = new HashMap<String,Object>(); //为id为2的文档增加last和nick两个属性 params.put("last","gaudreau"); params.put("nick","hockey"); //通过script脚本为文档id为2的文档增加last和nick两个属性,为了演示效果强制refresh,实际环境慎用 clientUtil.updateByPath("demo/demo/2/_update?refresh","scriptDsl",params); //获取更新后的文档,会看到新加的2个字段属性 String doc = clientUtil.getDocument("demo","demo","2"); System.out.println(doc); } }
3.一个比较复杂Script的案例
<property name="updateStoreProductDynamicTemplate"> <![CDATA[ { "query": { "bool": { "must": [ { "term": { "_id": #[id] } } ] } }, "script": { "lang": "painless", "source": @""" ctx._source.is_expired_dynamic_price=params.is_expired_dynamic_price; ctx._source.dynamic_price_template_id=params.dynamic_price_template_id; ctx._source.dynamic_price_template.id=params.dynamic_price_template_id; ctx._source.dynamic_price_template.code=params.dynamic_price_template_code; ctx._source.dynamic_price_template.name=params.dynamic_price_template.name; ctx._source.dynamic_price_template.count_products=params.dynamic_price_template.count_products; ctx._source.dynamic_price_template.is_deleted=params.dynamic_price_template.is_deleted; ctx._source.dynamic_price_template.user_id_update=params.dynamic_price_template.user_id_update; ctx._source.dynamic_price_template.rules=params.ctx._source.dynamic_price_template.rules; """, "params": { "is_expired_dynamic_price": #[isExpiredDynamicPrice], "dynamic_price_template_id": #[dynamicPriceTemplateId], "dynamic_price_template_code":#[dynamicPriceTemplate->code], "dynamic_price_template.name":#[dynamicPriceTemplate->name], "dynamic_price_template.count_products":#[dynamicPriceTemplate->countProducts], "dynamic_price_template.is_deleted":#[dynamicPriceTemplate->isDeleted], "dynamic_price_template.user_id_update":#[dynamicPriceTemplate->userIdUpdate], "dynamic_price_template.rules": [ #foreach($rule in $dynamicPriceTemplate.rules) #if($velocityCount > 0),#end { "id": #[dynamicPriceTemplate->rules[$velocityCount].id], "sort_num": #[dynamicPriceTemplate->rules[$velocityCount]->sortNum], "act_expired_time_tick": #[dynamicPriceTemplate->rules[$velocityCount]->actExpiredTimeTick], "act_expired_time_value": #[dynamicPriceTemplate->rules[$velocityCount]->actExpiredTimeValue], "act_expired_time_unit": #[dynamicPriceTemplate->rules[$velocityCount]->actExpiredTimeUnit], "price_new_type": #[dynamicPriceTemplate->rules[$velocityCount]->priceNewType], "price_new_coefficient": #[dynamicPriceTemplate->rules[$velocityCount]->priceNewCoefficient], "price_new_custom": #[dynamicPriceTemplate->rules[$velocityCount]->priceNewCustom], "auto_set_commend": #[dynamicPriceTemplate->rules[$velocityCount].autoSetCommend], "auto_set_tag": #[dynamicPriceTemplate->rules[$velocityCount]->autoSetTag] } #end ] } } } ]]> </property>
4 参考资料
https://my.oschina.net/bboss/blog/1556866#h3_37
https://www.elastic.co/guide/en/elasticsearch/painless/6.3/painless-examples.html
elasticsearch技术交流群:166471282
elasticsearch微信公众号:
发表评论
-
一组获取Elasticsearch 索引表所有文档API使用案例
2018-11-18 16:02 3178The best elasticsearch highle ... -
Elasticsearch Scroll和Slice Scroll查询API使用案例
2018-09-16 18:49 4005Elasticsearch Scroll和Slice Scro ... -
数据库数据导入Elasticsearch案例分享
2018-09-16 18:42 6419The best elasticsearch highleve ... -
Spring Boot整合ElasticSearch单/多集群案例
2018-07-07 20:12 9982Spring Boot整合ElasticSearch单个集群和 ... -
Elasticsearch 6.3.0 SQL功能使用案例分享
2018-06-25 19:12 3412The best elasticsearch highleve ... -
数据库数据导入Elasticsearch案例分享
2018-06-21 22:56 433The best elasticsearch highleve ... -
ElasticSearch From-Size分页案例
2018-06-14 00:17 3516ElasticSearch From-Size分页案例 1. ... -
ElasticSearch客户端注解使用介绍
2018-05-30 00:19 2551The best elasticsearch highleve ... -
基于自定义配置文件初始化ElasticSearch客户端方法介绍
2018-05-24 18:56 1580基于自定义配置文件初始化ElasticSearch客户端方法介 ... -
Elasticsearch关键词高亮检索案例分享
2018-05-10 22:18 62931.准备工作 参考文档《集成Elasticsearch Res ... -
判断ElasticSearch索引Indice和索引类型是否存在
2018-05-05 23:54 8620The best elasticsearch highleve ... -
快速集成Elasticsearch Restful API案例
2018-04-26 14:27 3253The best elasticsearch highleve ... -
Elasticsearch source filter检索案例
2018-04-24 13:00 2348摘要: the best elasticsearch high ... -
Elasticsearch search after分页检索案例
2018-04-21 10:36 3202Elasticsearch search after分页检索案 ... -
Elasticsearch Delete/UpdateByQuery案例
2018-04-16 11:09 7505Elasticsearch Delete/UpdateByQu ... -
Elasticsearch返回父子数据关联查询案例
2018-04-13 12:36 4813在《Elasticsearch 父子关 ... -
Elasticsearch Sliced Scroll分页检索案例分享
2018-04-02 18:28 3843Elasticsearch Sliced Scroll分页检索 ... -
Elasticsearch地理位置维护及检索案例分享
2018-03-31 21:36 1745Elasticsearch地理位置信息维护及检索案例分享 1 ... -
Elasticsearch Scroll分页检索案例分享
2018-03-28 20:40 4143Elasticsearch Scroll分页检索案例分享 1 ... -
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
2018-03-25 08:55 12871.前期准备 参考文档《高性能elasticsearch OR ...
相关推荐
可以使用Elasticsearch的Java API来构建DSL。 5. **执行查询和结果映射**:在代理类中,使用ES的Java REST客户端执行DSL查询,并将结果映射到相应的Java对象。可以自定义结果映射逻辑,以适应不同的返回类型。 6. ...
Splunk-SPL-to-ElasticSearch-DSL 基于 Splunk 的 SPL 查询语言转换成 ElasticSearch 的 DSL。 转换结果和 对齐。 可以配置 进行表达式搜索。 Usage const converter = require("./lib/converter") try { const { ...
Elasticsearch Painless Script入门教程--示例数据。 自Elasticsearch 5.x 引入Painless,使得Elasticsearch拥有了安全、可靠、高性能脚本的解决方案。Painless是Elastic开发并做了专门的优化,相较之前的脚本更...
Django Elasticsearch DSL是Django与Elasticsearch之间的一个桥接库,它允许开发者使用DSL来定义Elasticsearch的索引和搜索查询。DSL是一种简洁、直观的语法,使得编写复杂的Elasticsearch查询变得容易。通过这个库...
在这篇资源中,我们将详细介绍如何使用DSL...最后,我们将分享一些实用技巧和最佳实践,帮助您充分发挥DSL在Elasticsearch中的优势。我们将探讨性能优化、查询调试和索引优化等关键主题,以提升查询效率和搜索准确性。
Java实现Elasticsearch的简单实例主要涉及以下几个关键知识点: 1. **Elasticsearch基础**:Elasticsearch(ES)是一个开源的、分布式全文搜索引擎,它提供了实时数据分析的能力,广泛用于日志分析、监控、搜索应用...
弹性搜索 建造状态 6.0.0 6.0.1 6.1.0 6.1.1 6.1.2 6.1.3 6.1.4 6.2.0 6.2.1 6.2.2 6.2.3 6.2.4 6.3.0 6.3.1 6.3.2...用antlr4重写elasticsearch ,支持 变更日志 Maven < groupId>io.github.iamazy.elasticsearch.ds
它是作为的薄包装而构建的,因此您可以使用elasticsearch-dsl-py团队开发的所有功能。 您可以在查看完整的文档。特征基于因此您可以使用类进行查询。 Django信号接收器处于保存和删除状态,以保持Elasticsearch同步...
Elasticsearch-DSL库提供了一种更加Pythonic的方式来操作Elasticsearch,它使得开发者可以使用更加结构化和可读性强的代码来执行复杂的查询和操作。该库的核心功能包括: 1. **查询构造**:通过构建类对象的方式,...
《PyPI上的django-elasticsearch-dsl-drf-0.13.2.tar.gz:整合Django、Elasticsearch与DRF的利器》 在Python的世界里,开发高效、可扩展的Web应用,Django框架是不可或缺的一部分。而随着大数据时代的发展,对数据...
通用SQL到Elasticsearch DSL查询转换器。 专为设计 地位 实验性-加入我们,骇客入侵! 安装 npm install elasql 用法 const convert = require('elasql').convert convert('SELECT id,name FROM shop WHERE shop_id...
Elasticsearch是一款基于Lucene的开源搜索引擎,它使用RESTful接口进行数据操作,数据以JSON格式存储。Elasticsearch以其高效的全文搜索功能,实时数据处理能力,以及易于使用的特性,在众多企业中得到了广泛应用,...
总的来说,ElasticSearch因其强大的搜索和分析能力、分布式特性及广泛的集成支持,成为Java学习者和技术分享者的重要工具。它不仅适用于日志分析、实时搜索,还广泛应用于监控、物联网、内容管理系统等多个领域。...
使用`/opt/es/essoftware/elasticsearch-2.3.4/bin/plugin install mobz/elasticsearch-head`命令安装,然后通过`http://cm3:9200/_plugin/head/`访问。 2. Marvel和Kibana是Elasticsearch的数据监控和可视化工具。...
在现代大数据分析和实时搜索领域,Elasticsearch(简称 ES)已经成为了广泛使用的工具。它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够处理大量数据并提供快速响应。而Spring框架作为Java企业级应用的事实...
ElasticSQL package converts SQL to ElasticSearch DSL SQL Features Support: SQL Select SQL Where SQL Order By SQL Group By SQL AND & OR SQL Like & NOT Like SQL COUNT distinct count(distinct(mid)...
资源分类:Python库 所属语言:Python 资源全名:django-elasticsearch-dsl-drf-0.1.6.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Elasticsearch 7.0 实例精解源代码是一份深度解析Elasticsearch 7.0版本核心功能和实际应用的资源集合。这份压缩包包含了详细的示例代码,旨在帮助开发者更好地理解和掌握Elasticsearch的强大功能。以下是基于...
在Java环境中使用Elasticsearch,通常会涉及到Elasticsearch官方提供的Java客户端库,它允许开发者通过Java代码操作Elasticsearch集群,实现数据的索引、查询、聚合、更新以及删除等操作。Java客户端通过REST API与...