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

时间:2013-10-17 18:51:36

标签: elasticsearch

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

这非常有效:

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
}

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

{
"headline-suggest" : {
    "text" : "n",
    "completion" : {
        "field" : "headline_suggest"
    }
},
"filter" : {
    "term" : { "mydifferentfield" : "someword" }
}
}

我怎样才能实现它?

(我正在使用elasticsearch 0.90.5)

3 个答案:

答案 0 :(得分:20)

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

Introductory blog post

Full Docs

答案 1 :(得分:2)

我对此并不十分确定,但我认为您无法过滤弹性搜索中的建议请求。

从我读到的内容是由于它存储的数据结构类型.flasticsearch计算在索引时建议的术语的统计数据,并将其用于建议操作。

您是否尝试结合提示执行普通查询?也许会有不同的结果?

curl -s -XPOST 'localhost:9200/_search' -d '{
  "query" : {
    ...
  },
  "suggest" : {
    ...
  }
}'

答案 2 :(得分:0)

无法过滤完成。 正如javanna所说,完成功能是在索引时建立在FST上的,所以你不能在这里使用过滤器。

要做到这一点,你可以使用ngram / edge ngram。 让我们在这里阅读以获得基本想法:http://jontai.me/blog/2013/02/adding-autocomplete-to-an-elasticsearch-search-application/