Elasticsearch系列——kibana安装、elasticsearch-head安装、es安装插件、倒排索引、索引操作(数据库)、映射管理(类型)(表)、文档基本增删查、文档查询、模糊查询

文章目录

昨日回顾

# django,flask,sanic,fastapi
# net/http的包,封装好了
# go 语言的beego框架,gin,echo
# beego:缓存,orm,session,日志内置(中文)
	-整体的设计理念,都源自django
    -bee工具(创建,允许项目)
    -main.go
    -到项目目录下:go build
# gin:文档,gorm(beego的orm)
	-路由
    -session 
    -表单验证(第三方模块)

# net/http包,可以做http客户端(爬虫),http服务端(web服务),beego,gin基于它写的
# template包,官方模板渲染的包


# es介绍
	-java开发,基于Lucene,封装,做成服务,通过resful接口实现调用
    -es和Solr,新型互联网都是es
    -es核心概念
    	-集群
        -节点
        -分片(es都有了)
        -副本
        -全文检索
    -大数据量的搜索:近实时,分析
    -跟传统mysql比较
    	-数据库             ----索引
        -表                ----类型(es 6以后,一个索引下只能有一个类型,7以后,完全不允许)
        -一行行数据         ----文档
        -字段属性           ----映射(mapping)
    -haystack:只支持6之前的版本(django框架中的全文检索扩展)
    	-es,Solr,Whoosh(python写的全文搜索框架,简单,不需要额外安装软件)
    -elk:
    	-elasticsearch+Logstash+kibana
# 中间件
	-(django中间件)
    -服务器中间件(uwsgi)
    -消息队列中间件(rabbitmq)
    -数据库中间(Mycat,分库分表,集群(mysql官方不支持集群))
    
    
# es安装
	-任何平台都需要装jdk
    	-window一路下一步
        -mac:一路下一步
     -java -version
    	1.8以上(java15 ,85%以上的公司还在用1.8)
    -官网把es对于平台的版本的zip下载下来,解压
    -bin路径下指向elasticsearch可执行文件
    -http://127.0.0.1:9200/

1 kibana安装(postman)

1 客户端:浏览器,postman,kibana,elasticsearch-head(没有桌面版客户端)

2 官方提供的
	-Kibana 是一款开源的数据分析和可视化平台
    -Kibana一定要跟es版本对应,咱们用的都是7.5.0
3 解压,就可以运行
4 连接es,需要配置
	-修改kibana配置
    # kibana监听的端口和地址
    server.port: 5601
    server.host: "127.0.0.1"
    server.name: lqz
    # 连接哪个es
    elasticsearch.hosts: ["http://localhost:9200/"]

2 elasticsearch-head安装

1 第三方开发的一个es客户端(nodjs开发的,装node环境)
2 下载,解压
3 npm install  安装依赖
4 npm run serve 跑起来
5 会出现跨域,修改es配置
    http.cors.enabled: true
    http.cors.allow-origin: "*"
6 浏览器输入
	http://localhost:9100/

3 es安装官方,第三方插件

# 三种安装方式
# 推荐用第三种
 **第一种:命令行**
bin/elasticsearch-plugin install [plugin_name]
# bin/elasticsearch-plugin install analysis-smartcn  安装中文分词器

**第二种:url安装**

bin/elasticsearch-plugin install [url]
#bin/elasticsearch-plugin install https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-smartcn/analysis-smartcn-6.4.0.zip

