ES 基本操作

ES 索引基本查询

GET /_cat 					           // 列出可以查询 ES 集群的什么内容,类似 help 或 man 帮助一样
GET /_cat/health?v  				   // 查看 ES 集群的健康情况: v是用来要求在结果中返回表头

GET /_cat/indices  					   // 查看 ES 中所有的索引

GET  /stardb_monitor_mysql*/_mapping   // 查看指定索引 mapping

GET /stardb_monitor_mysql*/_search     // 查看指定索引数据

DELETE  stardb_monitor_mysql*          // 删除指定索引
curl -XDELETE http://1.1.1.1:9200/stardb_monitor_system*

查看分词:
bash-4.2# cat test.json
{"text":"ElasticSearch 学习系统记录"}
bash-4.2#
bash-4.2# curl -H "Content-Type: application/json"   http://1.1.1.1:9200/your_jndex/_analyze -d '@test.json';
{"tokens":[{"token":"elasticsearch","start_offset":0,"end_offset":13,"type":"<ALPHANUM>","position":0},{"token":"学","start_offset":14,"end_offset":15,"type":"<IDEOGRAPHIC>","position":1},{"token":"习","start_offset":15,"end_offset":16,"type":"<IDEOGRAPHIC>","position":2},{"token":"系","start_offset":16,"end_offset":17,"type":"<IDEOGRAPHIC>","position":3},{"token":"统","start_offset":17,"end_offset":18,"type":"<IDEOGRAPHIC>","position":4},{"token":"记","start_offset":18,"end_offset":19,"type":"<IDEOGRAPHIC>","position":5},{"token":"录","start_offset":19,"end_offset":20,"type":"<IDEOGRAPHIC>","position":6}]}bash-4.2#
bash-4.2#

ES 数据查询

filter 和 must 一样,匹配 filter 选项下的查询条件的文档才会被返回,但是 filter 不评分,只起到过滤功能,与 must_not 相反。
bash-4.2# curl -XGET  -u 'admin:123456' -H "Content-Type: application/json" http://1.1.1.1:9200/stardb_monitor_mysql-*/_search?pretty  -d '@rob.json'
bash-4.2# cat rob.json
{
   "query":{
       "bool": {
           "filter":[
               {
                    "range":{
                        "@timestamp":{
                            "lt":1665656134,
                            "gt":1665656145
                        }
                    }
               },
               {
                    "term":{
                        "ip":"192.168.0.244"
                    }
               }
           ]
       }
   }
}
bash-4.2# 

更复杂的查询样例:

{
   "_source":["ip", "port", "mysql.status.var.read_only", "mysql.status.master"],
   "size": 20,
   "query":{
       "bool": {
           "filter":[
               {
                    "range":{
                        "@timestamp":{
                            "lt":1662520380000,
                            "gt":1662520350000
                        }
                    }
               },
               {
                    "term":{
                        "ip":"172.25.28.25"
                    }
               },
               {
                    "term":{
                        "port": 8003
                    }
               }
           ]
       }
   },
   "sort": [
   		{
			"@timestamp": {
				"order": "asc"
			}
   		},
   		{
			"ip": {
				"order": "asc"
	    	}
  		}
  	]
}

全文查询

  1. match 查询:用于搜索单个字段,首先会针对查询语句进行解析(经过 analyzer),主要是对查询语句进行分词,分词后查询语句的任何一个词项被匹配,文档就会被搜到, 默认情况下相当于对分词后词项进行 or 匹配操作。
    如果想查询匹配所有关键词的文档,可以用 and 操作符连接。

     GET article/_search
     {
       "query": {
         "match": {
           "title": {
             "query": "Elasticsearch 查询优化"
             "operator": "or"   //因为默认情况下相当于对分词后词项进行 or 匹配操作,所以该句可以省略
           }
         }
       }
     }
    
  2. match_phrase 查询:首先会把 query 内容分词,分词器可以自定义,同时文档还要满足以下两个条件才会被搜索到:
    a.分词后所有词项都要出现在该字段中(相当于 and 操作)。
    b.字段中的词项顺序要一致。

     GET test_idx/test_tp/_search
     {
       "query": {
         "match_phrase": {
           "desc": "what life"
         }
       }
     }
    
  3. multi_match: 在多列上模糊查询关键词:

     GET books/_search
     {
       "query": {
         "multi_match": {
           "query": "java 编程",
           "fields": ["title", "description"]
         }
       }
     }
    

词项查询:

  1. term 查询:用来查找指定字段中包含给定单词的文档,term 查询不被解析,只有查询词和文档中的词精确匹配才会被搜索到,应用场景为查询人名、地名等需要精准匹配的需求。比如,查询 title 字段中含有关键词 “思想” 的书籍,查询命令如下:如果使用term查询,要确保字段是no analyzed的。建索引的时候要注意。

     GET books/_search
     {
       "query": {
         "term": {
           "title": "思想"
         }
       }
     }
    
  2. terms 查询:想查询 title 字段中包含关键词 “java” 或 “python” 的文档,构造查询语句如下:

     {
       "query": {
         "terms": {
           "title": ["java", "python"]
         }
       }
     }
    

聚合查询

按照 ip group by:

{
   "size": 0,
   "aggs":{
       "ip_alias": {
             "terms":{
                 "field":"ip"
              }
       }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值