elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令

这篇具有很好参考价值的文章主要介绍了elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

es基本原理及使用kibana操作es的常见命令

一、es的基本原理与基础概念

1.1 倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted
index)。带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。
如图
es根据id查询数据,elasticsearch,elasticsearch,大数据

1.2 索引 index

一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户 数据的索引,另一个产品目录的索引,还有一个订单数据的索引
一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应 于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字
类似于mysql中的库的概念,不同的是es的数据是存于索引,mysql是存于库下面的表

1.3 集群Cluster

一个集群就是由一个或多个服务器节点组织在一起,共同持有整个的数据,并一起提供索引和搜索功能。一个Elasticsearch集群有一个唯一的名字标识,这个名字默认就是”elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群。

1.4 节点Node

集群中包含很多服务器,一个节点就是其中的一个服务器。作为集群的一部分,它存储数据,参与集群的索引和搜索功能

1.5 分片

分片一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10亿文
档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或者单个节点 处理搜索请求,响应太慢 为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些份就叫 做分片当创建一个索引的时候,可以指定你想要的分片的数量 每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以被放置 到集群中的任何节点上 分片很重要,主要有两方面的原因
1.允许水平分割/扩展你的内容容量
2.允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量
原则:分片数要配置成集群节点数的倍数,且不超过3倍,业务索引每个分片不超过30GB。

1.6 副本

在一个网络 /
云的环境里,失败随时都可能发生,在某个分片/节点不知怎么的就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许你创建分片的一份或多份拷贝,这些拷贝叫做复制分片(副本)。
副本之所以重要,有两个主要原因 1) 在分片/节点失败的情况下,提供了高可用性。
注意到复制分片从不与原/主要(original/primary)分片置于同一节点上是非 常重要的 2)
扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行 每个索引可以被分成多个分片。一个索引有0个或者多个副本
一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数量可以 在索引
在索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变分片的数量,也就是创建索引的时候就创建分片
例如:某es集群有3个节点

PUT eslog
{
	"settings":{
		"number_of_shards":3,
		"number_of_replicas":1
	}
}
1.7 映射(Mapping)

mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等。这些都是映射里面可以设置的,其它就是处理ES里面数据的一些使用规则设置也叫做映射,按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能更好。

GET my_index/_mapping

设置

创建新的索引并设置mapping信息

