es学习

  • es的简单概念:

es可以更快的获得你想要搜索的数据,先对比一下和mysql的区别:
es中的索引就相当于一个数据库,而类型就是一张表,文档则表示一行数据,一列代表着属性。es在存储的时候则是以json的方式进行存储的。
在这里插入图片描述
es之所以快是因为他维护了一张倒排索引表
在这里插入图片描述
比如把以上5条记录保存到es中,就会维护一张倒排索引表。比如1:红海行动就会被拆分成红海和行动。红海和行动在倒排索引中分别记录着文档1。2:探索红海行动就会被拆分成探索,红海和行动。这样倒排索引中就会分别记录对应的文档2。当我们需要进行检索红海特工行动的时候就会去倒排索引中找到 第1,2,5行。然后看他们对应的文档是哪一个,然后根据相关性得分进行比较。这里3,5比较适合,但是3命中率更高。

  • 下面先安装一下es:
  1. 拉取镜像
docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2
  1. 创建两个文件夹,之后会和docker 相关的配置文件相挂载,以后修改这两个文件夹中的内容,也就修改了docker 中elasticsearch的配置
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
  1. 创建elasticsearch.yml文件,并向其中写入 http.host: 0.0.0.0
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

(注意:如果host: 0.0.0.0 这个冒号后面没有空格,则会在后面启动的时候报错,报错信息如下所示:)
在这里插入图片描述

  1. 启动elasticsearch
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -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
 
解释 
--name elasticsearch :就是为容器起了个名字,叫elasticsearch
-p 9200:9200 : 发送http 请求的时候用的是9200 端口
-p 9300:9300 : es在集群模式下,各节点间通信的端口
-e "discovery.type=single-node"  表示以单节点模式运行
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" 设置运行内存大小,如果不设置, elasticsearch 起来后就会占用全部内存,导致机器卡死
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml 表示设置挂载,即将前面这个elasticsearch.yml 和后面这个elasticsearch.yml 进行一一关联,当修改前面这个文件的时候,后面这个也就修改了
-d elasticsearch:7.4.2 表示用的是 elasticsearch:7.4.2 这个版本的镜像

5.查看启动运行情况

docker ps -a

注意:如果看到没有启动成功
查看日志

docker logs 容器ID

如果是权限问题,执行命令进行赋权

chmod -R 777 /mydata/elasticsearch/
  1. 若之前启动失败,再次运行,并验证运行情况
docker start 容器ID
 
docker ps

访问IP:9200 ,如果可以看到ES版本信息,即安装启动成功

  • 安装kibana:
  1. 拉取镜像
docker pull kibana:7.4.2
  1. 启动运行kibana ip写es对应的ip
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.117.128:9200 -p 5601:5601 -d kibana:7.4.2
  1. 查看启动运行情况
docker ps -a
  1. 如果已经启动起来,浏览器登陆,地址栏输入,安装机器IP:5601(kibana 启动不较慢,要等一会),如果通过浏览器能进入,则说明 kibana 安装成功

  2. 启动不起来报Unable to revive connection: http://192.168.162.139:9200/的问题是因为IP的原因,先办kibana容器删除掉。

// 查看es 的真是ip
docker inspect elasticsearch

在这里插入图片描述

// 修改 kibana 连接es的ip
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://172.17.0.5:9200 -p 5601:5601 -d kibana:7.4.2
交互式的方式进如kibana  修改 ip
docker exec -it kibana sh

在这里插入图片描述

在这里插入图片描述

//自启动
docker update kibana --restart=always

GET _search
{
  "query": {
    "match_all": {}
  }
}

GET /custome/external/1

POST /custome/external/_bulk
{"index":{"_id":"1"}}
{"name":"lsl"}
{"index":{"_id":"2"}}
{"name":"firenay"}


POST /_bulk
{"delete":{"_index":"website","_type":"blog","_id":"123"}}
{"create":{"_index":"website","_type":"blog","_id":"123"}}
{"title":"My first blog post"}
{"index":{"_index":"website","_type":"blog"}}
{"title":"My second blog post"}
{"update":{"_index":"website","_type":"blog","_id":"123"}}
{"doc":{"title":"My second blog post"}}

GET /_cat/indices


GET /bank/account/1


GET /bank/account/_search

GET bank/_search?q=*&sort=account_number:asc


GET bank/_search?q=lastname : Mckenzie&sort=account_number:asc


GET  bank/account/_search
{
    "query" : {
        "match" : {
            "lastname" : "Mckenzie"
        }
    }
}

