全文搜索引擎Elasticsearch之容器部署与使用

具体请参考官方文档 ->  Elasticsearch Reference

一、什么是 Elasticsearch

Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

二、Docker安装Elasticsearch

1、开发模式

可以使用以下命令快速启动Elasticsearch以进行开发或测试:

$ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.5.3
# 集成ik插件
$ docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" bachue/elasticsearch-ik:6.2.4

2、生产模式

vm.max_map_count内核设置需要至少设置为2 62144用于生产。根据您的平台:

  • Linux的

    vm.max_map_count设置应在/etc/sysctl.conf中永久设置:

    $ grep vm.max_map_count /etc/sysctl.conf
    vm.max_map_count=262144

    要在实时系统类型上应用该设置: sysctl -w vm.max_map_count=262144

3、安装成功后即可访问

19c8c792fdcc9005825f454e09eeb337dc8.jpg

三、可视化工具示例

1、ElasticHD 是一款 Elasticsearch的可视化应用(无需配置elasticsearch.yml

$ docker run -p 9800:9800 -d --link es --name elastichd containerize/elastichd

7ad292c301b1bd2508aa2f74051c17146ab.jpg

2、elasticsearch-head是elasticsearch的一个集群管理工具(需要配置elasticsearch.yml 该插件能直接对 Elasticsearch 的数据进行增删改查,因此存在安全性的问题。建议生产环境下不要使用该插件!

for Elasticsearch 5.x: docker run -d --name es-head -p 9100:9100 --link es docker.io/mobz/elasticsearch-head:5
# 安装es版本5 否则部分操作无法正常使用(无法新建索引等)
docker run -p 9200:9200 -p 9300:9300 -d --name es -e "discovery.type=single-node" elasticsearch:5

es默认不支持跨域访问的,所以需要重新配置:

Ⅰ、进入容器

docker exec -it es bash

Ⅱ、在elasticsearch.yml配置文件中加入一下内容,然后重启服务。

http.cors.enabled: true
http.cors.allow-origin: "*"

# 无法使用vi, 重定向方式完成
echo "http.cors.enabled: true" >> elasticsearch.yml
echo "http.cors.allow-origin: \"*\"" >> elasticsearch.yml

55625143650cb9c1d788d82dec769423a9a.jpg

e89b3cf39a198bcb1f88ec419562acdb1ed.jpg

四、基本概念

Node与Cluster

单个 es 实例称为一个节点(node) ,   一组节点构成一个集群(cluster)。

Index

含有相同属性的文档集合 - > es会索引所有字段,经过处理后写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引(必须小写)。

shards分片

每个索引都有多个分片,每个分片都是 Lucene 索引

replicas副本

拷贝一份分片就完成分片的副本

Type

索引可以定义一个或多个类型,文档必须属于一个类型

Document

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index

Document 使用 JSON 格式表示,下面是一个例子。

{
  "user": "张三",
  "title": "工程师",
  "desc": "数据库管理"
}

同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率。

五、docker-compose 部署 elasticsearch 集群 

六、使用

Elasticsearch 支持 RESTFUL 风格 API,其 API 基本格式如下:

http://<ip>:<port>/<索引>/<类型>/<文档id>

5.1 创建索引

为了方便测试,我们使用 ARC工具进行接口的请求。

5.1.1 创建一个非结构化的索引,需要使用 PUT 请求。例如创建一个名为 book 的索引。

0ab6383e2bd30805f62b7d8ed7e82179ef2.jpg

5.1.2 创建一个结构化的索引

baaf86670292028f59cf34829997850a023.jpg

5.2 删除索引

d1609dfeecd44ca369f157082bd8840e7bc.jpg

5.3 插入数据

5.3.1 指定id

a16a535713b2da09374c7ac36d9906018d7.jpg

5.3.2 不指定 ID ,需要使用 POST 请求

2a6d41f2ff50f7478b4c55bd9b4c062b400.jpg

5.4 修改数据

修改数据,需要使用 POST 请求,且 URL 需要添加 _update

0186f0f2cdadcda8b95fa03cc08906f4343.jpg

5.5 查找数据

c5d0efe6e66c3b5ca33d7f50da1a4058908.jpg

条件查询,需要使用 POST 请求

868dfbbdb4ca3dbaaddca981b244c16677e.jpg

 

转载于:https://my.oschina.net/wuweixiang/blog/2990460

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值