PUT user
{
  "mappings": {
    "properties": {
      "address": {
        "type": "text",
        "index": false
      },
      "age": {
        "type": "long"
      },
      "name": {
        "type": "text"
      }
    }
  }
1.8 字段类型

es字段类型设置可选为
es根据id查询数据,elasticsearch,elasticsearch,大数据
keyword与text的区别
es根据id查询数据,elasticsearch,elasticsearch,大数据
keyword 映射 只能精准查询, 不能分词查询,能聚合、 排序、过滤。term是精确查找,但只支持keyword类型
text 映射 能模糊查询, 能分词查询,不能聚合、排 序

二、使用kibana操作es的常见命令

2.1 基础命令

#所有节点 GET /_cat/nodes/
#查看主节点 GET /_cat/master
#查看健康状况 GET /_cat/health
#查看所有索引 GET /_cat/indices
#查看所有索引及数据量 GET /_cat/indices?v
#查看索引数据 GET /eslog/_search
结果说明:
es根据id查询数据,elasticsearch,elasticsearch,大数据
#查看分词器装没有
#最大分词
GET _analyze { "analyzer":"ik_max_word", "text":"我是中国人" }
#最小分词
GET _analyze { "analyzer":"ik_smart", "text":"我是中国人" }
#所有节点
GET /_cat/nodes/ dilmrt代表全部权限
添加索引 PUT /eslog
删除索引 DELETE /eslog
查看索引 GET /eslog

创建索引并指定字段类型及分词类型:

PUT user
{
  "mappings": {
    "properties": {
      "address": {
      # keyword类型不能指定分词类型,因为它存的是一个整体,不能分词搜索
        "type": "keyword"
       
      },
      "age": {
        "type": "long"
      },
      "name": {
        "type": "text",
		"analyzer": "ik_max_word"
      }
    }
  }
2.2 索引数据的操作
2.2.1 建立索引并插入数据
创建索引,并插入数据
PUT /eslog

POST /eslog/_doc
 { "name": "长沙", 
 "sex": 0, 
 "age": 19, 
 "address": "长沙岳麓山"
 }
2.22 索引数据的增删改查

1、当前索引 doc类型的所有文档
GET /eslog/_search
格式: GET /索引名称/类型/_search
举例: GET /eslog/_search
类似: SQL: select * from eslog

#2、条件查询, 如要查询age等于28岁的 _search?q=:**
GET /eslog/_search?q=age:25
格式: GET /索引名称/类型/_search?q=:**
举例: GET /es_db/_search?q=age:28
类似: SQL: select * from student where age = 28

3、范围查询, 如要查询age在25至26岁之间的 _search?q=[** TO **] 注 意: TO 必须为大写
GET /eslog/_doc/_search?q=age[25 TO 26]
格式: GET /索引名称/类型/_search?q=***[25 TO 26]
举例: GET /es_db/_search?q=age[25 TO 26]
类似: SQL: select * from student where age between 25 and 26

4、根据多个ID进行批量查询 _mget ,注意:这里的id是指es的生成的id(若未指定)不是数据里的id
GET /eslog/_mget { "ids":["3","2"] }
格式: GET /索引名称/类型/_mget
举例: GET /es_db/_mget { “ids”:[“1”,“2”] }
类似:SQL: select * from student where id in (1,2)

5、查询年龄小于等于28岁的 :<= (同理:>,<,>=,<=)
GET /eslog/_search?q=age:<=28
格式: GET /索引名称/类型/_search?q=age:<=**
举例:GET /es_db/_search?q=age:<=28
类似: SQL: select * from student where age <= 28

6、分页查询 from=&size= (注意:from+size不能超过10000(默认值,可以手动修改))
GET /eslog/_search?q=age[25 TO 26]&from=0&size=1
格式: GET /索引名称/类型/_search?q=age[25 TO 26]&from=0&size=1
举例: GET/es_db/_search?q=age[25 TO 26]&from=0&size=1
类似:SQL: select * from student where age between 25 and 26 limit 0, 1

7、对查询结果只输出某些字段 _source=字段,字段
GET /eslog/_search?_source=name,age
格式: GET /索引名称/类型/_search?_source=字段,字段
举例: GET /es_db/_search?_source=name,age
类似: SQL: select name,age from student

8、对查询结果排序 sort=字段:desc/asc
GET /eslog/_search?sort=age:asc
格式: GET /索引名称/类型/_search?sort=字段 desc
类似: SQL: select * from student order by age desc

2.23 DSL语言高级查询

1、term 根据名称精确查询姓名 term, term查询不会对字段进行分词查询,会 采用精确匹配 注意: 采用term精确查询, 查询字段映射类型属于为keyword

 POST /eslog/_search  {  
 "query": 
     {  "term": 
     	{ 
     		"name": "admin"
       } 
     }    
   } 
 类似: SQL: select * from student where name = 'admin'

1.1 多关键字精确查询

 POST /eslog/_search 
 {
  "query": {
    "terms": {
      "name": ["zhangsan","lisi"]
    }
  }
}
 类似: SQL: select * from student where name in ('zhangsan','lisi')

2、match 根据备注信息模糊查询 match, match会根据该字段的分词器,进行分 词查询,多个词条之间是or的关系

 POST /eslog/_search 
 { 
   "from": 0, 
   "size": 2, 
   "query": { 
   "match": { 
     "address": "广州" 
     } 
   } 
 }
 类似: SQL: select * from user where address like '%广州%' limit 0, 2

3、 multi_match 多字段模糊匹配查询与精准查询 multi_match

POST /eslog/_search 
{  
  "query":{  
    "multi_match":{  
      "query":"长沙",  
      "fields":["address","name"]  
    }  
  } 
}

类似:SQL: select * from student where name like '%长沙%' or address like '%长沙%'

注:json请求字符串中部分字段的含义
range:范围关键字
gte 大于等于
lte 小于等于
gt 大于
lt 小于
now 当前时间

  1. range范围查询
POST /eslog/_search 
{ 
  "query" : { 
    "range" : { 
      "age" : { 
        "gte":25, 
        "lte":28 
      }
    }
  } 
}
类似于:SQL: select * from user where age between 25 and 28

5.from+ size分页、输出字段、排序综合查询

POST /eslog/_search 
{ 
  "query" : { 
    "range" : { 
      "age" : { 
        "gte":25, 
        "lte":28 
        } 
      } 
    }, 
    "from": 0, 
    "size": 2, 
    "_source": ["name", "age", "book"], 
    "sort": {"age":"desc"} 
    }
  1. filter过滤器方式查询,它的查询不会计算相关性分值,也不会对结果 进行排序, 因此效率会高一点,查询的结果可以被缓存。
POST /eslog/_search 
{ 
  "query" : { 
    "bool" : { 
      "filter" : { 
        "term":{ 
          "age":25 
          } 
      } 
    } 
  } 
}
  1. _delete_by_query按条件删除
POST eslog/_delete_by_query
{
	"query":{
		"match":{
			"sensorName":"一体化设备"
		}
	}
}

8.bool/filter/range复杂删除里面的条件跟查询条件一样的,例如按时间范围删除

POST eslog/_delete_by_query
{
	"query":{
		"bool":{
			"filter":[
			  {
			    "range":{
			      "loginTimeMills":{
			        "from":1628004803000,
			        "to":1629957806000
			      }
			    }
			  }
			  ]
		}
	}
}

keyword 与 text 映射类型的区别 将 book 字段设置为 keyword 映射 (只能精准查询, 不能分词查询,能聚合、 排序、过滤)将 book 字段设置为 text 映射 (能模糊查询, 能分词查询,不能聚合、排 序)。
#查看es索引字段的类型(keyword或者text)
GET /eslog/_mapping?pretty

9.过滤返回字段
includes:来指定想要显示的字段
excludes:来指定不想要显示的字段

POST /eslog/_search{
  "_source": {
    "includes": ["name","nickname"]
  },  
  "query": {
    "terms": {
      "nickname": ["zhangsan"]
    }
  }
}

10 .bool组合查询 bool把各种其它查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合

POST /student/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "zhangsan"
          }
        }
      ],
      "must_not": [
        {
          "match": {
            "age": "40"
          }
        }
      ],
      "should": [
        {
          "match": {
            "sex": "男"
          }
        }
      ]
    }
  }
}