GET bank/_search
{
  "query": {
    "match_all": {}
    
  }
  , "sort": [
    {
      "account_number": {
        "order": "desc"
      }
    }
  ]
  , "from": 0
  , "size": 5
  , "_source": ["balance", "account_number"]
}




GET bank/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "gender": "M" } }
      ],
      "must_not": [
        { "match": { "state": "KY" } }
      ],
      "should": [
        {
          "match": {
            "lastname": "Wallace"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gte": 10,
            "lte": 38
          }
        }
      }
    } 
  }
}

GET bank/_search
{
  "query": {
    "match": {
      "address": "mill"
    }
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 10
      }
    },
    "ageAvg":{
      "avg": {
        "field": "age"
      }
    },
    "balanceAvg":{
      "avg": {
        "field": "balance"
      }
    }
  }

}

GET bank/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "ageAgg": {
      "terms": {
        "field": "age",
        "size": 100
      },
      "aggs": {
        "avgAgg": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }

}

GET bank/_mapping

GET _cat/indices


PUT /my_index
{
  "mappings": {
    "properties": {
      "age":{"type": "integer"},
      "email": {"type": "keyword"},
      "name":{"type": "text"}
    }
  }
}

PUT /my_index
{
  "mappings": {
    "properties": {
      "age":{"type": "integer"},
      "email": {"type": "keyword"},
      "name":{"type": "text"},
      "name1":{"type": "text"}
    }
  }
}


GET my_index/_mapping


POST /my_index/_bulk
{"index":{"_id":"1"}}
{"age":"12","email":"1532991474@qq.com" ,"name":"lsl"}



GET my_index/_doc/1


官网命令还是很全的。

安装一下中文分词器ik

// 标准分词器对中文不是很友好
POST _analyze
{
  "analyzer": "standard",
  "text": "我很喜欢你"
}

下载对应版本的分词器 解压放到plugins目录下重启就好了

https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.4.2
POST _analyze
{
  "analyzer": "ik_smart",
  "text": "我很喜欢你"
}

POST _analyze
{
  "analyzer": "ik_max_word",
  "text": "我很喜欢你"
}


对于一些流行的语句可以在这里自己配置
在这里插入图片描述

这里我用nginx,先随便安装一个nginx 把里面的目录结构copy出来

docker run -p 80:80 --name nginx -d nginx:1.10
docker container cp nginx:/etc/nginx .
吧nginx 删除
//重新运行启动
docker run -p 80:80 --name nginx -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/logs:/usr/log/nginx -v /mydata/nginx/conf:/etc/nginx -d nginx:1.10

在nginx中配置自定义的分词
在这里插入图片描述
在这个配置里面填写自己分词的位置
在这里插入图片描述
把这个nginx 中配置的分词地址设置上
在这里插入图片描述

api地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于学习Elasticsearch,我可以给你一些指导。Elasticsearch是一个开源的分布式搜索和分析引擎,主要用于快速、实时地存储、搜索和分析大量数据。下面是一些学习Elasticsearch的步骤: 1. 了解基本概念:开始学习Elasticsearch之前,你需要了解一些基本的概念,比如索引(index)、类型(type)、文档(document)、字段(field)等。这将帮助你更好地理解Elasticsearch的工作原理。 2. 安装和配置:根据你的操作系统,你可以从Elasticsearch官方网站下载并安装合适的版本。安装完成后,你需要进行适当的配置,如设置集群名称、分配内存等。 3. 学习REST API:Elasticsearch提供了丰富的REST API,用于与其进行交互。了解如何使用这些API来索引、搜索和删除数据是学习Elasticsearch的重要一步。 4. 索引和搜索数据:学习如何创建索引、添加文档以及执行搜索操作是使用Elasticsearch的关键。掌握查询语法、过滤器、聚合操作等功能可以帮助你更有效地使用Elasticsearch。 5. 数据建模和分析:学习如何设计合适的数据模型和映射,以及如何使用Elasticsearch进行数据分析和可视化是提高你的技能的重要一步。 6. 扩展和优化:学习如何在生产环境中扩展和优化Elasticsearch集群是非常重要的。了解如何分片、复制、调优性能等将帮助你更好地管理和维护你的数据。 7. 学习资源:除了官方文档,还有很多优秀的学习资源可供参考,如书籍、教程和在线课程等。利用这些资源可以更系统地学习和掌握Elasticsearch。 希望这些步骤能对你学习Elasticsearch有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值