**第三种:离线安装**
#https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-smartcn/analysis-smartcn-6.4.0.zip
#点击下载analysis-smartcn离线包
#将离线包解压到ElasticSearch 安装目录下的 plugins 目录下
#重启es。新装插件必须要重启es
​```

**注意:插件的版本要与 ElasticSearch 版本要一致**

3 倒排索引

1 倒排索引:对文章进行分词,对每个词建立索引,由于这样建,会出现索引爆炸,索引索引跟标题建关系,标题再跟文章建索引,如下:
	分词---文章建立索引                             |

| 今天(索引)    | (文章1,<2,10>,2) (文章3,<8>,1)       |
| 星期天(索引) | (文章2,<12,25,100>,3)                 |
| 出去玩(索引) | (文章5,<11,24,89>,3)(文章1,<8,19>,2) |

今天出现在哪个文章,出现的位置和出现的次数

4 索引操作(数据库)

1 新建索引
PUT lqz2
{
  "settings": {
    "index":{
      "number_of_shards":5,
      "number_of_replicas":1
    }
  }
}

# 新建索引
PUT lqz2
{
  "settings": {
    "index":{
      "number_of_shards":5,
      "number_of_replicas":1
    }
  }
}
PUT lqz


# 查看索引
GET lqz2/_settings
GET lqz/_settings
GET _all/_settings

GET lqz,lqz2/_settings
GET _settings


# 修改索引(一般不太用,只能用来修改副本数量)
#修改索引副本数量为2  分片的数量一开始就要定好
# 副本数量可以改(有可能会出错)
PUT lqz/_settings
{
  "number_of_replicas": 2
}

PUT  _all/_settings
{
"index": {
  "blocks": {
    "read_only_allow_delete": false
    }
  }
}



# 删除索引
DELETE lqz


5 映射管理(类型)(表)

#1  在Elasticsearch 6.0.0或更高版本中创建的索引只包含一个mapping type。 在5.x中使用multiple mapping types创建的索引将继续像以前一样在Elasticsearch 6.x中运行。 Mapping types将在Elasticsearch 7.0.0中完全删除



##索引如果不创建,只有插入文档,会自动创建

# 创建映射(类型,表)
PUT books
{
  "mappings": {
    "properties":{
      "title":{
        "type":"text",
        "analyzer": "ik_max_word"
      },
      "price":{
        "type":"integer"
      },
      "addr":{
        "type":"keyword"
      },
      "company":{
        "properties":{
          "name":{"type":"text"},
          "company_addr":{"type":"text"},
          "employee_count":{"type":"integer"}
        }
      },
      "publish_date":{"type":"date","format":"yyy-MM-dd"}
      
    }
    
  }
}



###查看映射
GET lqz/_mapping
GET _all/_mapping


# 特殊说明索引映射都不存在,也可以插入文档
PUT lqz1/_doc/1
{
  "title":"白雪公主和十个小矮人",
  "price":"99",
  "addr":"黑暗森里",
  "publish_date":"2018-05-19",
  "name":"lqz"
}
# 查看索引
GET lqz/_settings
#查看映射
GET lqz/_mapping

6 文档基本增删查改(一行一行数据)

# 1 插入文档
PUT books/_doc/1
{
  "title":"大头儿子小偷爸爸",
  "price":100,  
  "addr":"北京*",
  "company":{
    "name":"我爱北京*",
    "company_addr":"我的家在东北松花江傻姑娘",
    "employee_count":10
  },
  "publish_date":"2019-08-19"
}

PUT books/_doc/2
{
  "title":"白雪公主和十个小矮人",
  "price":"99", #写字符串会自动转换
  "addr":"黑暗森里",
  "publish_date":"2018-05-19"
}

PUT books/_doc/3
{
  "title":"白雪公主和十个小矮人",
  "price":"99", #写字符串会自动转换
  "addr":"黑暗森里",
  "publish_date":"2018-05-19",
   "name":"lqz"
}



# 查询文档
GET lqz/_doc/1

# 修改文档两种方式
# 第一种
PUT lqz/_doc/1
{
  "name":"顾老二",
  "age":30,
  "from": "gu",
  "desc": "皮肤黑、武器长、性格直",
  "tags": ["黑", "长", "直"]
}
# 第二种(局部修改)
POST lqz/_doc/1/_update
{
  "doc": {
    "desc": "皮肤很safasdfsda黄,武器很长,性格很直",
    "tags": ["很黄","很长", "很直"]
  }
}



# 删除文档
DELETE lqz/_doc/4

7 文档查询

###查询字符串
# 查询from字段是gu的所有人
GET lqz/_doc/_search?q=from:gu
# 查询age是22的人
GET lqz/_doc/_search?q=age:22

GET lqz/_doc/_search?q=desc:不知道
    
    
    
###结构化查询

GET lqz/_doc/_search
{
  "query": {
    "match": {
      "from": "gu"
    }
  }
}

GET lqz/_doc/_search
{
  "query": {
    "match": {
      "from":"gu"
    }
  }
}

8 模糊查询

match_all:查询所有
match_phrase:短语查询

GET t1/doc/_search
{
  "query": {
    "match_phrase": {
      "title": {
        "query": "中国世界",
        "slop": 2  # 中国和世界之间最多间隔2个字符
      }
    }
  }
}


上一篇:拓端tecdat|R语言Copula估计边缘分布模拟收益率计算投资组合风险价值VaR与期望损失ES


下一篇:浅谈MySQL同步到ElasticSearch的几种方式及其优缺点