• 在运行或启动elasticsearch容器前,先在宿主机上执行 sysctl -w vm.max_map_count=262144:
  1. 解决“ max virtual memory areas vm.maxmapcount [65530] is too low ”错误问题。
  2. 解决容器中/etc/sysctl.conf不可写,sysctl -w vm.max_map_count=262144无效问题。
  3. 本人也尝试过在docker run 时使用--sysctl vm.max_map_count=262144选项,但提示not whitelisted。
  • 关于JAVA的安装,本机采用default-jre 。参考 How To Install Java with Apt-Get on Debian 8,不要求设置环境变量CLASSPATH:

    export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

    也不要求设置环境变量PATH:

    export PATH=$JAVA_HOME/bin:$PATH

    只需要设置环境变量JAVA_HOME:红色字体部分根据具体版本进行替换

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  • 聚合:参考ElasticsearchDSL / Aggregation

安装Elasticsearch

1. 编写Dockerfile:

FROM ubuntu
MAINTAINER cenze <272666745@qq.com>

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ADD conf/sources.list /etc/apt/

RUN apt-get update \
&& apt-get install -y apt-utils vim unzip default-jre

ENV ESEARCH /usr/local/elasticsearch-6.0.1

ADD packages/elasticsearch-6.0.1.zip /usr/local/
RUN  unzip /usr/local/elasticsearch-6.0.1 -d /usr/local \
&& adduser --disabled-login --disabled-password --no-create-home es

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
ENV PATH $ESEARCH/bin:$PATH
ADD conf/elasticsearch.yml /usr/local/elasticsearch-6.0.1/config/
RUN chown -R es:es /usr/local/elasticsearch-6.0.1

EXPOSE 9200 9300

CMD ["elasticsearch"]

2. build镜像:

sudo docker build -t cenze/esearch -f Dockerfile-ESearch .

3. 以非root用户run容器,否则elasticsearch无法启动:

: -p : --name esearch --user es cenze/esearch

4. curl http://localhost:9200:

