IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch复杂检索 -> 正文阅读

[大数据]ElasticSearch复杂检索

新建一个索引

PUT /approval_list_zhc

插入数据

{
  "name":"xilianpeng",
  "age":27,
  "email":"xilianpeng@hrfax.cn",
  "sex":"0",
  "salary":35000
}

查询全部

{"query":{"match_all":{}}}

查询全部,并按salsry倒序排序

{
	"query": {
		"match_all": {

		}
	},
    "sort":{
        "salary":"desc"
    }
}

查询全部,并按salary倒序,如果salary相同,按age升序排序

{
	"query": {
		"match_all": {

		}
	},
	"sort": [{
		"salary": "desc"
	}, {
		"age": "asc"
	}]
}

查询第一第二条数据,按salary降序,age升序

{
	"query": {
		"match_all": {

		}
	},
	"sort": [{
		"salary": "desc"
	}, {
		"age": "asc"
	}],
	"from": 0,
	"size": 2
}

_source指定返回哪几个字段

{
	"query": {
		"match_all": {

		}
	},
	"sort": [{
		"salary": "asc"
	}, {
		"age": "asc"
	}],
	"from": 1,
	"size": 2,
	"_source": ["name", "age"]
}

match 指定哪个属性匹配哪个值,如检索age是20的信息

{
	"query": {
		"match": {
			"age": 20
		}
	}
}

match 匹配字符串字段就是模糊搜索(维护了一个倒排索引)

比如说“wangcai erha”,能匹配出email值为"wangcai erha gouzi"和"wangcai erha "
match 匹配非字符串的就是精确搜索

{
   "query": {
   	"match": {
   		"email": "wangcai erha"
   	}
   }
}

match_phrase 短语匹配

如果匹配"wangcai erha gouzi",那么email字段下必须是有"wangcai erha gouzi"这完整的短语,如果是match的话,只要包含一个就能匹配出来,比如包含了"wangcai erha"的email字段也能匹配出来

{
	"query": {
		"match_phrase": {
			"email": "wangcai erha gouzi"
		}
	}
}

用match_phrase只能检索出一个
image.png

用match能检索出2个结果
image.png

multi_match 多字段匹配

查询只要email字段里包含erha或gouzi的数据

{
	"query": {
		"multi_match": {
			"query": "erha gouzi",
			"fields": "email"
		}
	}
}

bool查询

可以合并多个查询条件。以下条件是 必须sex字段为1,并且必须email字段包含erha, must为必须

{
     "query": {
		"bool": {
			"must": [{
					"match": {
						"sex": 1
					}
				},
				{
					"match": {
						"email": "erha"
					}
				}
			]
		}
	}
}

must_not 必须不满足,以下是多条件复合查询。

{
	"query": {
		"bool": {
			"must": [{
					"match": {
						"sex": 1
					}
				},
				{
					"match": {
						"email": "erha"
					}
				}
			],
			"must_not": [{
				"match": {
					"name": "wangcai"
				}
			}]
		}
	}
}

should 满足should的条件最好,得分最高,不满足也没关系

{
	"query": {
		"bool": {
			"must": [{
					"match": {
						"sex": 1
					}
				},
				{
					"match": {
						"email": "erha"
					}
				}
			],
			"should": [{
				"match": {
					"name": "wangcai"
				}
			}]
		}
	}
}

filter 过滤,会把不满足这个条件的过滤掉

{
	"query": {
		"bool": {
			"must": [{
				"match": {
					"sex": 1
				}
			}],
			"filter": {
				"range": {
					"salary": {
						"gte": 20000,
						"lte": 30000
					}
				}
			}
		}
	}
}

term 找精确字典的,非文本字典用term查询。

由于ES在保存text字段的时候,存在分词的问题。用term检索整个完整的值是非常困难的

{
	"query": {
		"term": {
			"salary": 20000
		}
	}
}

字段.keyword 相当于精确匹配

{
	"query": {
		"match": {
			"email.keyword": "wangcai erha"
		}
	}
}

aggregations 聚合

要做一个聚合
  为这个聚合起一个名字
    做什么类型的聚合
      聚合体的内容
        聚合里的元数据
    基于上一次的聚合再进行聚合,子聚合

image.png

{
	"query": {
		"match_all": {}
	},
	"aggs": {
		"ageAgg": {
			"terms": {
				"field": "age",
				"size": 10
			}
		}
	}
}

按照年龄所有可能的值来聚合
image.png

可以多个聚合,年龄所有可能的值来聚合,平均工资聚合

{
	"query": {
		"match_all": {}
	},
	"aggs": {
		"ageAgg": {
			"terms": {
				"field": "age",
				"size": 10
			}
		},
		"salayAvg": {
			"avg": {
				"field": "salary"
			}
		}
	}
}

image.png

聚合里面再套聚合,这个年龄段下面的人的平均工资

{
	"query": {
		"match_all": {}
	},
	"aggs": {
		"ageAgg": {
			"terms": {
				"field": "age",
				"size": 10
			},
			"aggs": {
				"ageAvg": {
					"avg": {
						"field": "salary"
					}
				}
			}
		}
	}
}

结果:

image.png

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 10:59:11  更:2021-07-14 11:00:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 7:49:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码