搜索错误:[parse_exception]无法解析搜索源。期望的字段名称,但得到[START_OBJECT]

时间:2017-04-17 12:41:37

标签: javascript elasticsearch

我正在查询解析异常。我正在使用javascript。我的配置存在于elastic.js文件中。

如果删除过滤后的部分,我会得到结果。但是如果我添加它,我就会得到异常

var client = require('./elastic.js');

client.search({
    index: 'test-2017.03.25',
    size: 0,
    body: {
        query: {
            bool: {
                must: {
                    match: {
                        status: 502,
                    }
                },

            },
            filtered: {
                query: {
                    range: {
                        timestamp: {'gt': 1490380200000}
                    }
                }
            }
        }
    }
}, function (error, response, status) {
    if (error) {
        console.log("search error: " + error)
    }
    else {
        console.log("--- Response ---");
        console.log(response);
        console.log("--- Hits ---");
        response.hits.hits.forEach(function (hit) {
            console.log(hit);
        })
    }
});

这是我的对象映射:

"test-2017.03.02": {
    "mappings": {
      "log": {
        "properties": {
          "@timestamp": {
            "type": "date",
            "format": "strict_date_optional_time||epoch_millis"
          },
          "@version": {
            "type": "string"
          },
          "beat": {
            "properties": {
              "hostname": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "body_bytes_sent": {
            "type": "string"
          },
          "count": {
            "type": "long"
          },
          "fields": {
            "properties": {
              "label": {
                "type": "string"
              }
            }
          },
          "host": {
            "type": "string"
          },
          "http_referrer": {
            "type": "string"
          },
          "http_user_agent": {
            "type": "string"
          },
          "input_type": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "offset": {
            "type": "long"
          },
          "remote_addr": {
            "type": "string"
          },
          "remote_user": {
            "type": "string"
          },
          "request": {
            "type": "string"
          },
          "request_method": {
            "type": "string"
          },
          "request_time": {
            "type": "double"
          },
          "source": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "tags": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        }
      }
    }
  }

我希望根据状态和请求获取该数据,并使用timestamp字段进行过滤。

我收到以下错误:

搜索错误:[parse_exception]无法解析搜索源。预期字段名称但得到[START_OBJECT]

请帮忙。

示例文档:

{
  "_index": "test-2017.03.25",
  "_type": "log",
  "_id": "JI9u8hGG8y8gGUk",
  "_score": 1.0,
  "_source": {
    "@version": "1",
    "@timestamp": "2017-03-25T00:00:01.617Z",
    "count": 1,
    "offset": 1114273370,
    "type": "log",
    "input_type": "log",
    "fields": {
      "label": "test"
    },
    "source": "/var/log/nginx/access.log",
    "tags": [
      "_grokparsefailure"
    ],
    "time": "25/Mar/2017:05:30:00 +0530",
    "body_bytes_sent": "81",
    "request_time": 0.052,
    "status": "200",
    "request": "GET /api/test?status=test HTTP/1.1",
    "request_method": "GET",
    "http_referrer": "-",
    "http_user_agent": "Java/1.8.0_31"
  }
}

1 个答案:

答案 0 :(得分:1)

您的查询无效,请将其更改为:

client.search({
    index: 'test-2017.03.25',
    size: 0,
    body: {
        query: {
            bool: {
                filter: [
                  {
                    match: {
                        status: 502,
                    }
                  },
                  {
                    range: {
                        '@timestamp': {'gt': 1490380200000}
                    }
                  }
                ]
            }
        }
    }