0

検索を実行するときではなく、elasticsearch を使用して GET を実行するときに結果をフィルター処理したい状況があります。基本的に、エンティティの状態が破棄されていることを示すステータス フィールドを持つドキュメントがあります。GET を実行するときは、このフィールドの値を確認して、ステータスが実際に「破棄」の場合は除外する必要があります。

用語クエリを使用した検索を使用してこれを実行できることはわかっていますが、ドキュメント ID に基づくインデックスに対して GET を使用する場合はどうでしょうか。

更新: さらに調査すると、これを行う唯一の方法はパーコレーションまたは検索を使用することです。誰かが何か提案があれば、私が間違っていることを願っています。

明確にするために、私は Java API を使用しています。

ありがとう

4

1 に答える 1

1

次のようなことを試してください:

curl http://domain/my_index/_search -d '{
  "filter": {
    "and": [
      {
        "ids" : {
          "type" : "my_type",
          "values" : ["123"]
        }
      },
      {
        "term" : {
          "discarded" : "false"
        }
      }
    ]
  }
}

注: 一部のドキュメントに破棄されたフィールドが存在しない場合は、不足しているフィルターを使用することもできます。

注2:これが通常のgetリクエストよりも著しく遅くなるとは思いません...

于 2013-08-22T21:01:35.257 に答える