美文网首页
02-Dokcer安装ElasticSearch

02-Dokcer安装ElasticSearch

作者: Y了个J | 来源:发表于2020-08-12 13:05 被阅读0次

    启动虚拟机

    在设置系统里把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

          本文链接:https://www.haomeiwen.com/subject/wslduhtx.html