Elasticsearch geo_bounding_box查询的问题

时间:2018-05-04 17:02:04

标签: python elasticsearch geolocation

我在使用geo_bounding_box查询过滤搜索结果时遇到问题。查询的第一部分按预期工作,但添加过滤器会导致错误:

elasticsearch.exceptions.RequestError:TransportError(400,'parsing_exception','[bool]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]')

我认为问题可能是由于数据的结构, geo_times 对象是多个geo_times对象的数组。我无法弄清楚查询的正确语法。我已经搜索了几个小时的错误消息,但无法找到适合我特定问题的解决方案。我究竟做错了什么?提前感谢任何输入!

数据如下:

"geo_times" : [
        {
          "node_type" : "unattributed",
          "node_name" : "IP",
          "datetime" : "2017-08-03 18:37:12.275643",
          "relative_time" : "0.268319000"
        },
        {
          "node_type" : "unattributed",
          "node_name" : "PPI Gps",
          "datetime" : "2017-08-03 23:37:30.000000",
          "lat" : "39.2865002",
          "lon" : "-76.6131298",
          "alt" : "12.529"
        },
        {
          "node_type" : "unattributed",
          "node_name" : "IP",
          "datetime" : "2017-08-03 18:37:29.514747",
          "relative_time" : "17.507423000"
        },
        {
          "node_type" : "unattributed",
          "node_name" : "PPI Gps",
          "datetime" : "2017-08-03 23:37:47.000000",
          "lat" : "39.2865282",
          "lon" : "-76.612652",
          "alt" : "9.1669"
        }]

我的查询如下:

'query': {
    'bool': {
        'must': [{
            'bool': {
                'should': [{
                    'nested': {
                        'path': 'first_seen_geo_times',
                        'query': {
                            'range': {
                                'first_seen_geo_times.datetime': {
                                    'gte': '2018-04-04',
                                    'lte': '2018-05-04',
                                    'format': 'yyyy-MM-dd||yyyy-MM-dd'
                                }
                            }
                        }
                    }
                }, {
                    'nested': {
                        'path': 'last_seen_geo_times',
                        'query': {
                            'range': {
                                'last_seen_geo_times.datetime': {
                                    'gte': '2018-04-04',
                                    'lte': '2018-05-04',
                                    'format': 'yyyy-MM-dd||yyyy-MM-dd'
                                }
                            }
                        }
                    }
                }]
            }
        }]
    },
    'filter': {
        'geo_bounding_box': {
            'geo_times': {
                'top_left': {
                    'lat': 53.69004893827236,
                    'lon': -57.527246475219734
                },
                'bottom_right': {
                    'lat': 30.417758111972528,
                    'lon': -113.23582649230958
                }
            }
        }
    }
}

0 个答案:

没有答案