Elasticsearch(ES)搜索引擎

什么是Elasticsearch?

  • Elasticsearch是一个基于Lucence的分布式存储搜索引擎,能从海量数据中快速找到所需内容
  • Lucene:Java语言搜索引擎,也就是个jar包,es是基于它做的二次开发
  • 结合kibana,Logstash,Beats,也就是ELK技术栈,被广泛用于日志数据分析(将日志数据可视化的展示出来),实时监控(项目的运行情况)等领域

倒排索引

数据库采用正向索引:一般情况下会根据id创建索引,形成B+树,如果根据id检索效率就会比较高

  • 文档(document):每条数据就是一个文档
  • 词条(term):文档按照语义分成的词语------------词条不会重复

ES中相关概念

文档

索引,映射

es与数据库关系

  • 数据库负责事务类型操作
  • es负责海量数据的搜索,分析,计算

索引库操作

mapping映射属性

常见的mapping属性包括:

创建索引库操作

索引库其他操作

不能修改索引库已有的字段,因为之前创建好的倒排索引跟分词会受到干扰,对索引库影响很大。只能添加新的字段。

代码示例

java 复制代码
PUT /test
{
    "mappings": {
        "properties": {
            "age":{
                "type": "integer"
            },
            "info":{
                "type": "text",
                "analyzer": "ik_smart"
            },
            "name":{
                "properties":{
                    "firstName":{
                        "type":"keyword"
                    },
                    "lastName":{
                        "type":"keyword"
                    }
                }
            }
        }
    }
}

GET /test
DELETE /test
PUT /test/_mapping
{
    "properties":{
        "height":{
            "type":"float"
        },
        "weight":{
            "type":"double"
        }
    }
}

文档操作

新增文档

查询、删除文档

修改文档

代码示例

java 复制代码
POST /test/_doc/1
{
  "age":"18",
  "height":"180",
  "name":{
    "firstName":"云",
    "lastName":"赵"
  }
}

GET /test/_doc/1

DELETE /test/_doc/1

PUT /test/_doc/1
{
  "age":"18",
  "height":"180",
  "name":{
    "firstName":"张飞",
    "lastName":"张飞"
  }
}

POST /test/_update/1
{
  "doc": {
    "name":{
    "firstName":"关羽",
    "lastName":"关羽"
  }
  }
}

批量处理

JavaRestClient(Java客户端)

客户端初始化

商品的mapping映射

先创建好mapping映射,在Java客户端创建索引库。

客户端索引库操作

创建索引库
删除索引库
查询索引库

客户端文档操作

新增文档
删除文档
查询文档
修改文档(方式一跟新增文档代码一样)
批量新增

DSL查询

DSL查询分类

快速入门

叶子查询

复合查询

排序和分页

排序:
分页:
深度分页问题

假如我们要查第100页数据,每页查十条,也就是查第990到1000这十条数据。但并不是简单的查到这1000条数据然后返回最后十条,而是把每个分片前1000条数据都拿出来合并到一起排序,选出前1000条然后返回最后十条。当要查询第一万页数据时,数据量极大,可能会导致内存炸裂。

解决方案:

高亮显示

再搜索结果中把搜索关键字突出显示

JavaRestClient查询

快速入门

构建并发起请求

解析查询结果

构建查询条件

示例:

排序和分页

示例:

高亮显示

示例:

下期我们讲ES在SpringBoot中的整合。

相关推荐
班德先生8 小时前
以全案策划设计思维破局,让电器科技品牌力落地生根
大数据·人工智能·科技
jackzzb1234568 小时前
2026年专注大模型应用的AI创业公司盘点与选择指南
大数据·人工智能
Bingo6543218 小时前
有哪些专注大模型应用的AI创业公司值得选择?
大数据·人工智能
江瀚视野8 小时前
医疗业界首个DR智能体来了,美的医疗的新玩法该咋看?
大数据·人工智能
易营宝17 小时前
多语言网站建设避坑指南:既要“数据同步”,又能“按市场个性化”,别踩这 5 个坑
大数据·人工智能
fanstuck18 小时前
从0到提交,如何用 ChatGPT 全流程参与建模比赛的
大数据·数学建模·语言模型·chatgpt·数据挖掘
春日见18 小时前
vscode代码无法跳转
大数据·人工智能·深度学习·elasticsearch·搜索引擎
萤丰信息18 小时前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区
冰糖猕猴桃21 小时前
【AI】把“大杂烩抽取”拆成多步推理:一个从单提示到多阶段管线的实践案例
大数据·人工智能·ai·提示词·多步推理