Фильтр эластичной строки поиска - существует ли такая опция? - PullRequest
0 голосов
/ 04 декабря 2018

Мне интересно, есть ли такая опция, как строковый фильтр?

Недавно я столкнулся со следующей ошибкой:

RequestError (400, 'search_phase_execution_exception', 'too_many_clauses: maxClauseCount имеет значение 1024 ')

Согласно документации Lucene, в нем говорится:

Используйте фильтр для замены части запроса, которая вызывает исключение.

У вас есть идеи?

1 Ответ

0 голосов
/ 04 декабря 2018

В FAQ Lucene упоминается несколько подходов к преодолению исключения TooManyClauses, которое не применяется к Elasticsearch, как раньше, когда раньше они имели фильтр терминов отдельно, но теперь его часть запросов запроса сама.

ниже приведен пример использования терминов в контексте фильтра:

{
  "query": { 
    "bool": { 

      "filter": [ 
        { "term":   { "user" : ["kimchy", "elasticsearch"]}, 

      ]
    }
  }
}

Если вам действительно нужно использовать запрос вместо фильтра, вы можете обновить indices.query.bool.max_clause_count: n вasticsearch.yml(замените n на нужное количество предложений) файл каждого узла кластера и перезапустите кластер.

Обратите внимание, что это увеличит требования к памяти для поиска, который расширяется до многих терминов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...