由于其amazon REST API和适用于群集,因此希望从Solr迁移到Elastic Search。然而,我正在努力寻找一种方法来提高查询时特定文档,如Solrs提升方法。有没有办法做到这一点,如果有的话,任何例子都会有用:)
答案 0 :(得分:2)
我假设您正在引用Solr QueryElevationComponent。 https://wiki.apache.org/solr/QueryElevationComponent
之前有关于如何在Elasticsearch中模拟此功能的讨论。 https://github.com/elasticsearch/elasticsearch/issues/1066
我们的想法是使用Elasticsearch常量得分查询为匹配文档应用持续提升。应用足够大的提升,您实际上可以获得Solr's Elevate的“赞助搜索”结果。
来自文档:
常量得分查询
包装过滤器或其他查询的查询,只返回一个 常数得分等于对每个文档的查询提升 过滤。映射到Lucene ConstantScoreQuery。
{ "constant_score" : { "filter" : { "term" : { "user" : "kimchy"} }, "boost" : 1.2 } }
过滤器对象只能包含过滤器元素,而不能包含查询。过滤器 可以比查询快得多,因为它们不执行任何查询 得分,特别是当它们被缓存时。
查询也可以包含在constant_score查询中:
{ "constant_score" : { "query" : { "term" : { "user" : "kimchy"} }, "boost" : 1.2 } }
修改强>
使用多个提升的示例:
{
"query": {
"bool": {
"should": [{
"constant_score": {
"filter": {
"terms": {
"user": ["kimchy", "john"]
}
},
boost: 3
}
}, {
"constant_score": {
"filter": {
"terms": {
"user": ["paul", "ringo"]
}
},
boost: 2
}
}]
}
}
}