当前位置: 首页 > article >正文

ElasticSearch学习6

复杂查询

test3索引中的内容

①查询匹配
  • match:匹配(会使用分词器解析(先分析文档,然后进行查询))
  • _source:过滤字段(就是查询哪些字段)
  • sort:排序
  • formsize 分页(form表示从第几页开始,size表示每页展示多少条数据)
// 查询匹配 
GET / blog / user / _search {
	"query": {
		"match": {
			"name": "流"
		}
	},
	"_source": ["name", "desc"],
	"sort": [{
		"age": {
			"order": "asc"
		}
	}],
	"from": 0,
	"size": 1
}

②多条件查询(bool)

  • must 相当于 and
  • should 相当于 or
  • must_not 相当于 not (... and ...)
  • filter 过滤
/// bool 多条件查询
 must <==> and
 should <==> or
 must_not <==> not (... and ...)
 filter数据过滤
 boost
 minimum_should_match
GET / blog / user / _search {
	"query": {
		"bool": {
			"must": [{
				"match": {
					"age": 3
				}
			}, {
				"match": {
					"name": "流"
				}
			}],
			"filter": {
				"range": {
					"age": {
						"gte": 1,
						"lte": 3
					}
				}
			}
		}
	}
}
③匹配数组(满足数组中的一个值就会被查询出来)
  • 貌似不能与其它字段一起使用
  • 可以多关键字查(空格隔开)— 匹配字段也是符合的
  • match 会使用分词器解析(先分析文档,然后进行查询)
  • 搜词
// 匹配数组 貌似不能与其它字段一起使用
// 可以多关键字查(空格隔开)
// match 会使用分词器解析(先分析文档,然后进行查询)
GET / blog / user / _search {
	"query": {
		"match": {
			"desc": "年龄 牛 大"
		}
	}
}
④精确查询
  • term 直接通过 倒排索引 指定词条查询
  • 适合查询 number、date、keyword ,不适合text
// 精确查询(必须全部都有,而且不可分,即按一个完整的词查询)
// term 直接通过 倒排索引 指定的词条 进行精确查找的
GET / blog / user / _search {
	"query": {
		"term": {
			"desc": "年 "
		}
	}
}
⑤text和keyword
  • text:
    • 支持分词全文检索、支持模糊、精确查询,不支持聚合,排序操作;
    • text类型的最大支持的字符长度无限制,适合大字段存储;
  • keyword:
    • 不进行分词直接索引、支持模糊、支持精确匹配,支持聚合、排序操作。
    • keyword类型的最大支持的长度为——32766个UTF-8类型的字符,可以通过设置ignore_above指定自持字符长度,超过给定长度后的数据将不被索引,无法通过term精确匹配检索返回结果
// 测试keyword和text是否支持分词
// 设置索引类型
PUT / test {
	"mappings": {
		"properties": {
			"text": {
				"type": "text"
			},
			"keyword": {
				"type": "keyword"
			}
		}
	}
}
// 设置字段数据
PUT / test / _doc / 1 {
	"text": "测试keyword和text是否支持分词",
	"keyword": "测试keyword和text是否支持分词"
}
// text 支持分词
// keyword 不支持分词
GET / test / _doc / _search {
	"query": {
		"match": {
			"text": "测试"
		}
	}
} 
// 查的到
GET / test / _doc / _search {
	"query": {
		"match": {
			"keyword": "测试"
		}
	}
} 
// 查不到,必须是 "测试keyword和text是否支持分词" 才能查到
GET _analyze {
	"analyzer": "keyword",
	"text": ["测试liu"]
}
// 不会分词,即 测试liu
GET _analyze {
	"analyzer": "standard",
	"text": ["测试liu"]
}
// 分为 测 试 liu
GET _analyze {
	"analyzer": "ik_max_word",
	"text": ["测试liu"]
} // 分为 测试 liu
⑥高亮查询
/// 高亮查询
GET blog / user / _search {
	"query": {
		"match": {
			"name": "流"
		}
	},
	"highlight": {
		"fields": {
			"name": {}
		}
	}
}
// 自定义前缀和后缀
GET blog / user / _search {
	"query": {
		"match": {
			"name": "流"
		}
	},
	"highlight": {
		"pre_tags": "<p class='key' style='color:red'>",
		"post_tags": "</p>",
		"fields": {
			"name": {}
		}
	}
}


http://www.kler.cn/a/441477.html

相关文章:

  • 网络安全教学博客(一):网络安全基础概念与重要性
  • 游戏引擎学习第51天
  • 微信小程序苹果手机自带的数字键盘老是弹出收起,影响用户体验,100%解决
  • 代码随想录算法训练营day43|动态规划part10
  • MR30分布式IO模块,为港口岸桥安全增效保驾护航
  • 路径规划之启发式算法之十七:淘金优化算法(Gold Rush Optimizer, GRO)
  • 基于Spring Boot的体育商品推荐系统
  • 大数据与AI:从分析到预测的跃迁
  • Webpack中loader的作用/ loader是什么?
  • Halcon面试题及参考答案
  • Qt读写文本文件
  • 【Spring 全家桶】Spring MVC 快速入门,开始web 更好上手(下篇) , 万字解析, 建议收藏 ! ! !
  • 通过gateway实现服务的平滑迁移
  • 登陆harbor发现证书是错误的, 那么如何更新harbor的证书呢
  • 深入解析Ubuntu 20.04 ROS中的setup.bash文件
  • OPC UA、MQTT 和 HTTP性能分析及使用场景推荐
  • Linux shell脚本练习(三)
  • gateway 微服务的入口-笔记
  • opencv实战--颜色识别
  • 数据结构day3作业