7

ElasticSearchインデックスからデータを削除するために使用しようとしている次のクエリがあります。

{
    "filter": {
        "and": [
            {
                "range": {
                    "Time": {
                        "from": "20120101T000000",
                        "to": "20120331T000000"
                    }
                }
            },
            {
                "term": {
                    "Source": 1
                }
            }
        ]
    }
}

このクエリに基づいてドキュメントを削除しようとしました。このクエリは、インデックスに対して実行すると正常に結果を返します。しかし、インデックスに対して削除コマンドを実行しようとしても、何も起こりません。

クエリを間違って作成しているのか、それとも他に何があるのか​​わかりません。

4

1 に答える 1

11

フィルタのみを使用していますが、クエリAPIによる削除にはおそらくクエリが必要です。次のようなフィルタリングされたクエリを使用して、フィルタをクエリに変換できます。

{
    "filtered" : {
        "query" : {
            "match_all" : {}
        },
        "filter": {
            "and": [
                {
                    "range": {
                        "Time": {
                            "from": "20120101T000000",
                            "to": "20120331T000000"
                        }
                    }
                },
                {
                    "term": {
                        "Source": 1
                    }
                }
            ]
        }
    }
}

それ以外の場合は、2つのmust句を含むboolクエリを使用してフィルタをクエリに変換できるため、フィルタされたクエリはもう必要ありません。とにかく、フィルターの方が速いので、フィルターのアプローチの方が良いと思います。

于 2012-09-13T07:47:29.500 に答える