一、全文检索查询
1、match查询
全文检索查询的一种,会对用户输入内容分词,然后去倒排索引库检索。
语法:
GET /indexName/_search
{
"query": {
"match": {
"FIELD": "TEXT"
}
}
}
2、multi_match查询
语法:
GET /indexName/_search
{
"query": {
"multi_match": {
"query": "TEXT",
"fields": ["FIELD1","FIELD2"]
}
}
}
3、match和mult_match的区别
二、精确查询
精确查询一般是查找keyword、数值、日期、boolean等类型字段。所以不会对搜索条件分词。
1、term查询:
根据词条精确匹配,一般搜索keyword类型、数值类型、布尔类型、日期类型字段
语法:
GET /indexName/_search
{
"query": {
"term": {
"FIELD": {
"value": "VALUE"
}
}
}
}
2、range查询:(范围查询)
gt表示大于而不等于,lt表示小于而不等于;
语法:
GET /indexName/_search
{
"query": {
"range": {
"FIELD": {
"gte": 10,
"lte": 20
}
}
}
}
三、地理查询
1、geo_bounding_box查询:
语法:
GET /indexName/_search
{
"query": {
"geo_bounding_box":{
"FIELD":{
"top_left":{
"lat":31.1,
"lon":121.5
},
"bottom_right":{
"lat":30.9,
"lon":121.7
}
}
}
}
}
2、geo_distance查询:
语法:
GET /indexName/_search
{
"query": {
"geo_distance":{
"distance":"15km",
"FIELD":"31.21.121.5"
}
}
}
四、复合查询
1、fuction score:
(1)词条频率
例子:
“你你你你你,是是是,我我我我,的的,谁”,一共有15个字。
(2)TF-IDF算法
例子:
《你是钢铁侠》
《我是钢铁下》
《都是钢铁虾》
(3)BM25算法
BM25是一种用于信息检索的算法,它是基于词频和文档长度的统计方法,用于计算查询与文档之间的相关性得分。BM25算法是一种改进的TF-IDF算法,它考虑了文档长度的影响,以及对于一些高频词汇的惩罚。BM25算法的公式如下:
score(D,Q) = ∑(i=1 to n) IDF(qi) * ((k+1)*f(qi,D))/(f(qi,D)+k*(1-b+b*(|D|/avgdl)))
其中,D表示文档,Q表示查询,qi表示查询中的第i个词,f(qi,D)表示文档D中qi出现的频率,|D|表示文档D的长度,avgdl表示所有文档的平均长度,IDF(qi)表示逆文档频率,k和b是两个可调参数。
BM25算法的优点是可以处理长文档和短文档,而且对于高频词汇的处理也比较合理。但是,BM25算法的计算复杂度较高,需要对所有文档进行扫描和计算,因此在大规模数据集上的应用需要考虑效率问题。
2、总结
五、Function Score Query
1、bool查询
原文地址:https://blog.csdn.net/icbbm/article/details/134614190
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_12525.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!