Termsの上限数について

termsで1024件を超えた数を指定した場合に、下記のエラーが発生しました。

リクエスト

GET /xxxxxx/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "xxxx_id": [
                # ここに大量のID
            ]
         }
      ]
    }
  }
}

レスポンス

{
  "error": {
    "root_cause": [
      {
        "type": "too_many_clauses",
        "reason": "too_many_clauses: maxClauseCount is set to 1024"
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    ...略
}

古い情報ですが、下記のディスカッションではtermsを使えば1024件を超えても可能だといったことが書かれていました。

これは仕様が変わったということでしょうか。

実際に1024件を超えた場合はどうするのが推奨されているでしょうか。
現状は、1024件ずつに切って、Multi Searchで検索するつもりでいますが、これが最適なのか分からず質問させていただきました。

ご教授、よろしくお願いいたします。

自己解決しました。

must ではなく、 filterを使うべきでした。

そもそもとしては、どうしてそのように多くのIDを条件に指定して検索しないといけないかなどをもう一度見直すのもいいかと思います。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.