web-dev-qa-db-ja.com

Elasticsearchドキュメントにフィールドが存在するかどうかを確認する最良の方法

非常に愚かな質問かもしれません。elasticsearchのドキュメントのフィールドが存在するかどうかを確認する最良の方法は何ですか?ドキュメントに何も見つかりません。

たとえば、このドキュメントにフィールド/キー「価格」がない場合、結果を返したくありません。

{「更新」:「2015/09/17 11:27:27」、「名前」:「アイシャドウ」、「フォーマット」:「1.5 g/0.05オンス」、}

私は何ができますか?

ありがとう

exists filterbool/must filter を次のように組み合わせて使用​​できます。

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "exists": {
                "field": "price"
              }
            },
            ...     <-- your other constraints, if any
          ]
        }
      }
    }
  }
}

非推奨(ES5以降)missing filterbool/must_notと組み合わせて使用​​することもできますフィルター

{
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must_not": [
            {
              "missing": {
                "field": "price"
              }
            }
          ]
        }
      }
    }
  }
}
43
Val

existsフィルターは、ES 2.1からexistsqueryに置き換えられましたが、動作は同じです。また、欠落しているフィルターは削除され、欠落しているクエリは非推奨になりました。

特定のフィールドを持つすべてのドキュメントを取得するには、

"bool": {
    "must": {
        "exists": {
            "field": "my_field"
        }
    }
}

特定のフィールドを持たないすべてのドキュメントを取得するには、must_not このような

"bool": {
    "must_not": {
        "exists": {
            "field": "my_field"
        }
    }
}

エラスティックドキュメント: https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-missing-query.html

11
Devi

Existsフィルターを使用できます:

{
  "query": {
    "filtered": {
      "filter": {
        "exists": {
          "field": "status"
        }
      },
      "query": {
        "match_all": {}
      }
    }
  }
}

よろしく、アラン

9
adouang

直接できる

{
    "query": {
        "exists": {
            "field": "fieldName"
        }
    }
}

マッチを追加したい場合は、

{
    "query": {
        "bool": {
            "must": [{
                "match": {
                    "fieldName": "value"
                }
            },
            {
                "exists": {
                    "field": "fieldName"
                }
            }]
        }
    }
}

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html

9
Surya Purohit
GET /_search
{
    "query": {
        "exists" : { "field" : "price" }
    }
}

ソース: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html

1
Thiago Falcao