09-结构化搜索、搜索的相关性算分

news/2024/11/8 18:18:25/
  • term 查询执行精确值匹配,要求文档中的字段值与指定的词项完全相等。对于日期字段等精确值字段,通常使用 term 查询可以快速有效地匹配文档。
  • match 查询执行全文搜索,会对输入的文本进行分析,生成查询词项,并试图找到与这些词项匹配的文档
  • constant_score查询是一种特殊的查询,它会为每个匹配的文档分配一个固定的分数(默认为 1.0)

DELETE productsPOST /products/_bulk
{ "index": { "_id": 1 }}
{ "price" : 10,"avaliable":true,"date":"2023-01-01", "productID" : "XHDK-A-1293-#fJ3" }
{ "index": { "_id": 2 }}
{ "price" : 20,"avaliable":true,"date":"2023-01-01", "productID" : "KDKE-B-9947-#kL5" }
{ "index": { "_id": 3 }}
{ "price" : 30,"avaliable":true, "productID" : "JODL-X-1937-#pV7" }
{ "index": { "_id": 4 }}
{ "price" : 30,"avaliable":false, "productID" : "QQPX-R-3956-#aD8" }GET products/_mapping# 对布尔值 match 查询,有算分
POST products/_search
{"profile": "true","explain": true,"query": {"term": {"avaliable": true}}
}# 对布尔值,通过constant score 转成 filtering,没有算分
POST products/_search
{"profile": "true","explain": true,"query": {"constant_score": {"filter": {"term": {"avaliable": true}}}}
}# 数字类型 Term
POST products/_search
{"profile": "true","explain": true,"query": {"term": {"price": 30}}
}# 数字类型 terms
POST products/_search
{"query": {"constant_score": {"filter": {"terms": {"price": ["20","30"]}}}}
}# 数字 Range 查询
GET products/_search
{"query" : {"constant_score" : {"filter" : {"range" : {"price" : {"gte" : 20,"lte"  : 30}}}}}
}# 日期 range
POST products/_search
{"query" : {"constant_score" : {"filter" : {"range" : {"date" : {"gte" : "now-1y"}}}}}
}# exists查询
POST products/_search
{"query": {"constant_score": {"filter": {"exists": {"field": "date"}}}}
}# 处理多值字段
POST /movies/_bulk
{ "index": { "_id": 1 }}
{ "title" : "Father of the Bridge Part II","year":1995, "genre":"Comedy"}
{ "index": { "_id": 2 }}
{ "title" : "Dave","year":1993,"genre":["Comedy","Romance"] }# 处理多值字段,term 查询是包含,而不是等于
POST movies/_search
{"query": {"constant_score": {"filter": {"term": {"genre.keyword": "Comedy"}}}}
}# 字符类型 terms
POST products/_search
{"query": {"constant_score": {"filter": {"terms": {"productID.keyword": ["QQPX-R-3956-#aD8","JODL-X-1937-#pV7"]}}}}
}POST products/_search
{"profile": "true","explain": true,"query": {"match": {"price": 30}}
}POST products/_search
{"profile": "true","explain": true,"query": {"term": {"date": "2019-01-01"}}
}POST products/_search
{"profile": "true","explain": true,"query": {"match": {"date": "2019-01-01"}}
}POST products/_search
{"profile": "true","explain": true,"query": {"constant_score": {"filter": {"term": {"productID.keyword": "XHDK-A-1293-#fJ3"}}}}
}POST products/_search
{"profile": "true","explain": true,"query": {"term": {"productID.keyword": "XHDK-A-1293-#fJ3"}}
}# 对布尔数值
POST products/_search
{"query": {"constant_score": {"filter": {"term": {"avaliable": "false"}}}}
}POST products/_search
{"query": {"term": {"avaliable": {"value": "false"}}}
}POST products/_search
{"profile": "true","explain": true,"query": {"term": {"price": {"value": "20"}}}
}POST products/_search
{"profile": "true","explain": true,"query": {"match": {"price": "20"}}
}POST products/_search
{"query": {"constant_score": {"filter": {"bool": {"must_not": {"exists": {"field": "date"}}}}}}
}DELETE products

# boosting 查询包含以下关键元素:

# positive: 正面条件,定义了一个条件(这里是 "content": "elasticsearch"), 当文档匹配这个条件时,会增加文档的相关性得分。

# negative: 负面条件,定义了另一个条件(这里是 "content": "like"), 当文档匹配这个条件时,会减少文档的相关性得分。

