Как добавить фильтр в Completion Suggestester в 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)

Ответы

Ответ 2

Я не уверен в этом, но думаю, что вы не можете отфильтровать запрос запроса в elasticsearch.

из того, что я прочитал, это связано с тем, какая структура данных хранится в нем. elasticsearch вычисляет статистические данные о сроках, которые следует предлагать во время индекса, и использует те, которые используются для операций предложения.

Вы пытались выполнить обычный запрос в сочетании с предложением? может быть, есть другой результат?

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

Ответ 3

Невозможно фильтровать по вашему завершению. Как сказал Джаванна, функция Completion построена на FST при индексировании, поэтому вы не можете использовать фильтр здесь.

Чтобы сделать это, вы можете играть с ngram/edge ngram. Давайте прочитаем здесь, чтобы получить основную идею: http://jontai.me/blog/2013/02/adding-autocomplete-to-an-elasticsearch-search-application/