2017-03-13 16 views
0

は、ここで私はESに保存されている例の記録は次のとおりです。 Elasticsearch複数のフィールドまたはクエリ

"taskCurateStatus": true, 
    "taskMigrateStatus": true, 
    "verifiedFields": 7, 
    "taskId": "abcdef123", 
    "operatorEmail": "[email protected]" 

Example Query I'm making via /_search: 
{ 
    "sort": [ 
    { 
     "@timestamp": { 
     "order": "desc" 
     } 
    } 
    ], 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "match": { 
      "msg.operator_email": "[email protected]" 
      } 
     } 
     { 
      "range": { 
      "@timestamp": { 
       "gte": "2017-03-05", 
       "lte": "2017-03-12" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "from": 0, 
    "size": 50 
} 

は基本的に私はまた taskCurateStatusまたは taskMigrateStatusいずれかが真である文書によってフィルタリングします。メッセージの中には、それらのうちの1つしか定義されていない私は shouldクエリを使用することを考えていましたが、それが matchクエリでどのように機能するかはわかりません。どんな助けもありがとう。ありがとう

答えて

2

あなたは、必要フィルタの中に別のブール型フィルタを追加することができます。このブールフィルタを使用すると、

{ 
    "sort": [{ 
     "@timestamp": { 
      "order": "desc" 
     } 
    }], 
    "query": { 
     "bool": { 
      "must": [{ 
       "match": { 
        "msg.operator_email": "[email protected]" 
       } 
      }, { 
       "range": { 
        "@timestamp": { 
         "gte": "2017-03-05", 
         "lte": "2017-03-12" 
        } 
       } 
      }, { 
       "bool": { 
        "should": [{ 
         "term": { 
          "taskCurateStatus": { 
           "value": true 
          } 
         } 
        }, { 
         "term": { 
          "taskMigrateStatus": { 
           "value": true 
          } 
         } 
        }] 
       } 
      }] 
     } 
    }, 
    "from": 0, 
    "size": 50 
} 

は、上記のクエリを見て、 おかげ

役立ちますかどうブールチェックフィルタの両方を組み合わせたフィルタする必要があるとのブールフラグを比較することができすべき句をimplemenetすることができます
関連する問題