学习笔记ElasticSearch(ES)基本概念和语句学习笔记
Posted 棉花糖灬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记ElasticSearch(ES)基本概念和语句学习笔记相关的知识,希望对你有一定的参考价值。
一、ES名词
ES:ElasticSearch又称ES,是一个可伸缩的、分布式的、近实时搜索的开源全文搜索与分析引擎。
index(索引):一个索引就是一个拥有几分相似特征的文档的集合。相当于mysql中的数据库。
type(类型):一个索引中可以定义一种或多种类型。一个类型是索引的一个逻辑上的分类/分区,其语义完全由你来定。相当于MySQL中的表。
field(字段):相当于MySQL中表的字段。
mapping(映射):mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等。相当于MySQL中的建表过程中设置默认值、主外键、索引等。
document(文档):一个文档是一个可被索引的基础信息单元,插入索引库以文档为单位。相当于MySQL中的一条记录。
cluster(集群):一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。
node(节点):一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。
shard(分片):Elasticsearch提供了将索引划分成多份的能力,这些份就叫做分片。它允许水平分割/扩展你的内容容量,或者在多个节点上上进行分布式的、并行的操作,进而提高性能/吞吐量。
replicas(复制):Elasticsearch允许你创建分片的一份或多份备份,这些备份叫做复制分片,或者直接叫复制。
二、操作类型和操作对象
1. GET/PUT/POST/DELETE
ES中主要有GET/PUT/POST/DELETE这四种操作,分别表示查询、更新或创建、创建、删除操作。其中PUT和POST的区别是:PUT在插入新数据的时候需要指定_id
,而POST则不需要,这个_id
是ES中文档的唯一标识。换种说法,PUT是幂等的,即多次执行的结果相同,而POST不是幂等的,多次执行会插入多条数据。
2._mapping/_settings/_search/_count/_doc
_mapping/_settings/_search/_count/_doc
分别是对映射、索引设置、查询记录值、查询记录数、查询文档信息的操作,具体看下文中的列子。
三、索引/字段/文档等操作语句
1. 索引操作
(1) 创建索引
# 创建索引的设置信息,也可以直接创建索引字段,此时设置信息取默认值
PUT index_name
"settings" :
"index" :
"refresh_interval" : "60s",
"number_of_shards" : "3",
"translog" :
"durability" : "async"
,
"max_result_window" : "10000000",
"unassigned" :
"node_left" :
"delayed_timeout" : "30m"
,
"number_of_replicas" : "1"
其中number_of_shards为分片数
(2) 查询索引设置信息
# 查询索引设置信息
GET trade_bill_detail/_settings
(3) 删除索引
# 删除索引
DELETE trade_bill_detail
2. 字段操作
(1) 为索引添加字段
# 为索引添加新字段
PUT trade_bill_detail/_mapping
"properties" :
"begin_time" :
"type" : "date"
,
"expense_begin_time" :
"type" : "keyword"
,
"account_id" :
"type" : "long"
,
"price_new" :
"type" : "double"
(2) 查询字段信息
# 查看索引的所有字段
GET trade_bill_detail/_mapping
3. 文档操作
(1) 查询文档信息
# 查询文档信息,1798023是文档的id
GET trade_bill_detail/_doc/1798023
4. 其他操作
(1) 查询数据总量
# 查询数据总量,以kb为单位。用来在进行数据同步时查询同步情况
GET _cat/indices/trade_bill_detail?v&h=index,docs.count,store.size&bytes=kb
四、查询语句
1. 相等查询
# 相等条件查询
GET trade_bill_detail/_search
"query":
"match":
"BillID": "Bill7037412215733195052"
# 相等条件查询
GET trade_bill_detail/_search
"query":
"bool":
"must": [
"match":
"ID": "1648022"
]
2. 不等查询
# 不等条件查询
GET trade_bill_detail/_search
"query":
"bool":
"must_not":
"match":
"DataDisplayRule": "1"
3. 模糊查询
# 模糊查询
GET trade_bill_detail/_search
"query":
"wildcard":
"BillID":
"value": "*Bill7025695920478818604*"
4. 多字段查询
# 对多个字段执行相同的查询
GET trade_bill_detail/_search
"query":
"multi_match":
"query": "0",
"fields": ["Price","PriceNew"]
5. 排序
# 排序
GET trade_bill_detail/_search
"query":
"match_all":
,
"sort": [
"ID":
"order": "desc"
,
"BeginT":
"order": "asc"
]
6. 集合查询
# 集合查询,in条件查询
GET trade_bill_detail/_count
"query":
"terms":
"ID": [1492462,1648018,1648022,1692420,1692421,1692422,1692423,1692424]
7. 记录数查询
# 搜索某字段符合特定条件的记录数
GET trade_bill_detail/_count
"query":
"match":
"DataDisplayRule": "1"
# 查询总记录数
GET trade_bill_detail/_count
8. 大于小于查询
# range查询,gte是大于等于,gt是大于,lte是小于等于,lt是小于
GET index_name/_search
"query":
"range":
"Price":
"gte": 10,
"lte": 30
9. 综合查询
GET index_name/_search
"from":0,
"query":
"bool":
"filter":[
"range":
"BeginTime":
"from":"2021-01-01T00:00:00+08:00",
"include_lower":true,
"include_upper":true,
"to":null
,
"range":
"BeginTime":
"from":null,
"include_lower":true,
"include_upper":false,
"to":"2022-01-01T00:00:00+08:00"
,
"term":
"BillType":"normal"
,
"term":
"SubjectNo":"3423"
,
"terms":
"DataDisplayRule":[
"1",
"3"
]
,
"bool":
"should":[
"bool":
"filter":
"wildcard":
"BillProperty":
"wildcard":"*system*"
,
"bool":
"filter":
"wildcard":
"BillProperty":
"wildcard":"*orderNew*"
]
,
"bool":
"should":[
"bool":
"filter":
"term":
"OrderNo":"Bill7025276297373585708"
,
"bool":
"filter":
"term":
"BillID":"Bill7025276297373585708"
]
]
,
"size":10,
"sort":[
"BeginTime":
"order":"desc"
,
"InstanceNo":
"order":"asc"
,
"ID":
"order":"asc"
],
"track_total_hits":true
以上是关于学习笔记ElasticSearch(ES)基本概念和语句学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
Elasticsearch学习笔记2:ES核心概念 -- 索引倒排索引类型文档
Elasticsearch学习笔记2:ES核心概念 -- 索引倒排索引类型文档