我是弹性系统的新手,我只是设置它并尝试默认搜索。我正在使用elasticsearch rails gem。我需要使用优先级搜索来编写自定义查询(表中的某些字段比其他字段更重要,等等。标题,过去6个月中的updated_at ......)。我试图找到解释或教程如何做到这一点,但似乎没有什么是可以理解的。很快,任何人都可以帮助我。
答案 0 :(得分:1)
从未使用过ruby / elasticsearch集成,它似乎并不太难......文档here表明你想要做这样的事情:
client.search index: 'my-index', body: { query: { match: { title: 'test' } } }
进行基本搜索。
ES文档here显示了如何进行字段提升查询:
{
"multi_match" : {
"query" : "this is a test",
"fields" : [ "subject^3", "message" ]
}
}
总而言之,你会做这样的事情:
client.search index: 'my-index', body: { query: { multi_match : {
query : "this is a test",
fields : [ "subject^3", "message" ]
} } }
这将允许您搜索/增强字段 - 在上述情况下,主题字段的给出是消息字段分数的3倍。
关于如何进行高级评分有一个非常好的blog post。其中一部分显示了根据日期调整分数的示例:
...
"filter": {
"exists": {
"field": "date"
}
},
"script": "(0.08 / ((3.16*pow(10,-11)) * abs(now - doc['date'].date.getMillis()) + 0.05)) + 1.0"
...