02-Dokcer安装ElasticSearch

启动虚拟机

在设置系统里把VirtualBox的内存调大一点,调整到1G,然后执行 vagrant up 启动。
启动成功后执行 vagrant ssh 连接上虚拟机。

下载ealasticsearch和kibana

sudo docker pull elasticsearch:7.4.2
sudo docker pull kibana:7.4.2

配置

free -m   # 查看虚拟机还有多大内存
sudo mkdir -p /mydata/elasticsearch/config
sudo mkdir -p /mydata/elasticsearch/data
su root
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
chmod -R 777 /mydata/elasticsearch/

启动ElasticSearch

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e  "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms128m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2 

在浏览器访问 http://192.168.56.10:9200/ 会出现下面信息。

{
  "name" : "dbb5a93f6439",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "2f7TL90uQWq6b2aPZTvjAQ",
  "version" : {
    "number" : "7.4.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
    "build_date" : "2019-10-28T20:40:44.881551Z",
    "build_snapshot" : false,
    "lucene_version" : "8.2.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

设置开机启动elasticsearch

docker update elasticsearch --restart=always

查看elasticsearch日志

docker logs elasticsearch 或者 docker logs <容器id>

启动kibana:

docker run --name kibana \
-e ELASTICSEARCH_HOSTS=http://192.168.56.10:9200 \
-p 5601:5601 -d kibana:7.4.2

设置开机启动kibana

docker update kibana  --restart=always

测试

查看elasticsearch版本信息:http://192.168.56.10:9200/
显示elasticsearch 节点信息:http://192.168.56.10:9200/_cat/nodes
访问Kibana:http://192.168.56.10:5601/app/kibana

http://192.168.56.10:9200/_cat
查看集群的健康状况:http://localhost:9200/_cat/health?v
查看集群的节点:http://localhost:9200/_cat/?v
查看所有索引:http://localhost:9200/_cat/indices?v

创建一个索引
创建一个名为 customer 的索引。pretty要求返回一个漂亮的json 结果

PUT /customer?pretty

再查看一下所有索引:http://localhost:9200/_cat/indices?v

GET /_cat/indices?v

创建一个文档到customer索引中

PUT /customer/_doc/1?pretty
{
  "name": "John Doe"
}

从customer索引中获取指定id的文档

GET /customer/_doc/1?pretty

查询所有文档

GET /customer/_search?q=*&sort=name.keyword:asc

JSON格式方式

GET /customer/_search
{
  "query": { "match_all": {} },
  "sort": [
    {"name.keyword": "asc" }
  ]
}
索引管理

创建索引
创建一个名为twitter的索引,设置索引的分片数为3,备份数为2。

PUT twitter
{
    "settings" : {
        "index" : {
            "number_of_shards" : 3,
            "number_of_replicas" : 2
        }
    }
}

说明:
默认的分片数是5到1024
默认的备份数是1
索引的名称必须是小写的,不可重名

创建的命令还可以简写为


PUT twitter
{
    "settings" : {
        "number_of_shards" : 3,
        "number_of_replicas" : 2
    }
}

创建mapping映射

PUT twitter
{
   "settings" : {
        "index" : {
            "number_of_shards" : 3,
            "number_of_replicas" : 2
        }
    },
  "mappings": {
    "_doc": {
      "properties": {
        "type": { "type": "keyword" },
        "name": { "type": "text" },
        "user_name": { "type": "keyword" },
        "email": { "type": "keyword" },
        "content": { "type": "text" },
        "tweeted_at": { "type": "date" }
      }
    }
  }
}

创建索引时加入别名定义

PUT twitter
{
    "aliases" : {
        "alias_1" : {},
        "alias_2" : {
            "filter" : {
                "term" : {"user" : "kimchy" }
            },
            "routing" : "kimchy"
        }
    }
}
Get Index 查看索引的定义信息
GET /twitter
GET /twitter/_settings
GET /twitter/_mapping
删除索引
DELETE /twitter
判断索引是否存在
HEAD twitter

修改索引的settings信息
索引的设置信息分为静态信息和动态信息两部分。静态信息不可更改,如索引的分片数。动态信息可以修改。
参考https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules.html#index-modules-settings

修改备份数

PUT /twitter/_settings
{
    "index" : {
        "number_of_replicas" : 2
    }
}
设置回默认值,用null

PUT /twitter/_settings
{
    "index" : {
        "refresh_interval" : null
    }
}
Multi Field 多重字段

当我们需要对一个字段进行多种不同方式的索引时,可以使用fields多重字段定义。如一个字符串字段即需要进行text分词索引,也需要进行keyword 关键字索引来支持排序、聚合;或需要用不同的分词器进行分词索引。
示例:定义多重字段


PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "city": {
          "type": "text",
          "fields": {
            "raw": {
              "type":  "keyword"
            }
          }
        }
      }
    }
  }
}

往多重字段里面添加文档

PUT my_index/_doc/1
{
  "city": "New York"
}

PUT my_index/_doc/2
{
  "city": "York"
}

获取多重字段的值:

GET my_index/_search
{
  "query": {
    "match": {
      "city": "york"
    }
  },
  "sort": {
    "city.raw": "asc"
  },
  "aggs": {
    "Cities": {
      "terms": {
        "field": "city.raw"
      }
    }
  }
}
动态映射

动态映射:ES中提供的重要特性,让我们可以快速使用ES,而不需要先创建索引、定义映射。如我们直接向ES提交文档进行索引:

PUT data/_doc/1
{ "count": 5 }

ES将自动为我们创建data索引、_doc 映射、类型为 long 的字段 count
索引文档时,当有新字段时, ES将根据我们字段的json的数据类型为我们自动加人字段定义到mapping中。

Date detection 时间侦测

所谓时间侦测是指我们往ES里面插入数据的时候会去自动检测我们的数据是不是日期格式的,是的话就会给我们自动转为设置的格式
date_detection 默认是开启的,默认的格式dynamic_date_formats为:[ "strict_date_optional_time","yyyy/MM/dd HH:mm:ss Z||yyyy/MM/dd Z"]

PUT my_index/_doc/1
{
  "create_date": "2015/09/02"
}

GET my_index/_mapping
自定义时间格式:
PUT my_index
{
  "mappings": {
    "_doc": {
      "dynamic_date_formats": ["MM/dd/yyyy"]
    }
  }
}
禁用时间侦测:
PUT my_index
{
  "mappings": {
    "_doc": {
      "date_detection": false
    }
  }
}
Numeric detection 数值侦测,开启数值侦测(默认是禁用的)
PUT my_index
{
  "mappings": {
    "_doc": {
      "numeric_detection": true
    }
  }
}

PUT my_index/_doc/1
{
  "my_float":   "1.0",
  "my_integer": "1"
}

参考链接:
https://mp.weixin.qq.com/s/S5-04qcBvrAl3Q61tW1pzA
https://laowan.blog.csdn.net/article/details/117732167

你可能感兴趣的:(02-Dokcer安装ElasticSearch)