# negative_boost: 这个参数指定了负面条件对得分的影响程度。在这个示例中,


DELETE testscorePUT testscore
{"settings": {"number_of_shards": 1},"mappings": {"properties": {"content": {"type": "text"}}}
}PUT testscore/_bulk
{ "index": { "_id": 1 }}
{ "content":"we use Elasticsearch to power the search" }
{ "index": { "_id": 2 }}
{ "content":"we like elasticsearch" }
{ "index": { "_id": 3 }}
{ "content":"The scoring of documents is caculated by the scoring formula" }
{ "index": { "_id": 4 }}
{ "content":"you know, for search" }# the elasticsearch会查出123条数据
# the会查出13数据
POST /testscore/_search
{//"explain": true,"query": {"match": {//"content":"you""content": "elasticsearch"//"content":"the"//"content": "the elasticsearch"}}
}# boosting 查询包含以下关键元素:
# positive: 正面条件,定义了一个条件(这里是 "content": "elasticsearch"),
#           当文档匹配这个条件时,会增加文档的相关性得分。
# negative: 负面条件,定义了另一个条件(这里是 "content": "like"),
#           当文档匹配这个条件时,会减少文档的相关性得分。
# negative_boost: 这个参数指定了负面条件对得分的影响程度。在这个示例中,
#                 设置为 0.2,表示负面条件的匹配与正面条件相比,对相关性得分的影响降低了 80%。
POST testscore/_search
{"query": {"boosting" : {"positive" : {"term" : {"content" : "elasticsearch"}},"negative" : {"term" : {"content" : "like"}},"negative_boost" : 0.2}}
}DELETE testscorePOST tmdb/_search
{"_source": ["title","overview"],"query": {"more_like_this": {"fields": ["title^10","overview"],"like": [{"_id":"14191"}],"min_term_freq": 1,"max_query_terms": 12}}
}

http://www.ppmy.cn/news/1545422.html

相关文章

ReactPress系列—Next.js 的动态路由使用介绍

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议,感谢Star。 Next.js 的动态路由使用介绍 Next.js 是一个流行的 React 框架,支持服务端渲染、静态站点生成和动态路由等功能,极大地简化…

sqoop问题汇总记录

此篇博客仅记录在使用sqoop时遇到的各种问题。持续更新,有问题评论区一起探讨,写得有不足之处见谅。 Oracle_to_hive 1. main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTr…

计算机视觉基础:OpenCV库详解

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机视觉基础:OpenCV库详解 计算机视觉基础:OpenCV库详解 计算机视觉基础:OpenCV库详解 引…

Spring DispatcherServlet详解

文章目录 Spring DispatcherServlet详解一、引言二、DispatcherServlet的初始化与工作流程1、DispatcherServlet的初始化1.1、加载配置和建立WebApplicationContext1.2、初始化策略 2、DispatcherServlet的工作流程2.1、请求分发2.2、代码示例 三、总结 Spring DispatcherServl…

DBAPI连接阿里云 maxcompute 报错

使用正确的驱动包 访问以下链接寻找驱动包 https://github.com/aliyun/aliyun-odps-jdbc/releases/tag/v3.4.3 注意要使用odps-jdbc-3.4.3-jar-with-dependencies.jar ,这个是完整的jar包 不要使用odps-jdbc-3.4.3.jar,这个不是完整的,它还…

H.265流媒体播放器EasyPlayer.js网页web无插件播放器:如何优化加载速度

在当今的网络环境中,用户对于视频播放体验的要求越来越高,尤其是对于视频加载速度的期待。EasyPlayer.js网页web无插件播放器作为一款专为现代Web环境设计的流媒体播放器,它在优化加载速度方面采取了多种措施,以确保用户能够享受到…

【Linux】解锁操作系统潜能,高效线程管理的实战技巧

目录 1. 线程的概念2. 线程的理解3. 地址空间和页表4. 线程的控制4.1. POSIX线程库4.2 线程创建 — pthread_create4.3. 获取线程ID — pthread_self4.4. 线程终止4.5. 线程等待 — pthread_join4.6. 线程分离 — pthread_detach 5. 线程的特点5.1. 优点5.2. 缺点5.3. 线程异常…

JVM基本结构

一、JVM基本结构 Java虚拟机(JVM, Java Virtual Machine)是Java程序执行的环境,其基本结构可以分为以下几个主要部分: 类加载器子系统(Class Loader Subsystem): 负责加载Java类文件到内存中。…