我正在尝试按照文档中的描述执行以下操作(目前可能已过时)。
https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html
我会将那里描述的场景调整为我想要实现的目标。
假设我们的索引中有两种类型:blog_t1 用于关于主题 1 的博客文章,而 blog_t2 用于关于主题 2 的博客文章。这两种类型都有一个标题字段。
然后,我只想将查询提升应用于 blog_t1 的标题字段。
在以前的 Elasticsearch 版本中,您可以使用 blog_t1.title 和 blog_t2.title 从类型中引用字段。所以提升其中一个就像 blog_t1.title^2 一样简单。
但是从 Elasticsearch 2.x 开始,一些旧的类型支持已被删除(有充分的理由,比如消除歧义)。此处描述了这些更改。
https://www.elastic.co/guide/en/elasticsearch/reference/current/break_20_mapping_changes.html
所以我的问题是,如何在 multi_match 查询中使用 Elasticsearch 2.x 对 blog_t1 类型而不是 blog_t2 进行标题提升?
查询将是这样的,但这显然不起作用,因为type.field不再是一个东西。
GET /my_index/_search
{
"query": {
"multi_match": {
"query": "Hello World",
"fields": [
"blog_t1.title^2",
"blog_*.title",
"author",
"content"
]
}
}
}
仅供参考,到目前为止,我发现的唯一解决方案是给标题起不同的名称,例如 blog_t1 的 title_boosted 和其他标题的标题,这在使用信息时是有问题的,因为我不能再使用“标题”作为独特的东西。
谢谢。