项目中用到ElasticSearch 1.4.2,但多个项目生产环境使用的jdk版本不一致,大部分都是1.6。
折中方案使用restful api,但query json写起来比较麻烦,想用java api的方式写代码,最终生成restful json。
看了几个开源项目,如jest,还是需要RD自己写json,或者用ES提供的类SearchSourceBuilder。
比较蛋疼的是,ElasticSearch没有对功能进行拆包,还是跨不过jdk版本的问题。
无奈只好从ES的代码中拆分出这部分代码,并且支持jdk1.6编译执行。
代码已经拆分出来了,但没有精细化的整理,还是存在一些不必要的检索逻辑。
稍后加上HttpClient,就可以写java api通过restful接口进行调用了。
Git:https://github.com/mazhen2010/rts-es-rest4j
public class SearchSourceBuilderTest {
@Test
public void testJson() {
QueryBuilder query = QueryBuilders.matchQuery("firmName", "清泉");
FilterBuilder stationFilter = FilterBuilders.termFilter("stationId", 5);
FilterBuilder staffFilter = FilterBuilders.termFilter("staffId", 936);
query = QueryBuilders.filteredQuery(query, FilterBuilders.andFilter(stationFilter).add(staffFilter));
SortBuilder dealSorter = SortBuilders.fieldSort("dealCount").order(SortOrder.ASC);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
String json = searchSourceBuilder.query(query).toString();
System.out.println(json);
}
}
分享到:
相关推荐
ElasticSearch,简称为ES,是一个开源的、高度可扩展的分布式全文检索引擎。它基于 Java 开发,并利用 Lucene 作为其核心,实现了高效索引和搜索功能。ElasticSearch 通过Resultful API简化了与Lucene的交互,隐藏了...
- **测试**:编写Java代码,使用提供的API进行索引创建、文档插入、查询等操作,利用JUnit进行单元测试。 - **优化**:根据性能指标调整索引设置,如分片数量、副本数量,以及查询优化等。 总的来说,这个Elastic...
Elasticsearch(简称ES)是一款基于Lucene的分布式、RESTful搜索引擎,广泛应用于日志收集、数据分析等领域,是ELK(Elasticsearch、Logstash、Kibana)堆栈的重要组成部分。在处理中文数据时,合理的分词对于提升...
- **Elasticsearch vs Lucene**: ES在Java之上构建,简化了Lucene的使用,支持集群,解决了Lucene的一些复杂性和限制。 - **Elasticsearch vs Solr**: ES自带分布式协调,支持实时搜索,而Solr需借助Zookeeper进行...
Elasticsearch是一个开源的全文搜索引擎,它以分布式、RESTful接口和实时性为特点,广泛应用于数据搜索和分析场景。这个"elasticsearch-7.6.2.zip"压缩包包含了Elasticsearch 7.6.2版本的源代码,允许开发者深入理解...
7. **API交互**:Elasticsearch提供RESTful API,允许通过HTTP请求进行操作,如索引文档、查询数据、管理索引等。常用工具如curl或Postman可用于测试API。 8. **安全配置**:默认情况下,Elasticsearch对外部是开放...
2. RESTful API:Elasticsearch通过HTTP和JSON接口与外界交互,采用RESTful风格,使得操作简单易用,支持各种编程语言。 3. 倒排索引:Elasticsearch使用倒排索引来快速进行全文搜索,将每个词对应到包含它的文档...
2. **RESTful API**: 它基于HTTP和JSON,使得与Elasticsearch交互变得简单。开发者可以使用任何支持HTTP的编程语言来发送CRUD(创建、读取、更新、删除)操作。 3. **实时性**: Elasticsearch的数据索引和搜索几乎...
Elasticsearch基于HTTP和JSON,提供了RESTful API,使得与之交互变得简单直观。开发者可以使用任何支持HTTP的编程语言与其进行通信,大大降低了使用门槛。 **7. 查询和聚合能力** Elasticsearch具备强大的查询和...
在 5.x 系列中,Elasticsearch 引入了许多增强功能,如更强大的聚合功能、对 JSON 的优化以及对大规模集群的改进支持。5.6.3 版本相较于更早版本,提升了性能和稳定性,同时保持了与早期版本的向后兼容性。 **2. ...
Elasticsearch 的核心特性包括分布式、RESTful 风格的接口、自动分词、实时分析、强大的搜索功能以及丰富的API。以下是关于这个版本的一些关键知识点: 1. **分布式架构**:Elasticsearch 采用分布式架构,允许数据...
2. **RESTful接口**:Elasticsearch基于HTTP和JSON,提供了一种简单易用的RESTful API来操作索引、搜索、分析等任务,使得集成和开发变得非常便捷。 3. **近实时(NRT)**:虽然Elasticsearch是实时的,但存在一个...
4. 为了验证IK Analysis插件是否成功安装,可以发送一个GET请求到Elasticsearch的插件列表API: ``` curl -X GET "localhost:9200/_cat/plugins?h=plugin" ``` 如果插件安装成功,你应该能在返回的结果中看到...
它不仅支持JSON文档格式,还提供了RESTful API,使得与其他系统集成变得简单。Head插件则增强了其交互性,让用户可以通过浏览器直观地查看索引、节点状态、文档等信息。 首先,让我们深入了解Elasticsearch的核心...
【Java电商源代码详解】 Java电商源码是用于构建电子商务平台的软件代码,它涵盖了从用户界面、商品管理、订单处理、支付系统到库存控制等多个关键模块。在企业级开发中,Java因其强大的稳定性和可扩展性而成为首选...
2. RESTful API:Elasticsearch采用HTTP和JSON,提供了一套符合RESTful原则的API,使得开发者能方便地进行索引、搜索、更新和删除等操作。这对于集成到各种Web应用程序和服务中非常便利。 3. Lucene库:Elastic...
2. **RESTful API**:Elasticsearch采用HTTP和JSON协议,提供了一套完整的RESTful API,使得开发者可以轻松地进行索引、搜索、聚合等操作,与各种编程语言无缝对接。 3. **倒排索引**:Elasticsearch的全文检索能力...
通过分词技术,Elasticsearch能够将用户输入的查询语句拆分成关键词,并在索引中查找匹配的文档,提供毫秒级别的响应速度,为用户提供近乎实时的搜索体验。 其次,Elasticsearch的分布式特性是其另一大亮点。它设计...