Elasticsearch 知识点整理 一 (8)

第三种: 如果不希望使用相关性得分,使用下面的语法

GET my_index/_doc/_search { "query": { "constant_score" : { "filter" : { "term" : { "title" : "this"} # }, "boost" : 1.2 } } }

第四种: 灵活的查询

查询必须包含XXX,必须不包含YYY的doc

GET my_index/_doc/_search { "query":{ "bool": { "must":{ "match":{ "title":"this is a " } }, "must_not":{ "match":{ "title":"another" } } } } }

第五种: 查询必须包含XXX,可以包含YYY,但是包含了YYY后它的权重就会减少指定的值

GET my_index/_doc/_search { "query":{ "boosting": { "positive":{ "match":{ "title":"this is a " } }, "negative":{ "match":{ "title":"another" } }, "negative_boost": 0.2 } } }

第六种: 重打分机制

"query": { "match":{ "title":{ "query":"java elasticsearch", "minimum_should_match":"50%" } }, "rescore":{ # 对全文检索的结果进行重新打分 "window_size":50, # 对全文检索的前50条进行重新打分 "query": { "rescore_query":{ # 关键字 "match_phrase":{ # match_phrase + slop 感知 term persition,贡献分数 "title":{ "query":"java elasticsearch", "slop":50 } } } } }

第七种: 混用match和match_phrase提高召回率

"query": { "bool": { "must": { # 全文检索虽然可以匹配到大量的文档,但是它不能控制词条之间的距离 # 可能java elasticsearch在Adoc中距离很近,但是它却被ES排在结果集的后面 # 它的性能比match_phrase高10倍,比proximity高20倍 "match": { "address": "java elasticsearch" } }, "should": { # 借助match_phrase+slop可以感知term position的功能,为距离相近的doc贡献分数,让它们靠前排列 "match_phrase":{ "title":{ "query":"java elasticsearch", "slop":50 } } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppgzd.html