非常に愚かな質問かもしれません。elasticsearchのドキュメントのフィールドが存在するかどうかを確認する最良の方法は何ですか?ドキュメントに何も見つかりません。
たとえば、このドキュメントにフィールド/キー「価格」がない場合、結果を返したくありません。
{「更新」:「2015/09/17 11:27:27」、「名前」:「アイシャドウ」、「フォーマット」:「1.5 g/0.05オンス」、}
私は何ができますか?
ありがとう
exists
filter と bool/must
filter を次のように組み合わせて使用できます。
{
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"exists": {
"field": "price"
}
},
... <-- your other constraints, if any
]
}
}
}
}
}
非推奨(ES5以降)missing
filter を bool/must_not
と組み合わせて使用することもできますフィルター :
{
"query": {
"filtered": {
"filter": {
"bool": {
"must_not": [
{
"missing": {
"field": "price"
}
}
]
}
}
}
}
}
exists
フィルターは、ES 2.1からexists
queryに置き換えられましたが、動作は同じです。また、欠落しているフィルターは削除され、欠落しているクエリは非推奨になりました。
特定のフィールドを持つすべてのドキュメントを取得するには、
"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
Existsフィルターを使用できます:
{
"query": {
"filtered": {
"filter": {
"exists": {
"field": "status"
}
},
"query": {
"match_all": {}
}
}
}
}
よろしく、アラン
直接できる
{
"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
GET /_search
{
"query": {
"exists" : { "field" : "price" }
}
}
ソース: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-exists-query.html