3

(パーコレートプロセスのように)クエリを登録し、名前で呼び出して実行することは可能ですか?ユーザーがラベルに関連付けられた検索クエリを保存できるようにするアプリケーションを構築しています。フィルタによって生成されたクエリをESに保存したいと思います。

クエリをインデックスに保存する場合は、最初にESを呼び出してクエリを取得し、クエリを含むフィールドを抽出してから、ESを再度呼び出して実行する必要があります。1回の呼び出しでそれを行うことはできますか?

もう1つの解決策は、クエリを登録することです(_percolatorのラベルとユーザーの識別子:/ _ percolate / transaction / user1_label1

{
  "userId": "user1",
  "query":{
     "term":{"field1":"foo" }
   }
}

新しいドキュメントがある場合は、非インデックスモード(userIdごとにフィルタリング)でパーコレーターを使用して一致するクエリを取得し、フィールド "label":["user1_label1"、"user1_label2"]を追加してドキュメントを更新します。ドキュメントにインデックスを付けます。したがって、ラベル付けはインデックス作成時に行われます。

どう思いますか ?前もって感謝します。

4

1 に答える 1

3

フィルタエイリアスを試してください。

curl -XPOST 'http://localhost:9200/_aliases' -d '
{
    "actions" : [
         {
            "add" : {
                 "index" : "the_real_index",
                 "alias" : "user1",
                 "filter" : { "term" : { "field1" : "foo" } }
            }
        }
    ]
}'
于 2012-10-24T14:21:59.597 に答える