elasticsearch 弹性搜索流行度回退
如果找不到点击率,我会在查询中退回到受欢迎度排名。每周我都会根据上个月访问文档的次数计算一个
elasticsearch 弹性搜索流行度回退,
elasticsearch,lucene,
elasticsearch,Lucene,如果找不到点击率,我会在查询中退回到受欢迎度排名。每周我都会根据上个月访问文档的次数计算一个popRank字段。这意味着并非所有的文档都有popRank,只有上个月访问过的文档 下面的查询不适用于must子句,即使存在包含该类别的项 GET /index/docs/_search { "size": 10, "query": { "bool": { "should": [{ "terms": {
popRank
字段。这意味着并非所有的文档都有popRank
,只有上个月访问过的文档
下面的查询不适用于must
子句,即使存在包含该类别的项
GET /index/docs/_search
{
"size": 10,
"query": {
"bool": {
"should": [{
"terms": {
"body": [<array of keyword strings>]
}
}, {
"constant_score": {
"filter": {
"match_all": {}
},
"boost": 0
}
}],
"must": [{
"terms": {
"category": ["DIY"],
"boost": 0
}
}],
"minimum_should_match": 1
}
},
"sort": [{
"_score": {
"order": "desc"
}
}, {
"popRank": {
"unmapped_type": "double",
"order": "desc"
}
}]
}
没有ES 1.5.5发行版,你是说1.4.5吗?我已经尝试过ES 1.4.5,我确实在对上述请求的响应中得到了一个
sort
元素。您能显示您得到的响应吗?抱歉,将ES版本修改为1.5.1,添加了一个doc减去文本正文的示例,因为正文没有命中。不确定排序是否与此有关。我能够用ES 1.4.4重新索引所有内容,但排序不会出现,它不会返回任何类似于1.5.1的内容,因此版本不是问题所在。如果我删除must
子句,我将获得结果;如果我将类别
移至should
部分,我将获得结果。我甚至试着在<代码>必须<代码>中把<代码>分类为至少一个项目的精确匹配项,但没有运气。我已经改写了问题,删除了对不重要的非线索的引用
{
"_index": "index",
"_type": "docs",
"_id": "Fridays",
"_score": 1,
"_source": {
"id": "Fridays",
"body": "text...",
"category": [
"DIY",
"Kitchen"
],
"popRank": 1
}
}