{
  "name" : "D_5lS8A",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "wS2pUZ95TC2jCRJ5GMvNsA",
  "version" : {
    "number" : "6.0.1",
    "build_hash" : "601be4a",
    "build_date" : "2017-12-04T09:29:09.525Z",
    "build_snapshot" : false,
    "lucene_version" : "7.0.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

安装中文分词插件ik

也可以是smartcn。ik的版本要与Elasticsearch版本匹配,本人用的6.0.1:

es@053b32506e8d:/$ elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.0.1/elasticsearch-analysis-ik-6.0.1.zip
es@053b32506e8d:/$ elasticsearch-plugin list
analysis-ik

测试中文关键词搜索

下列操作参考 https://github.com/medcl/elasticsearch-analysis-ik/

1. 创建索引:curl -X PUT http://localhost:9200/test/group。

2. mapping:

curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/_mapping -d'
{
        "properties": {
            "content": {
                "type": "text",
                "analyzer": "ik_max_word",
                "search_analyzer": "ik_max_word"
            }
        }

}'

3. 索引多个文档:

curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/1 -d'
{"content":"美国留给伊拉克的是个烂摊子吗"}
'
curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/2 -d'
{"content":"公安部:各地校车将享最高路权"}
'
curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/3 -d'
{"content":"中韩渔警冲突调查:韩警平均每天扣1艘中国渔船"}
'
curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/4 -d'
{"content":"中国驻洛杉矶领事馆遭亚裔男子枪击 嫌犯已自首"}
'

4. 搜索测试:

curl -XPOST -H'content-type: application/json' http://localhost:9200/index/fulltext/_search  -d'
{
    "query" : { "match" : { "content" : "中国" }},
    "highlight" : {
        "pre_tags" : ["<tag1>", "<tag2>"],
        "post_tags" : ["</tag1>", "</tag2>"],
        "fields" : {
            "content" : {}
        }
    }
}
'

Docker笔记四:Elasticsearch实例部署的更多相关文章

  1. AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署

    一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...

  2. Docker笔记(四):Docker镜像管理

    原文地址:http://blog.jboost.cn/2019/07/16/docker-4.html 在Docker中,应用是通过容器来运行的,而容器的运行是基于镜像的,类似面向对象设计中类与对象的 ...

  3. (四) Docker 使用Let's Encrypt 部署 HTTPS

    参考并感谢 周花卷 https://www.jianshu.com/p/5afc6bbeb28c 下载letsencrypt镜像(不带tag标签则表示下载latest版本) docker pull q ...

  4. 官网实例详解-目录和实例简介-keras学习笔记四

    官网实例详解-目录和实例简介-keras学习笔记四 2018-06-11 10:36:18 wyx100 阅读数 4193更多 分类专栏: 人工智能 python 深度学习 keras   版权声明: ...

  5. ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    http://www.cnblogs.com/denny402/p/5852983.html ensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试   刚开始学习tf时,我们从 ...

  6. 深入浅出Docker(四):Docker的集成测试部署之道

    1. 背景 敏捷开发已经流行了很长时间,如今有越来越多的企业开始践行敏捷开发所提倡的以人为中心.迭代.循序渐进的开发理念.在这样的场景下引入Docker技术,首要目的就是使用Docker提供的虚拟化方 ...

  7. docker swarm overlay stack 服务部署记录

    项目xxx(后端),xxx-ui前端(前后端分离的项目) 依赖mysql,elasticsearch.分别制作了四个镜像来做这件事.希望可以制作跨主机的部署,使用了swarm,以下是学习记录. 参考 ...

  8. Docker 笔记学习

    文章目录 概述 CentOS7 Docker 安装 启动 Docker 后台服务 镜像加速 Docker常用命令 如何创建一个镜像 存储和载入镜像 上传镜像 容器的基本操作 创建容器 终止容器 如何进 ...

  9. Docker笔记--镜像&基于GO项目创建Docker镜像

    Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...

随机推荐

  1. 【经验分享】Trachtenberg system(特拉亨伯格速算系统)

    二战期间,俄国的数学家Jakow Trachtenberg(1888-1953)被关进纳粹集中营,在狱中,他开发出了一套心算算法,这套算法后来被命名为Trachtenberg(特拉亨伯格)速算系统. ...

  2. Flex 布局实例

    如图: 代码如下: <!DOCTYPE HTML> <html> <meta charset="utf-8"> <head> < ...

  3. return flase 作用

    调用return false的时候,他实际上做了三件事   event.preventDefault();     禁止默认行为   event.stopPropagation();   阻止冒泡   ...

  4. Problem B: 开个餐馆算算账

    Description 小明创业了!他开了一家餐馆,每天客人还挺多的.每天下班后,他都要算算今天总共收入多少钱,但是手工算太麻烦了,所以他来向你求助了. Input 第1行N>0,表示餐馆提供N ...

  5. Lambda转sql部分代码保存

    public class SqlExpressionTree { public string GetQuerySql<T>(Expression<Func<T, bool> ...

  6. How to Quickly Create a Copy of a Table using Transact-SQL

    The easiest way to create a copy of a table is to use a Transact-SQL command. Use SELECT INTO to ext ...

  7. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

  8. [转载] Java NIO教程

    转载自并发编程网 – ifeve.com http://ifeve.com/java-nio-all/ 关于通道(Channels).缓冲区(Buffers).选择器(Selectors)的故事. 从 ...

  9. Mac_Homebrew

    Homebrew作为OS X上强大的包管理器,为系统软件提供了非常方便的安装方式,独特式的解决了包的依赖问题,并不再需要烦人的sudo,一键式编译,无参数困扰,真的,你值得拥有. brew 的安装:  ...

  10. linux如何查看端口被谁占用

    1.查看端口是否被占用 [guosong@alice48 main]$ netstat -nlp|grep 6184 (Not all processes could be identified, n ...