Java api操作elasticsearch2.3.5
文章目录
前言
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便
一、elasticsearch是什么?
Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是面向文档型数据库,一条数据在这里就是一个文档,用JSON作为文档序列化的格式,比如下面这条用户数据:
{
“_index”: “archive”,
“_type”: “content”,
“_id”: “7c7fc711-545d-4e6d-8639-eecf461559f4”,
“_score”: 1.0,
“_source”: {
“cId”: “f436294a-d1bf-40ed-9203-ecdd70b8fec0”,
“infoId”: “7c7fc711-545d-4e6d-8639-eecf461559f4”,
“busiOrgId”: “d12c4e18-e448-4c0d-be31-f6bb6a2464a4”,
“busiUserId”: “dc12928c-b6cf-418d-b74f-9d1ee9d04895”,
“archiveClass”: “0”,
“busiUserName”: “张艳南”,
“distributionRange”: “市师级”,
“archiveNumber”: null,
“infoState”: “0”,
“boxId”: null,
“archiveState”: null,
“boxYear”: null,
“saveYearLimit”: null,
“createTime”: “2021-01-06”,
“isDel”: “0”,
“referenceNumber”: “阿萨德〔2021〕1”,
“personLiable”: “张三”,
“fnsortTable”: “2020-01-06”,
“title”: “太阳热腾腾”,
“files”: null,
“filingTime”: null,
“boxNumber”: null,
“securityState”: “1c3cc330-7325-4662-a491-5cf3e37e956a”,
“pageNumber”: “1”,
“busiOrgName”: “办文处”, }
对于以上的数据,在关系型数据库中比如oracle,mysql,索引index相当于关系型数据库中的数据库名,类型type相当于表名,有如下的对应关系:
二、使用步骤以及基本操作
1.下载elsticsearch
官网地址:ElasticSearch官网地址
华为的镜像地址:华为镜像地址
有各个版本的下载信息,本次由于我负责的项目比较古老,综合考虑项目的实际情况以及代码的改动量,选择2.3.5的版本,并且成功的搭了起来。
下载之后解压到自己的目录,如果是windows系统,直接双击bin目录下的elasticsearch.bat即可。
2.基本操作
本次使用postman进行一些简单的ElasticSearch的相关操作(示例):
1.建立索引
{
“acknowledged”: true
}
表示创建成功
2.查询索引
这里我们可以使用相应的get请求要检验索引是否创建成功,如果出现如下图般的显示就表示已经建立了test_index索引:
3.向索引中插入数据
向索引中插入数据都是用PUT请求,其中url中test就表示这个test_index索引的类型,相当于oracle中的表名,1表示这条数据的id,当然也可以自定义插入数据的格式和字段名(这点会在下一篇博文中讲到)。然后按照json格式,将数据发送到elasticsearch,如果返回如如图所示,表示数据插入成功。
4.查询数据
- 查询数据一般都是GET请求,返回结果中的source就是我们之前插入的数据,version表示版本号,versioning是由elasticsearch在0.15版本引入的新特性”乐观并发控制“引申出来的,只介绍了每个document都会有个由系统控制自增的_version属性。
- 对于index中的每条记录都会有一个_version的属性,其取值范围为:[1,2^63),插入数据时默认的_version都是1,每次对这个document进行修改或删除操作都会使其+1,这个过程是由ES自己控制的。
- [ ]就好像这时候两个账户同时要从我账户里扣100块钱,结果就是两家同时取到我账户余额为100,各扣了100并把0的余额写入ES,这显然是错的,_version机制可以在更新请求后开始进行冲突检测,如果在这期间数据发生了改变,那么直接返回一个http的409 conflict错误。
总结
本次主要是对Elasticsearch 的基本安装和基本操作进行了简要的阐述,下一节会持续更新Kibana以及Elastic-search-head以及java-api对Es的基本操作。