0

アプリケーション内のログ記録に ElasticSearch を使用しています。ドキュメントのすべてのフィールドをフィルター処理するログ ビューアーを作成する必要があります。

私のドキュメントは次のようになります。

    "_source": {
       "timestamp": 1373502012000,
       "userId": 6,
       "paId": 56331,
       "lId": 6,
       "prId": 2,
       "vId": 6336,
       "actionType": "LOAD_DATA"
    }

actionType列挙型 (Java) です。

次の SQL クエリに相当する ElasticSearch を作成する必要があります。

SELECT * FROM snapshot.action_log_item 

WHERE timestamp BETWEEN 1372718783286 AND 1372718783286

AND userId=6 
AND paId=56331 
AND lId=6 
AND prId=2 
AND vId=6336
AND (
    actionType='LOAD_DATA' OR 
    actionType='SAVE_DATA' OR 
    actionType='LOG_IN'
);

SQL ステートメントと同等の結果を得るために、適切にネストされたクエリやフィルターを作成するのを手伝ってください。

編集これが私の現在のコードです(その{ "or"...部分がなくても機能します)。

{
  "query" : {
    "bool" : {
      "must" : [ {
        "term" : {
          "userId" : 6
        }
      }, {
        "term" : {
          "lId" : 6
        }
      }, {
        "term" : {
          "vId" : 6336
        }
      } ]
    }
  },
  "filter" : {
    "and" : {
      "filters" : [ {
        "term" : {
          "paId" : 56331
        }
      }, {
        "range" : {
          "timestamp" : {
            "from" : 1372718783286,
            "to" : 1377643583286,
            "include_lower" : true,
            "include_upper" : true
          }
        }
      }, {
        "or" : {
          "filters" : [ {
            "term" : {
              "actionType" : "LOAD_DATA"
            }
          }, {
            "term" : {
              "actionType" : "SAVE_DATA"
            }
          }, {
            "term" : {
              "actionType" : "LOG_IN"
            }
          } ]
        }
      } ]
    }
  }
}

編集:次のクエリは機能します。上記と同じクエリではありませんが、期待される結果が返されます。actionTypeこれらのフィルター/クエリはフィールドでは機能しないようです。

{
  "size": 30, 
  "query": {
    "filtered": {
      "query": {
        "bool": {
          "must": [
            {
              "term": {
                "uId": 6
              }
            },
            {
              "term": {
                "loId": 6
              }
            },
            {
              "term": {
                "prId": 2
              }
            },
            {
              "terms": {
                "paId": [
                  56331,
                  56298
                ],
                "minimum_should_match": 1
              }
            }
          ]
        }
      },
      "filter": {
        "range": {
          "timestamp": {
            "from": 1372718783286,
            "to": 1377643583286,
            "include_lower": true,
            "include_upper": true
          }
        }
      }
    }
  }
}
4

1 に答える 1