当前位置:   article > 正文

Elastic Search (ES)Java 入门实操(1)下载安装、概念

Elastic Search (ES)Java 入门实操(1)下载安装、概念

实现数据查询代码:Elastic Search(ES)Java 入门实操(2)搜索代码-CSDN博客

Elastic Search(ES)Java 入门实操(3)数据同步-CSDN博客

Elastic Search 官方描述,是一个分布式的搜素数据分析引擎,可以集中存储数据,快速完成搜索,微调相关性,进行强大的分析。

ES 中的索引、映射、文档和字段等概念和传统关系型数据库相似。可以结合数据库去理解。比如索引可以理解为表。

ES 使用了倒排索引机制来优化搜索效率。比如”唱跳rap篮球“,根据机制可能会为 唱跳、rap、篮球分别建立索引,当我们搜索其中一个关键词,就能搜索出来相关的结果,然后通过正排索引来详细展示相关文章。

官方文档:Quick start | Elasticsearch Guide [7.17] | Elastic

下载安装

需要下载的有 Elastic Search 和 kibana(可视化界面)

Elastic Search 下载地址:Elasticsearch 7.17.21 | Elastic

kibana 下载地址:Install Kibana on Windows | Kibana Guide [7.17] | Elastic

推荐下载 7.17版本,避免出现其他问题。

下载完成后直接解压即可,路径名不要带有中文

在解压目录的 bin 目录下使用 cmd 命令 elasticsearch 就可以启动,访问端口 localhost:9200

同样的 kibana 也是在 bin 目录下启动 kibana 命令,可视化界面的端口号是 5601

在左侧边栏使用 Dev Tools 即可进入控制台使用 ES 自己的操作数据的语法

DSL

应用最广的,是 Json 格式,好理解,和 http 请求兼容

官方文档:Query DSL | Elasticsearch Guide [7.17] | Elastic

新增数据

井号后面是注释,实际使用不需要

注意:当添加新数据时如果不指定 id ,ES 会自动生成,类型是 string 类型,如果需要在代码层面和 MySQL 同步,最好是新增的时候指定 id ,避免出现类型不同等其他问题。

  1. POST#请求的类型 post_1#表的名称 /_doc/ 5#id
  2. { #字段和数据
  3. "title": "kun",
  4. "desc": "唱跳"
  5. }
  6. #结果
  7. {
  8. "_index" : "post_v1",
  9. "_type" : "_doc",
  10. "_id" : "5",
  11. "_version" : 1,
  12. "result" : "created",
  13. "_shards" : {
  14. "total" : 2,
  15. "successful" : 1,
  16. "failed" : 0
  17. },
  18. "_seq_no" : 6,
  19. "_primary_term" : 3
  20. }

查询

  1. #查询对应的表
  2. GET post_v1/_search
  3. #根据 id 查询
  4. GET post_v1/_doc/5

修改

  1. POST post_v1/_doc/5
  2. {
  3. "title": "cxk",
  4. "desc": "ctrl"
  5. }

 实际修改数据和新增数据格式差不多,只需要指定对应的 id 即可,如果表(索引)中没有对应的 id,就会直接创建新的数据。

一句话概括就是有就修改,没有就新增,所以也不会出现重复修改的情况,因为只要有就会修改。

删除

  1. #删除普通索引
  2. DELETE index_name
  3. #删除数据流式索引
  4. DELETE _data_stream/logs-my_app-default

ES 还有其他格式的 Query 格式命令,比如 EQL、SQL、Painless Scrpiting language,详情可以查看官方文档。

Mapping

官方文档:Mapping | Elasticsearch Guide [7.17] | Elastic

相当于数据库表的表结构,字段和字段类型。有的字段不指定会自动生成,比如主键 id。

ES 支持动态 mapping,表结构可以动态改变,如果表结构中不存在的字段,如果插入了数据,也能插入,并新增字段。

也可以手动指定字段类型,显式创建 mapping

  1. PUT user
  2. {
  3. "mappings": {
  4. "properties": {
  5. "age": { "type": "integer" },
  6. "email": { "type": "keyword" },
  7. "name": { "type": "text" }
  8. }
  9. }
  10. }

分词器

顾名思义,就是 ES 的一种分词策略/规则

官方文档:Test an analyzer | Elasticsearch Guide [7.17] | Elastic

  1. #使用空格分词
  2. POST _analyze
  3. {
  4. "analyzer": "whitespace",
  5. "text": "The quick brown fox."
  6. }
  7. #标准分词
  8. POST _analyze
  9. {
  10. "tokenizer": "standard",
  11. "filter": [ "lowercase", "asciifolding" ],
  12. "text": "Is this déja vu?"
  13. }
  14. #关键词分词,整句当作一个关键词,不分开
  15. POST _analyze
  16. {
  17. "analyzer": "keyword",
  18. "text": "The quick brown fox."
  19. }

官方提供的分词器问题在于对于中文来说不太友好 ,中文是不使用空格作为分隔的。

IK 分词器

中文友好,文档:https://www.wpsshop.cn/w/很楠不爱3/article/detail/704627

推荐阅读
相关标签
  

闽ICP备14008679号