学习笔记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基本概念

ElasticSearch学习笔记

Elasticsearch学习笔记2:ES核心概念 -- 索引倒排索引类型文档

Elasticsearch学习笔记2:ES核心概念 -- 索引倒排索引类型文档

Elasticsearch学习笔记2:ES核心概念 -- 索引倒排索引类型文档

ElasticSearch 学习笔记总结