分布式搜索引擎ElasticSearch

搜索包括:
1)搜索引擎搜索:百度、谷歌
2)站内搜索:淘宝、天猫、京东

1. ElasticSearch简介

一个实时的分布式搜索和分析引擎。基于Lucene的搜索服务器,提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。

特点:
1)可以作为一个大型分布式集群技术,处理PB级数据
2)将全文搜索、数据分析以及分布式技术,合并在了一起,形成了独一无二的ES
3)开箱即用,部署简单
4)全文检索,同义词处理,相关度排名,复杂数据分析,海量数据近实时处理

 

2. ElasticSearch体系结构

下面是ElasticSearch与MySQL数据库逻辑概念的对比

ElasticSearchMySQL
索引(index)数据库(database)
类型(type)表(table)
文档(document)行(row)

 

 

 

 

 

3. ElasticSearch安装

直接下载解压,bin/elasticsearch.bat运行即可,端口9300(Java开发),9200(非Java)

4. ElasticSearch的Restful风格使用

通过Postman模拟

// 新建articleindex索引,put方式提交
http://127.0.0.1:9200/articleindex

// 新建文档,post方式提交
http://127.0.0.1:9200/articleindex/article
body:{"title": "xxx", "content": "xxx"}

// 查询所有,get方式提交
http://127.0.0.1:9200/articleindex/_search

// 按ID查询文档,get方式提交
http://127.0.0.1:9200/atricleindex/article/1

// 根据某列进行查询,get方式提交
http://127.0.0.1:9200/atricleindex/article/_search?q=title:完美

5. Head插件使用

通过rest请求方式使用Elasticsearch太麻烦。一般都会使用图形化界面来实现日常管理。Head插件时最常用的。通过npm启动。

 

6. IK分词器

直接下载,放置到ElasticSearch的plugin下面就可以用了。

IK提供了两个分词算法ik_smart(最少切分)和ik_max_word(最细粒度划分),可通过
localhost:9200/_analyze?analyzer=ik_smart&pretty=true&text=搜素引擎的使用

7. Java应用

导包

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-elasticsearch</artifactId>
</dependency>

配置

spring.data.elasticsearch.cluster-nodes = 127.0.0.1:9300

实体

@Document(indexName = "", type = "")
public class Article implements Serializable {
    
    @Id
    private String id;

    // 是否索引,看该域是否能被搜索
    // 是否分词,就表示搜索的时候时整体匹配还是单词匹配
    // 是否存储,就是是否在页面上显示
    @Field(index = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
    private String title;

    @Field(index = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")
    private String content;

    private String state;

    ...
}

Dao

extends ElasticsearchRepository<实体, String>
 

8. Elasticsearch与MySQL数据同步

8.1 Logstash

一款轻量级的日志搜集处理框架,可以方便的把分散的、多样化的日志搜集起来,并进行自定义的处理,然后传输到指定位置,比如某个服务器或者文件。

解压,进入bin目录

logstash -e 'input { stdin { } } output { stdout { } }'
logstash -f ../mysqletc/mysql.conf

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值