11-单字符串多字段查询:Dis Max Query
dis_max 查询包含以下关键元素:
queries: 这是一个查询数组,其中包含两个 match 查询。
第一个 match 查询要求匹配 "title" 字段中包含 "Quick pets" 的文档。
第二个 match 查询要求匹配 "body" 字段中包含 "Quick pets" 的文档。
tie_breaker: 这个参数定义了非主要条件对结果得分的影响程度。在这里设置为 0.2,表示非主要条件的得分对最终得分的贡献比例为 20%。
换句话说,这个查询的意义是:
在 "title" 字段和 "body" 字段中寻找包含 "Quick pets" 的文档。
使用 disjunction-max 操作来计算最终得分,选择具有最高相关性得分的文档,并在此基础上应用 tie breaker 来考虑第二个查询条件的影响。
如果某个文档同时匹配了两个查询条件,其得分将会考虑到两个条件的相关性得分,其中第二个条件的得分将以较低的权重(由 tie breaker 控制)纳入最终得分的计算中。
PUT /blogs/_doc/1
{
"title": "Quick brown rabbits",
"body": "Brown rabbits are commonly seen."
}
PUT /blogs/_doc/2
{
"title": "Keeping pets healthy",
"body": "My quick brown fox eats rabbits on a regular basis."
}
POST /blogs/_search
{
"query": {
"bool": {
"should": [
{ "match": { "title": "Brown fox" }},
{ "match": { "body": "Brown fox" }}
]
}
}
}
POST blogs/_search
{
"query": {
"dis_max": {
"queries": [
{ "match": { "title": "Quick pets" }},
{ "match": { "body": "Quick pets" }}
]
}
}
}
# dis_max 查询包含以下关键元素:
# queries: 这是一个查询数组,其中包含两个 match 查询。
# 第一个 match 查询要求匹配 "title" 字段中包含 "Quick pets" 的文档。
# 第二个 match 查询要求匹配 "body" 字段中包含 "Quick pets" 的文档。
# tie_breaker: 这个参数定义了非主要条件对结果得分的影响程度。在这里设置为 0.2,表示非主要条件的得分对最终得分的贡献比例为 20%。
# 换句话说,这个查询的意义是:
# 在 "title" 字段和 "body" 字段中寻找包含 "Quick pets" 的文档。
# 使用 disjunction-max 操作来计算最终得分,选择具有最高相关性得分的文档,并在此基础上应用 tie breaker 来考虑第二个查询条件的影响。
# 如果某个文档同时匹配了两个查询条件,其得分将会考虑到两个条件的相关性得分,其中第二个条件的得分将以较低的权重(由 tie breaker 控制)纳入最终得分的计算中。
POST blogs/_search
{
"query": {
"dis_max": {
"queries": [
{ "match": { "title": "Quick pets" }},
{ "match": { "body": "Quick pets" }}
],
"tie_breaker": 0.2
}
}
}
一次全文搜索的实例
POST tmdb/_search
{
"_source": ["title","overview"],
"query": {
"match_all": {}
}
}
POST tmdb/_search
{
"_source": ["title","overview"],
"query": {
"multi_match": {
"query": "basketball with cartoon aliens",
"fields": ["title","overview"]
}
},
"highlight" : {
"fields" : {
"overview" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] },
"title" : { "pre_tags" : ["\\033[0;32;40m"], "post_tags" : ["\\033[0m"] }
}
}
}