ElasticSearch

安装ElasticSearch

docker安装ES&Kibana(图形化界面)

version: '3.1'
services:
  elasticsearch:
    image: daocloud.io/library/elasticsearch:6.8.10
    restart: always
    container_name: elasticsearch
    ports: 
      - 9200:9200
    volumes:
      - /opt/docker_es/config/jvm.options:/usr/share/elasticsearch/config/jvm.options
  kibana:
    image: daocloud.io/library/kibana:6.8.10
    restart: always
    container_name: kibana
    ports: 
      - 5601:5601
    environment:
      - elasticsearch_url=http://192.168.232.128:9200
    depends_on:
      - elasticsearch

运行 docker-compose up -d
启动时间较长,查看日志 docker-compose logs -f

运行失败,因为虚拟机内存不足

我这边换了个方式启动 不使用docker-compose 使用docker 下载安装
关闭 docker-compose down
查看是否有镜像,没有需下载 docker images
docker run方式启动可直接设置jvm
docker run -p 9200:9200 -e “discovery.type=single-node” -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d --name elseticksearch ffa
能访问则成功
在这里插入图片描述
安装kibana

docker run -d -p 5601:5601 -e ELASTICSEARCH_URL=http://192.168.232.128:9200 --name kibana 37b
能访问则成功 http://192.168.232.128:5601
在这里插入图片描述

安装IK分词器

链接 https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.10/elasticsearch-analysis-ik-6.8.10.zip
进入es容器
docker exec -it 43s bash
cd bin
下载IK插件
./elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.8.10/elasticsearch-analysis-ik-6.8.10.zip
在这里插入图片描述
重启es
docker ps
docker restart 4d
在这里插入图片描述
ES结构图
ES - 索引Index(数据库)—(分片备份)—类型Type(表)——文档document(列)——属性Field
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建索引指定类型

#创建索引,指定数据类型
PUT /book
{
  "settings": {
    #分片数
    "number_of_shards": 5,
    #备份数
    "number_of_replicas": 1
  },
    #指定数据类型
 "mappings": {
    #类型 Type
   "novel":{
    #文档存储的field
     "properties":{
       #field属性名
       "name":{
         #类型
         "type":"text",
         #指定分词器
         "analyzer":"ik_max_word",
         #指定当前的field可以被作为查询的条件
         "index":true,
         #是否需要额外存储
         "store":false
       },
       "author":{
         "type":"keyword"
       },
       "count":{
         "type":"long"
       },
       "on-sale":{
         "type":"date",
           #指定时间类型的格式化方式
         "format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
       },
        "descr":{
          "type":"text",
          "analyzer":"ik_max_word"
       }
     }
   }
 }
}
#添加文档,手动指定id
PUT /book/novel/1
{
  "name":"红楼梦",
  "author":"曹雪芹",
  "count":10000000,
  "on-sale":"2501-01-01",
  "descr":"中国古代章回体长篇小说,中国古典四大名著之一,一般认为是清代作家曹雪芹所著。"
}

#修改文档,使用doc 方式
POST /book/novel/1/_update
{
  "doc":{
    "count":566666
  }
}

#根据id删除文档
DELETE /book/novel/3mEnk3MBaSKoGN4T2olw 

java连接ES

导入依赖

		<!--elasticsearch-->
        <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>6.8.10</version>
        </dependency>
        <!--elasticsearch高级API-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>6.8.10</version>
        </dependency>
 public static RestHighLevelClient getClient(){
        //  创建 HttpHost
        HttpHost httpHost = new HttpHost("192.168.232.128",9200);

        // 创建 RestClientBuilder
        RestClientBuilder builder = RestClient.builder(httpHost);

        // 创建 RestHighLevelClient
        RestHighLevelClient client = new RestHighLevelClient(builder);

        return client;
    }
 RestHighLevelClient client =  EsClient.getClient();
    String index = "person";
    String type="man";
    
    /**
     * 创建索引
     */
    @Test
    public void createIndx() throws Exception{
        // 1.准备关于索引的setting
        Settings.Builder settings = Settings.builder()
                .put("number_of_shards", 2)
                .put("number_of_replicas", 1);

        // 2.准备关于索引的mapping
        XContentBuilder mappings = JsonXContent.contentBuilder()
                .startObject()
                    .startObject("properties")
                        .startObject("name")
                            .field("type", "text")
                        .endObject()
                        .startObject("age")
                            .field("type", "integer")
                        .endObject()
                        .startObject("birthday")
                            .field("type", "date")
                        .field("format", "yyyy-MM-dd")
                        .endObject()
                    .endObject()
                .endObject();
        // 3.将settings和mappings 封装到到一个Request对象中
        CreateIndexRequest request = new CreateIndexRequest(index)
                .settings(settings)
                .mapping(type,mappings);
        // 4.使用client 去连接ES
        CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

        System.out.println("response:"+response.toString());
    }


    /**
     * 检查索引存在
     */
    @Test
    public void existTest() throws IOException {
        //  1.准备request 对象
        GetIndexRequest request = new GetIndexRequest(index);
        // 2.通过client 去 操作
        boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);
        // 3输出结果
        System.out.println(exists);
    }
    /**
     * 删除索引
     */
      @Test
    public void testDelete() throws IOException {
        // 1.获取request

        DeleteIndexRequest request = new DeleteIndexRequest(index);

        //  2.使用client 操作request
        AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
        //  3.输出结果
        System.out.println(delete.isAcknowledged());
    }

学习视频链接:https://www.bilibili.com/video/BV1Qz411e7yx?p=11
友情文档链接:https://github.com/changxuepeng/ElasticsearchStudy/blob/master/ES%E7%AC%94%E8%AE%B0/ES%E7%AC%94%E8%AE%B0.md

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值