ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch软件是由Java语言开发的,所以也可以通过Java API的方式对Elasticsearch服务进行访问,并且操作的方式基本和Http操作一致
本文已经收录到Github: github.com/chenliang15…
Maven依赖
pom.xml
中加入ES需要的依赖
1 | xml复制代码<dependencies> |
- 如果在运行时报错
1 | makefile复制代码java.lang.NoSuchMethodError: org.elasticsearch.client.Request.addParameters |
那么应该是发生了依赖冲突,新建一个Maven项目,最好不要直接创建springboot项目,可能会有依赖冲突,将上面的依赖加入到maven项目的pom中
链接ES客户端
因为使用的highLevel的ES客户端,所以可以很方便的连接到ES,只需要通过host和port就可以直接连接
1 | java复制代码public static void main(String[] args) throws IOException { |
如果代码执行正常,没有报错那么就表示正常连接到了ES节点,可以通过获取到的RestHighLevelClient
对象进行操作
索引操作
加入了maven依赖,那么就可以通过Java客户端链接到ES进行操作,首先进行索引的基本操作
- 创建索引
1 | java复制代码RestHighLevelClient esClient = new RestHighLevelClient( |
- 查询索引
1 | java复制代码RestHighLevelClient esClient = new RestHighLevelClient( |
- 删除索引
1 | java复制代码RestHighLevelClient esClient = new RestHighLevelClient( |
文档操作
文档作为数据的对象,可以通过ES的客户端对象直接操作
RestHighLevelClient
对象和上面的创建方式相同,此处省略
文档基本操作
- 创建文档
1 | java复制代码@Test |
- 更新文档
1 | java复制代码@Test |
- 查询文档
1 | java复制代码@Test |
- 删除文档
1 | java复制代码@Test |
文档批量操作
一般操作ES的数据都是批量保存或者批量删除,如果通过一条一条的操作,那么效率非常的低,可以通过批量操作API提高效率
- 批量保存
1 | java复制代码@Test |
- 批量删除
1 | java复制代码@Test |
文档高级查询
高级查询、分组查询、分页、排序、聚合操作等,作为ES常用的查询操作,ES的Java客户端也提供了好用的API进行操作
- 查询指定索引的所有数据
1 | java复制代码@Test |
- term查询
1 | java复制代码@Test |
- 分页查询
1 | java复制代码@Test |
- 排序查询
1 | java复制代码@Test |
- 查询并过滤字段
1 | java复制代码@Test |
- bool条件查询,多条件Must
1 | java复制代码@Test |
- bool条件查询,多条件should
1 | java复制代码@Test |
- 范围查询
1 | java复制代码@Test |
- 模糊查询
1 | java复制代码@Test |
- 高亮查询
1 | java复制代码@Test |
- 聚合查询—最大值
1 | java复制代码@Test |
- 聚合查询—分组查询
1 | java复制代码@Test |
文档的高级查询,JavaAPI的操作方式和语法基本和Http操作的一致,只不过将对应的Http方式替换为了API,可以更好的在程序中进行ES操作,下一篇一起看看如何在SpringBoot和ElasticSearch进行集成吧,更加方便的操作ES与索引数据
本文转载自: 掘金