我在单个字段中使用Elasticsearch中的完成建议器。该类型包含多个用户的文档。有没有办法将返回的建议限制为与特定查询匹配的文档?
我目前正在使用此查询:
{
"name" : {
"text" : "Peter",
"completion" : {
"field" : "name_suggest"
}
}
}
有没有办法将此查询与另一个查询相结合,例如
{
"query":{
"term" : {
"user_id" : "590c5bd2819c3e225c990b48"
}
}
}
答案 0 :(得分:1)
查看context suggester,它只是一个具有过滤功能的专业完成建议器 - 但是这仍然不是常规查询过滤器,请记住这一点。
答案 1 :(得分:0)
您可以在查询中指定查询和建议者,如下所示:
{
"query":{
"term" : {
"user_id" : "590c5bd2819c3e225c990b48"
}
},
"suggest": {
"name" : {
"text" : "Peter",
"completion" : {
"field" : "name_suggest"
}
}
}
}
答案 2 :(得分:0)
我有一个类似的用例,我在弹性搜索论坛上发布了我的问题,请参阅AWS Tools For PowerShell
从我到目前为止所阅读的内容来看,我并不认为完成建议你可以限制文件。它们基本上在索引时创建一个有限状态传感器(前缀树),这使得它很快但你失去了对其他字段进行过滤的灵活性。我不认为上下文建议符合你的情况(如果我错了就告诉我),因为user_id的基数非常高。
我认为edge-ngrams部分匹配更灵活,可能实际上适用于您的用例。
让我知道你最终实施的内容。