是否可以对类型进行建议完成?我能够在索引上做到这一点。
POST /data/_suggest
{
"data" : {
"text" : "tr",
"completion" : {
"field" : "sattributes",
"size":50
}
}
}
当我选择某种类型时:
POST /data/suggestion/_suggest
{
"data" : {
"text" : "tr",
"completion" : {
"field" : "sattributes",
"size":50
}
}
}
suggestion
是类型。
我没有得到任何结果。我需要对两种不同类型的文章和书籍做一些建议。我是否需要创建单独的索引才能使它们正常工作,或者在弹性搜索中是否有办法实现此目的?如果我必须搜索我的索引data
,则可以获得类型article
的50个结果和book
类型的50个结果。
非常感谢任何帮助。
答案 0 :(得分:3)
Lucene没有类型概念,因此在Elasticsearch中,它们只是作为一个名为_type
的隐藏字段实现。当您搜索特定类型时,Elasticsearch会在该字段上添加过滤器。
完成建议器根本不使用传统搜索,这意味着它无法在_type
字段上应用过滤器。所以你有几个选择:
每种类型使用不同的完成建议字段,例如suggestion_sattributes
,othertype_sattributes
使用_type
作为前缀对您的数据进行索引,例如type1 actual words to suggest
,然后当您提出建议时,在查询前加上type1
使用单独的索引
事实上,上面的选项(2)目前正作为新的ContextSuggester实施,这将允许您自动执行此操作(及更多)。