11.模糊查询 fuzzy
返回包含与搜索字词相似的字词的文档。
编辑距离是将一个术语转换为另一个术语所需的一个字符更改的次数。这些更改可以包括:
更改字符(box → fox)
删除字符(black → lack)
插入字符(sic → sick)
转置两个相邻字符(act → cat)
fuzzy 查询会用到两个很重要的参数,
fuzziness:表示输入的关键字通过几次操作可以转变成为ES库里面的对应field的字段
操作是指:新增一个字符,删除一个字符,修改一个字符,每次操作可以记做编辑距离为1,如中文集团到中威集团编辑距离就是1,只需要修改一个字符;该参数默认值为0,即不开启模糊查询,同样,如果fuzziness值在这里设置成2,会把编辑距离为2的东东集团也抓出来。
prefix_length:表示限制输入关键字和ES对应查询field的内容开头的第n个字符必须完全匹配,不允许错别字匹配。如这里等于1,则表示开头的中字必须匹配,不匹配则不返回,默认值也是0。加大prefix_length的值可以提高效率和准确率。

GET /eslog/_search
{
  "query": {
    "fuzzy": {
      "address": {
        "value": "广州",
        "fuzziness": 1
      }
    }
  }
}

12.排序sort
sort 可以让我们按照不同的字段进行排序,并且通过order指定排序的方式。desc降序,asc升序。

