Mongoosastic,如何进行地理距离查询

laren0815

我的模式看起来像这样的猫鼬:

var articleSchema = new Schema({
    Name: {type: String, es_indexed: true},        
    geo_with_lat_lon: {
        geo_point: {
            type: String,
            es_type: 'geo_point',
            es_lat_lon: true
        },
        lat: {type: Number},
        lon: {type: Number}
    },
    ...
});

我添加了一个新文档:

var artikel = new global.DBModel.article({
      Name:"Test",
      geo_with_lat_lon:{lon:-70,lat:40}
});
artikel.save(...);

现在我想按距离过滤。我的查询如下所示:

global.DBModel.article.search({
        "bool": {
            "must": {
                "match_all": {}
            },
            "filter" :{
                "geo_distance": {
                    "distance": "200km",
                    "geo_with_lat_lon": {
                        "lat": 40,
                        "lon": -70
                    }
                }
            }
        }
    }, {...}

但是我总是会得到错误

{
    "error": {
      "root_cause": [
        {
          "type": "query_parsing_exception",
          "reason": "failed to find geo_point field [geo_with_lat_lon]",
          "index": "articles",
          "line": 1,
          "col": 127
        }
      ],
      "type": "search_phase_execution_exception",
      "reason": "all shards failed",
      "phase": "query",
      "grouped": true,
      "failed_shards": [
        {
          "shard": 0,
          "index": "articles",
          "node": "YdQHw7nSRc-T0LwItupmmw",
          "reason": {
            "type": "query_parsing_exception",
            "reason": "failed to find geo_point field [geo_with_lat_lon]",
            "index": "articles",
            "line": 1,
            "col": 127
          }
        }
      ]
    },
    "status": 400   }

我的问题是:如何正确地按距离过滤?

laren0815

谢谢Paradise228,它是映射。

这项工作:

...geo_with_lat_lon: {
        geo_point: {
            es_indexed: true,
            type: String,
            es_type: 'geo_point',
            es_lat_lon: true
        },
        lat: {type: Number},
        lon: {type: Number}
    },...

使用此映射:

global.DBModel.store.createMapping(function (err, mapping) {
    if (err) {
        console.log('error creating mapping (you can safely ignore this)');
        console.log(err);
    } else {
        console.log('mapping created!');
        console.log(mapping);
    }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何进行单个查询

来自分类Dev

如何进行复杂的查询

来自分类Dev

如何按距查询点的距离排序地理空间查询

来自分类Dev

Apache Airflow-如何进行地理编码?

来自分类Dev

如何进行递归LINQ查询?

来自分类Dev

如何进行jQuery媒体查询?

来自分类Dev

如何进行django模型查询

来自分类Dev

Django-如何进行此查询

来自分类Dev

mysql如何进行这样的查询

来自分类Dev

如何进行高级搜索查询?

来自分类Dev

如何进行此SQL查询?

来自分类Dev

我如何进行此查询

来自分类Dev

GraphQL 如何进行关系查询?

来自分类Dev

如何进行正确的 UPDATE 查询?

来自分类Dev

如何进行快速查询

来自分类Dev

从MongoDB查询时如何获得距离(地理空间概念)

来自分类Dev

Elasticsearch 地理距离查询范围

来自分类Dev

ElasticSearch脚本查询和地理距离查询

来自分类Dev

如何使用mongoosastic + AJAX进行即时搜索?

来自分类Dev

在React Native中如何进行反向地理编码

来自分类Dev

如何进行转换SQL内部连接查询与实体框架

来自分类Dev

rethinkdb-如何进行嵌套“组”查询

来自分类Dev

如何进行Active Record查询以允许按价值查找

来自分类Dev

如何进行Facebook FQL查询以选择所有朋友

来自分类Dev

如何进行计划的MySql查询以每小时提取数据?

来自分类Dev

如何进行使用AND和OR的条件猫鼬查询?

来自分类Dev

如何进行处理丢失记录的SQL查询?

来自分类Dev

如何进行GQL查询(使用gcloud-python)

来自分类Dev

如何进行色调调整并编写查询表?