首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Elasticsearch中查询多个字段相同但boosts不同的类型?

如何在Elasticsearch中查询多个字段相同但boosts不同的类型?
EN

Stack Overflow用户
提问于 2014-11-20 00:28:13
回答 1查看 94关注 0票数 0

我有3种类型:[place, doctor, article],每种类型都有一个名为title的字段。article类型有一个名为body的额外字段。我想要匹配一个查询这3种类型的标题字段与不同的提升数字。例如:医生的头衔提升了3,而place的头衔提升了2。

如何实现这个查询?(我只想要请求正文)

EN

回答 1

Stack Overflow用户

发布于 2014-11-20 00:46:31

具体到用例,实现这一点的一种方法是使用function_score

您匹配标题,并为每个单独的类型提供增强。示例查询应该是以下行中的内容:

代码语言:javascript
复制
{
    "query" : {
        "function_score" : {
            "query" : {
                "match" : {
                    "title" : "Lucky Jim"
                }
            },
            "functions" : [
                {
                    "filter": {
                        "type" : {
                            "value" : "doctor"
                        }
                    },
                    "boost_factor" :  3
                },
                {
                    "filter": {
                        "type" : {
                            "value" : "place"
                        }
                    },
                    "boost_factor" :  2
                }
            ],
            "score_mode": "first",
            "boost_mode": "multiply"
        }
    }
}

注意:对于elasticsearch 1.4及更高版本,根据文档boost_factor in functions已被弃用,应由weight取代。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27021932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档