GET /eslog/_search
{
  "query": {
    "match": {
      "address": "广州"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

13.高亮查询 highlight
在使用match查询的同时,加上一个highlight属性:
pre_tags:前置标签
post_tags:后置标签
fields:需要高亮的字段
title:这里声明title字段需要高亮,后面可以为这个字段设
fragment_size :指定高亮数据展示多少个字符回来

GET /eslog/_search
{
  "query": {
    "match": {
      "address": "广州"
    }
  },
  "highlight": {
   "pre_tags": "<font color='red'>",
   "post_tags": "</font>",
   "fields": {
     "address": {}
   }
  }
}

14 短语查询match_phrase
对要查询的句子短语作为整体去模糊查询,采用短语查询才得行(matchPhraseQuery)

GET eslog/_search
{
"query":{
	"match_phrase":{
		"address":"白云山"
		}
	}
}

15 字段超长的数据
比如吧我要查询索引中的某些字段的长度大于20的全部数据,在数据清洗时常常要求删除字段长度大于多少的数据。怎么整?

GET eslog/_search
{
  "query": {
    "bool": {
       "filter":{
        "script": {
          "script":{
              "source" : "doc['address.keyword'].value.length()>20",
              "lang"   :  "painless"
          }
        }
      }
    }
  }
}

16 设置它的默认值max_result_window的值
注意:es使用from +size处理分页问题时,会将所有数据全部取出来,然后再截取指定范围的数据返回,所以当数据量较大时,这种机制会存在内存溢出的可能,所以谨慎使用。

PUT /eslog/_settings
{
	"index":{
	"max_result_window":999999999
		}
}

17 es聚合分组,组数过多解决办法
问题: trying to create too many buckets.must be less than or equal to :[20000] but was [86391].this limit can be set
by changing the [search.max_buckets] clusterlevel setting.
原因:es7版本之后默认支持最大分桶为65535,如果大于这个值,则不会查询到数据,所以可以将这个值设置更大

# 临时解决办法(重启es会回到默认值):
PUT _cluster/settings
{
	"transient":{
			"search.max_buckets":100000
	}
}
# 永久解决方法
PUT /_cluster/settings
{ 
	"persistent": {
		"search.max_buckets": 1000000
	}
}

18 根据es的_id查询ids查询文章来源地址https://www.toymoban.com/news/detail-526983.html

POST /eslog/_search
{
  "query": {
    "ids": {
      "values": ["oI9GVHQBH0SEUrtlhvX7","oY9HVHQBH0SEUrtlaPUO"]
    }
  }
}

到了这里,关于elasticsearch 7.9.3知识归纳整理(二)之 es基本原理及使用kibana操作es的常见命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch、Kibana以及Java操作ES 的快速使用

      创建docker自定义网络 docker自定义网络可以使得 容器之间使用容器名网络互连 ,默认的网络不会有这功能。 一定要配置自定义网络,并将两个容器同时加到网络中,否则下面的 http://es:9200 会无法访问到es   启动elastic search、kibana容器 启动 elastic search容器 访问 http://192.168

    2024年02月09日
    浏览(33)
  • ElasticSearch与Kibana基本概念和使用

    目录 一、什么是elasticsearch? 二、什么是kibana? 三、elasticsearch的优点 四、elasticsearch怎么实现查询的? 五、引入:正向索引、倒排索引 5.1 概念 5.2、优缺点:  六、es的概念 6.1、文档和字段 6.2、索引和映射 七、索引库操作 7.1、mapping映射属性  7.2、索引库操作 7.3、 文档操

    2023年04月19日
    浏览(22)
  • ElasticSearch 知识归纳

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) Elasticsearch 知识归纳: Elasticsearch 是一个基于开源的分布式搜索和分析引擎,建立在 Apache Lucene 库之上。它被广泛用于处理和分析大规模

    2024年02月08日
    浏览(23)
  • Linux 安装Kibana连接es集群的步骤整理

    有如下两种方式,一种是在官网下载,另外一种是通过get命令去下,根据自己实际情况去处理,注意要保证kibana版本和es版本保持一致 https://www.elastic.co/cn/downloads/kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-7.7.1-linux-x86_64.tar.gz 这里要配置es的用户名和密码,。这里虽然是

    2023年04月11日
    浏览(40)
  • ES(Elasticsearch)的基本使用

    Redis是一个基于内存的 key-value 结构数据库。Redis是一款采用key-value数据存储格式的内存级 NoSQL数据库 ,重点关注数据存储格式,是key-value格式,也就是键值对的存储形式。与MySQL数据库不同,MySQL数据库有表、有字段、有记录,Redis没有这些东西,就是一个名称对应一个值,并

    2024年02月03日
    浏览(21)
  • 【中间件】ElasticSearch:ES的基本概念与基本使用

    Index索引、Type类型,类似于数据库中的数据库和表,我们说,ES的数据存储在某个索引的某个类型中(某个数据库的某个表中),Document文档(JSON格式),相当于是数据库中内容的存储方式 MySQL:数据库、表、数据 ElasticSearch:索引、类型、文档 ElasticSearch的检索功能基于其倒

    2024年02月04日
    浏览(34)
  • 【ES-Kibana】ElasticSearch-Kibana搭建手册

    1.1.服务器环境 (1)、Java环境检查 (2)、安装Java(未安装jdk环境的需要如下操作) 2.1.安装包下载 (1)、方式一:连网情况下直接下载安装包 (2)、方式二:离线安装官网下载安装包 2.2.修改配置 (1)、修改elasticsearch.yml配置文件 (2)、创建elasticsearch的专属操作用户 (

    2024年02月04日
    浏览(28)
  • ES(elasticsearch) - kibana导出csv

    Elasticsearch第一篇:基本介绍 Elasticsearch第二篇:es版本比较 Elasticsearch第三篇:es的三种分页方式与优劣势比较 Elasticsearch第四篇:java实现Scroll分页,内含代码复制即用 Elasticsearch第五篇:kibana导出csv 主要记录使用Kibana导出查询结果的csv文件,以及相关的导出配置 Discover - 选择

    2024年02月07日
    浏览(33)
  • ElasticSearch第四讲:ES详解:ElasticSearch和Kibana安装

    本文是ElasticSearch第四讲:ElasticSearch和Kibana安装,主要介绍ElasticSearch和Kibana的安装。了解完ElasticSearch基础和Elastic Stack生态后,我们便可以开始学习使用ElastiSearch了。 安装ElasticSearch还是先要看下官方网站。 官方网站 官方2.x中文教程中安装教程 官方ElasticSearch下载地址 官方

    2024年02月08日
    浏览(29)
  • ES(Elasticsearch)和Kibana(Windows)安装

    安装Elasticsearch过程 首先需要到官网下载安装包 注意 :要下载对应的版本,如果下载最新版而且jdk是1.8版本的话,会出现 warning: ignoring JAVA_HOME=C:Program FilesJavajdk1.8.0_191; using bundled JDK 这样的报错,意思是jdk版本与es版本不兼容,这里用的是7.6.2 官网地址:https://www.elastic.co

    2024年02月11日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包