es环境搭建(docker版)

Es单机版

1.创建一个简单的单机版本

docker run --name es -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --net host -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:6.8.9

2.创建存放配置的文件夹

mkdir -p /usr/local/myData/es/config
mkdir -p /usr/local/myData/es/data
mkdir -p /usr/local/myData/es/plugins

3.复制对应的文件夹到指定目录

### 这样是为了方便修改文件如,不用每次都进入docker容器
--------
docker cp es:/usr/share/elasticsearch/config/ /usr/local/myData/es/
docker cp es:/usr/share/elasticsearch/data/ /usr/local/myData/es/
docker cp es:/usr/share/elasticsearch/plugins/ /usr/local/myData/es/

4.删除当前单机es

docker rm -f es

5.启动容器

### 这里的内存大小根据自己的实际情况设置
docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -d  -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v /usr/local/myData/es/config/:/usr/share/elasticsearch/config/ \
-v /usr/local/myData/es/plugins:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data:/usr/share/elasticsearch/data \
--name es elasticsearch:6.8.9

6.Kibana容器创建并连接Es

docker run --name kibana -e ELASTICSEARCH_URL=http://192.168.58.222:9200 -p 5601:5601 -d kibana:6.8.9

Es集群版

1.创建文件夹

mkdir -p /usr/local/myData/es/config
mkdir -p /usr/local/myData/es/data1
mkdir -p /usr/local/myData/es/plugin1
mkdir -p /usr/local/myData/es/data2
mkdir -p /usr/local/myData/es/plugin2

2.创建配置文件

cd /usr/local/myData/es/config
touch es1.yml
vi es1.yml
touch es2.yml
vi es2.yml
Es1:
-----------
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.58.222
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.58.222:9300","192.168.212.252192.168.58.2229301"]
discovery.zen.minimum_master_nodes: 1

Es2:
-----------
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.58.222
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true 
node.data: true  
discovery.zen.ping.unicast.hosts: ["192.168.58.222:9300","192.168.212.252192.168.58.2229301"]
discovery.zen.minimum_master_nodes: 1

3.启动容器

容器1
--------------
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d  -p 9200:9200 -p 9300:9300 \
-v /usr/local/myData/es/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/myData/es/plugins1:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data1:/usr/share/elasticsearch/data \
--name es01 elasticsearch:6.8.9

容器2
--------------
docker run -e ES_JAVA_OPTS="-Xms400m -Xmx400m" -d  -p 9201:9201 -p 9301:9301 \
-v /usr/local/myData/es/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /usr/local/myData/es/plugins2:/usr/share/elasticsearch/plugins \
-v /usr/local/myData/es/data2:/usr/share/elasticsearch/data \
--name es02 elasticsearch:6.8.9

4.创建kibana

docker run --name kibana -p 5601:5601 -it -d -e ELASTICSEARCH_URL=http://192.168.58.222:9200 kibana:6.8.9

测试运行结果
http://192.168.58.222:5601/app/kibana

5.集成IK分词器

  • 集群版本的es下,放置在对应的plugin文件夹下
  • 使用postman测试ik分词器(json格式)
http://192.168.58.222:9200/_analyze

发送的body如下
------------
{
  "analyzer": "ik_smart",
  "text": "苹果"
}

文档映射

预定义文档,使得IK分词器生效

进行文档映射,只有预先定义文档类型,指定对应的ik分词器,才能使得分词器插件生效(最后的文档结构,可以使用springboot整合es后,先用springboot推送到es,然后再替换成ik分词器)

# 获取结构
GET /goods/_mapping
# 删除文档
DELETE  /goods
#定义索引
PUT /goods
#定义文档结构,指定ik分词器
POST /goods/_mapping/goods
{
      "goods": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "@version": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "attribute_list": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "category_id": {
            "type": "long"
          },
          "created_time": {
            "type": "date"
          },
          "detail": {
            "type": "text",
             "analyzer":"ik_smart",
            "search_analyzer":"ik_smart"

          },
          "id": {
            "type": "long"
          },
          "main_image": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "name": {
            "type": "text",
            "analyzer":"ik_smart",
            "search_analyzer":"ik_smart"

          },
          "revision": {
            "type": "long"
          },
          "status": {
            "type": "long"
          },
          "sub_images": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "subtitle": {
            "type": "text",
          "analyzer":"ik_smart",
         "search_analyzer":"ik_smart"

          },
          "updated_time": {
            "type": "date"
          }
        }
      }
}

ES同时支持拼音和中文分词

DELETE  /goods
PUT /goods
{
   "settings": {
        "analysis": {
            "analyzer": {
                "ik_smart_pinyin": {
                    "type": "custom",
                    "tokenizer": "ik_smart",
                    "filter": ["my_pinyin", "word_delimiter"]
                },
                "ik_max_word_pinyin": {
                    "type": "custom",
                    "tokenizer": "ik_max_word",
                    "filter": ["my_pinyin", "word_delimiter"]
                }
            },
            "filter": {
                "my_pinyin": {
                    "type" : "pinyin",
                    "keep_separate_first_letter" : true,
                    "keep_full_pinyin" : true,
                    "keep_original" : true,
                    "limit_first_letter_length" : 16,
                    "lowercase" : true,
                    "remove_duplicated_term" : true 
                }
            }
        }
  }
  
}

  • 指定文档使用的分词器
POST /goods/_mapping/goods
{
   
  
      "goods": {
        "properties": {
          "@timestamp": {
            "type": "date"
          },
          "@version": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "attribute_list": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "category_id": {
            "type": "long"
          },
          "created_time": {
            "type": "date"
          },
          "detail": {
            "type": "text",
             "analyzer":"ik_smart_pinyin",
            "search_analyzer":"ik_smart_pinyin"

          },
          "id": {
            "type": "long"
          },
          "main_image": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "name": {
            "type": "text",
            "analyzer":"ik_smart_pinyin",
            "search_analyzer":"ik_smart_pinyin"

          },
          "revision": {
            "type": "long"
          },
          "status": {
            "type": "long"
          },
          "sub_images": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "subtitle": {
            "type": "text",
          "analyzer":"ik_smart",
         "search_analyzer":"ik_smart"

          },
          "updated_time": {
            "type": "date"
          }
        }
      }
}

参考内容

搭建单机版es

搭建集群版es

posted @ 2021-06-07 09:59  linshj  阅读(632)  评论(0)    收藏  举报