如何在ElasticSearch中向Completion Suggester添加过滤器?

zuk*_*uko 23 elasticsearch

有谁知道如何向建议者添加过滤器?

这非常有效:

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我希望强制ElasticSearch从数据子集构建建议列表,例如:

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
},
"filter" : {
    "term" : { "mydifferentfield" : "someword" }
}
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?

(我使用的是elasticsearch 0.90.5)

小智 21

根据1.2.0版,您可以向建议者添加上下文并获取过滤后的建议.

介绍性博客文章

完整文档


pho*_*oet 1

我对此不太确定,但我认为您无法在elasticsearch中过滤建议请求。

根据我的阅读,这是由于它存储的数据结构类型所致。elasticsearch 在索引时计算要建议的术语的统计数据,并将这些数据用于建议操作。

您是否尝试结合建议执行正常查询?也许会有不同的结果?

curl -s -XPOST 'localhost:9200/_search' -d '{
  "query" : {
    ...
  },
  "suggest" : {
    ...
  }
}'
Run Code Online (Sandbox Code Playgroud)

  • 不支持过滤器。FST 构建在内存中并在索引时保持最新,无法在查询时过滤掉建议。 (6认同)