ES実戦シーン1:existsフィールド使用

584 ワード

ビジネスシーン:ドキュメントに格納されるデータには、dg,ws,lsの3つのフィールドがあります.この3つのフィールドは同じドキュメントに1つしか存在しませんが、ESはドキュメントをシーケンス化する場合、空の値はデフォルトでシーケンス化されません.現在はdgまたはwsの値のあるデータだけをクエリーしたいのですが、どのようにクエリーしますか?
思考:MySQLでは、あるフィールドがnullではなく、別の2つのフィールドis nullに相当します.ESはフィールドが空のデフォルトでシーケンス化されていないことが知られているので、MySQLであれば、次のような書き方に相当します.
select * from data_doc where dg is not null;

ソリューション:ESでは、existでフィールドの存在を判断できます.書き方は次のとおりです.
{
    "query": {
        "exists": {
            "field": "dg"
        }
    }
}

最終改定は2020年4月12日15:48:02