初识ElasticSearch-7.6.x搜索引擎
1.ElasticSearch是什么
Elasticsearch是一个用Java语言开发的基于Lucene的搜索服务器。 是一个分布式、RESTful 风格的搜索和数据分析引擎,作为 Elastic Stack 的核心,它集中存储我们的数据。是一种流行的企业级搜索引擎。
2.如何使用ElasticSearch
-
下载elasticsearch-7.6.1,切换到bin目录执行 elasticsearch.bat 执行文件(注意:此版本最低需要jdk1.8,不要关闭黑窗口),执行完毕后在浏览器输入127.0.0.1:9200后可看到如下界面即启动成功
-
下载elasticsearch-analysis-ik-7.6.1分词器放到我们的elasticsearch的plugins下即可
-
下载elasticsearch-head,打开cmd切换到elasticsearch-head的安装目录下执行命令
npm install npm run start
默认情况下,elasticsearch 在端口9200上公开一个http rest API,elasticsearch-head连接到该端口,由于我们在不同端口下进行操作所有需要进行一下CORS跨域。所以我们需要在在elasticsearch 的config目录下找到elasticsearch.yml在尾部加入以下配置。执行完成后在浏览器输入localhost:9100可看到如下页面即启动成功
http.cors.enabled: true http.cors.allow-origin: "*"
-
下载Kibana-7.6.1,切换到bin目录下执行bibana.bat,执行完毕后在浏览器输入localhost:5601可看到如下页面即启动成功(more默认是英文的页面,可在config下的kibana.yml中配置 i18n.locale: “zh-CN”)
3.使用Kibana测试ElasticSearch的基本API
-
测试ik分词器(其中ik_smart为最小切分,ik_max_word为穷尽词库的可能)
-
创建索引
PUT /user
-
删除索引
DELETE /user
-
获取索引
GET /user
-
向索引中插入数据
PUT /user/_doc/1 { "name": "aaron", "age": 18 }
-
修改索引中的数据
POST /user/_doc/1/_update { "doc": { "name": "MrDu", "age": 18 } }
-
获取索引中的数据
GET /user/_doc/1
-
删除索引中的数据
DELETE /user/_doc/1
4.使用使用Kibana测试ElasticSearch的复杂查询
-
条件查询
GET /user/_doc/_search { "query": { "match": { "tags": "技术宅" } } }
-
结果过滤
GET /user/_doc/_search { "query": { "match": { "tags": "技术宅" } }, "_source": ["name","tags"] }
-
排序搜索
GET /user/_doc/_search { "query": { "match": { "tags": "技术宅" } }, "sort": { "age": "desc" } }
-
分页查询
GET /user/_doc/_search { "from": 0, "size":2, "sort": { "age": "desc" } }
-
多条件精确查询 must(所有条件都要符合)
GET /user/_doc/_search { "query": { "bool": { "must": [ { "match":{ "name": "Aaron" } }, { "match":{ "age":18 } } ] } } }
-
只要满足条件的都查询出来 should
GET /user/_doc/_search { "query": { "bool": { "should": [ { "match":{ "name": "Aaron" } }, { "match":{ "age":20 } } ] } } }