Docker应用(一)Elasticsearch

1、简介

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。”Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。

2、安装

docker search elasticsearch

NAME                                 DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED

elasticsearch                        Elasticsearch is a powerful open source sear…   4946      [OK]       

nshou/elasticsearch-kibana           Elasticsearch-7.10.1 Kibana-7.10.1              126                  [OK]

mobz/elasticsearch-head              elasticsearch-head front-end and standalone …   71                   

elastichq/elasticsearch-hq           Official Docker image for ElasticHQ: Elastic…   71                   [OK]

itzg/elasticsearch                   Provides an easily configurable Elasticsearc…   71                   [OK]

elastic/elasticsearch                The Elasticsearch Docker image maintained by…   50                   

bitnami/elasticsearch                Bitnami Docker Image for Elasticsearch          38                   [OK]

taskrabbit/elasticsearch-dump        Import and export tools for elasticsearch       27                   [OK]

lmenezes/elasticsearch-kopf          elasticsearch kopf                              18                   [OK]

barnybug/elasticsearch               Latest Elasticsearch 1.7.2 and previous rele…   17                   [OK]

justwatch/elasticsearch_exporter     Elasticsearch stats exporter for Prometheus     16                   

blacktop/elasticsearch               Alpine Linux based Elasticsearch Docker Image   15                   [OK]

esystemstech/elasticsearch           Debian based Elasticsearch packing for Lifer…   15                   

monsantoco/elasticsearch             ElasticSearch Docker image                      11                   [OK]

mesoscloud/elasticsearch             [UNMAINTAINED] Elasticsearch                    9                    [OK]

centerforopenscience/elasticsearch   Elasticsearch                                   4                    [OK]

dtagdevsec/elasticsearch             elasticsearch                                   4                    [OK]

bitnami/elasticsearch-exporter       Bitnami Elasticsearch Exporter Docker Image     3                    [OK]

barchart/elasticsearch-aws           Elasticsearch AWS node                          3                    

axway/elasticsearch-docker-beat      "Beat" extension to read logs of containers …   1                    [OK]

jetstack/elasticsearch-pet           An elasticsearch image for kubernetes PetSets   1                    [OK]

phenompeople/elasticsearch           Elasticsearch is a powerful open source sear…   1                    [OK]

wreulicke/elasticsearch              elasticsearch                                   0                    [OK]

travix/elasticsearch-kubernetes      To run ElasticSearch in kubernetes and expor…   0                    [OK]

backplane/elasticsearch-curator      Elasticsearch Curator (https://github.com/el…   0                    

 可以看出以上仓库里有很多版本的elasticsearch,看出来第一个是官方的仓库,查看官网版本目前最新的是7.12.0,但是考虑到稳定性,本次安装使用的是7.8.0

安装命令:

docker pull elasticsearch:7.8.0

安装成功以后,使用

docker images

REPOSITORY               TAG       IMAGE ID       CREATED        SIZE

docker101tutorial        latest    27e5e7fc7a51   40 hours ago   27.9MB

docker/getting-started   latest    3ba8f2ff0727   3 weeks ago    27.9MB

hello-world              latest    d1165f221234   5 weeks ago    13.3kB

alpine/git               latest    a939554ad0d0   7 weeks ago    25.1MB

kibana                   7.8.0     df0a0da46dd1   9 months ago   1.29GB

elasticsearch            7.8.0     121454ddad72   9 months ago   810MB

 镜像已经下载成功。

3、启动

命令:

docker run --name elasticsearch -m 2G --restart always -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.0

启动成功后,在浏览器中输入http://localhost:9200

代表安装成功

4、使用

4.1、插入数据

使用postman插入数据

如下是返回的值

{
    "_index": "my-first-index-001",
    "_type": "_doc",
    "_id": "_kO0ungBBLJPJ0UEA6Kd",
    "_version": 1,
    "result": "created",
    "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
    },
    "_seq_no": 2,
    "_primary_term": 1
}

4.2、查询数据

4.2.1、全条件匹配查询

返回的值:

{
    "took": 223,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 3,
            "relation": "eq"
        },
        "max_score": 1,
        "hits": [
            {
                "_index": "my-first-index-001",
                "_type": "_doc",
                "_id": "9kN9tngBBLJPJ0UExaJQ",
                "_score": 1,
                "_source": {
                    "name": "aaron",
                    "age": 30
                }
            },
            {
                "_index": "my-first-index-001",
                "_type": "_doc",
                "_id": "-EONtngBBLJPJ0UEt6Ly",
                "_score": 1,
                "_source": {
                    "name": "chen"
                }
            },
            {
                "_index": "my-first-index-001",
                "_type": "_doc",
                "_id": "_kO0ungBBLJPJ0UEA6Kd",
                "_score": 1,
                "_source": {
                    "name": "哈哈",
                    "age": 3
                }
            }
        ]
    }
}

可以看出,上面有已经插入成功那条数据

4.2.2、特定条件查询

返回的值 

{
    "took": 4,
    "timed_out": false,
    "_shards": {
        "total": 1,
        "successful": 1,
        "skipped": 0,
        "failed": 0
    },
    "hits": {
        "total": {
            "value": 1,
            "relation": "eq"
        },
        "max_score": 1.0925692,
        "hits": [
            {
                "_index": "my-first-index-001",
                "_type": "_doc",
                "_id": "9kN9tngBBLJPJ0UExaJQ",
                "_score": 1.0925692,
                "_source": {
                    "name": "aaron",
                    "age": 30
                }
            }
        ]
    }
}

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值