我正在进行查询,基本过滤的多重匹配查询按计划工作,它返回我想要的文档.
问题是想要提升具有某个字符串字段的结果.0.5,或者在这个例子中给出没有该字段'traded_as'的结果为负增益1.0.
无法获得过滤器 - 提升 - 必须 - 存在/缺失按我的意愿工作.
这是解决这个问题的正确方法吗?
使用elasticsearch 1.5.2
{
"query": {
"filtered": {
"query": {
"multi_match": {
"query": "something",
"fields": ["title", "url", "description"]
}
},
"filter": {
"bool": {
"must": {
"missing": {
"field": "marked_for_deletion"
}
}
}
}
}
},
"boosting": {
"positive": {
"filter": {
"bool": {
"must": {
"exists": {
"field": "traded_as"
}
}
}
}
},
"negative": {
"filter": {
"bool": {
"must": {
"missing": {
"field": "traded_as"
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 问题1:我们可以仅在不提及索引时的提升值的情况下进行查询时间提升(使用dismax)吗?
问题2:使用查询时间提升进行索引时间提升有哪些优点/缺点,反之亦然.
查询时间和索引时间提升:
在索引时,您可以选择提升特定文档(完全或仅仅是字段).这在内部存储为规范编号的一部分,必须启用该编号才能使其生效.执行索引时间提升并不常见.在查询时,我们先前已经描述了如何在需要时提高或降低查询的特定子句.稍后将演示强大的Disjunction-Max(简称dismax)查询,它可以自动将搜索应用于具有不同提升级别的多个字段.
- "Solr 1.4企业级搜索服务器"一书第4章的图表
嗨,我是弹性搜索的新手,我要根据布尔值提示尝试提升.
我有一个文章列表,我想得到所有文章里面的标题"louvre".
并在非活动文章之前提升活动文章.我仍然希望能够看到活动和非活动文章.但在列表的顶部是活跃的.
这是我到目前为止所得到的:
{
"query": {
"multi_match" : {
"query": "louvre",
"fields": [ "title", "isActive(true)^3", "isActive(false)^2" ]
}
}
}
Run Code Online (Sandbox Code Playgroud)