Elastic Search(搜索引擎)

本文介绍了搜索引擎在大数据量查询中的重要性,特别是Elasticsearch作为一款流行的搜索引擎。详细阐述了倒排索引的概念,以及Lucene、Solr和Elasticsearch之间的关系。并提供了Elasticsearch 6.4.3的安装步骤和基本操作,包括通过RESTful API进行数据管理,以及在SpringBoot中集成和使用Elasticsearch。
摘要由CSDN通过智能技术生成

搜索是网站必备的功能

以前数据都存在数据库中,通过 LIKE %keyword% 进行模糊查询。
当数据量达到一定级别(百万)后,会碰到严重的性能问题,查询速度极慢。
数据库的存储结构决定了模糊查询必须和全表中每一行数据进行比较。

可以使用搜索引擎提升模糊查询效率:
搜索引擎会对存储数据中需要查询的列建立倒排索引。
通过倒排索引可以减少比较次数,极大的提高查询效率。

倒排索引:

这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。
由于不是由记录来确定属性值,而是由属性值来确定记录的位置,
因而称为倒排索引(inverted index)。

开源搜索引擎:

lucence:Doug Cutting 所撰写的一个全文检索引擎架构。

solr:在 lucence 的基础上进行二次开发,形成一个简单易用的搜索引擎。

elasticsearch:在 lucence 的基础上进行二次开发,更符合现代程序员的操作习惯 。

ElasticSearch(最流行的搜索引擎):

概念:

index 索引 可理解为数据库名
type 类别 可理解为表
mapping 数据结构 可理解为表结构(字段)
field 字段 可理解为列

安装和使用:

es:6.4.3 maven:3.1.11 ik:6.4.3 暂时先使用这个版本的,新的版本使用时出现的问题开发工具还没有解决。

windows 版:
0. 配置好 jdk 的环境变量

  1. 解压到 D:/java 目录中

  2. 进入解压后的 bin 目录

  3. 安装中文分词插件(jieba,ik)

             1. 下载 https://github.com/medcl/elasticsearch-analysis-ik/releases
             
             2. 
    
  4. 双击 elasticsearch.bat 文件启动 elasticsearch

  5. 使用 http://localhost:9200 验证是否启动成功

  6. 关闭 bat 文件的黑窗口即可关闭 elasticsearch

官方推荐通过 restful api 操纵 elasticsearch

  1. 创建 index
    PUT http://localhost:9200/index_name

  2. 创建 mapping,默认名字为 _doc,创建三个字段
    POST http://localhost:9200/index_name/_mapping
    如:

{
   
	"properties":{
   
		"name":{
   
			"type":"text"
		},
		"phone":{
   
			"type":"text"
		},
		"address":{
   
			"type":"text"
		}
	}
}
  1. 添加数据(doc/document)
    POST http://localhost:9200/index_name/_create/1
{
   
	"content":{
   
		"name":"lisi",
		"phone":"1343241443",
		"address":"China"
	}
}
  1. 根据关键字进行搜索
    POST http://localhost:9200/index_name/_search
{
   
	"query":{
   
		"match":{
   
			"address":"henan"
		}
	}
}
  1. 查看所有的 index
    GET http://localhost:9200/_cat/indices
    在这里插入图片描述

  2. 查看 index 下的所有数据
    GET http://localhost:9200/index_name/_search
    在这里插入图片描述

  3. 根据 id 获取数据
    GET http://localhost:9200/index_name/mapping_name/id
    在这里插入图片描述

  4. 删除数据
    DELETE http://localhost:9200/index_name/mapping_name/id

  5. 删除 index
    DELETE http://localhost:9200/index_name

在 springboot 中操纵 ES

  1. 引入依赖
<!-- springboot中使用elasticsearch,允许我们像使用jpa一样操纵 -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-elasticsearch</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>

spring-data-elasticsearch 允许我们像使用 JPA 一样操纵 ES

  1. 编写配置文件
# es 集群主节点的地址
spring.data.elasticsearch.cluster-nodes=localhost:9300
            
# es 集群的名字࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值