当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在弹性搜索中通过地理定位进行查询?

冀弘厚
2023-03-14

所以我正在用ElasticSearch做实验,这就是我所做的。

1)在我的索引上添加了一个名为“test”的geo_point映射

curl -XPOST localhost:9200/test -d '{
    "mappings" : {
        "type1" : {
            "_source" : { "enabled" : false },
            "properties" : {
                "location" : { "type" : "geo_point", "index" : "not_analyzed" }
            }
        }
    }
}'

2)对测试中的文档进行索引:

curl -XPUT 'localhost:9200/test/type1/1?pretty' -d '{
 "location" : {
                "lat" : 74,           
                "lon" : 90            
              }                      
}'  

3)然后通过地理定位过滤器编写一个查询,如下所示:

curl -XPOST 'localhost:9200/test2/_search?pretty' -d '{
    "filtered" : {
        "query" : {
            "match_all" : {}
},
        "filter" : {
            "geo_distance" : {
                "distance" : "200km",
                "location" : {
                    "lat" : 40,
                    "lon" : -70
                }
            }
        }
    }
}'

为此我得到:

“错误”:“SearchPhaseExecutionException[未能执行阶段[query],所有碎片都失败;shardFailures{[QpGEHtdcReeYmt8X2tG26g][test2][0]:RemoteTransportException[[Jest][Inet[/10.58.91.21:9301]][Search/phase/query]];嵌套:SearchParseException[[test2][0]:from[-1],size[-1]:解析失败[未能解析源[na]]];嵌套:ElasticSearchParseException[未能从

共有1个答案

黄伟
2023-03-14

首先,在您的查询(即第3段代码)中,localhost:9200/test2/_search?pretty应该是localhost:9200/test/_search?pretty,即您没有查询正确的索引。

那么您的查询只是缺少query关键字(即filtered应该包含在query中),应该如下所示:

curl -XPOST 'localhost:9200/test/_search?pretty' -d '{
    "query": {
        "filtered": {
            "query": {
                "match_all": {}
            },
            "filter": {
                "geo_distance": {
                    "distance": "200km",
                    "location": {
                        "lat": 40,
                        "lon": -70
                    }
                }
            }
        }
    }
}
 类似资料:
  • 我得到的回答是。。。 {"错误":{"root_cause":[{"type":"illegal_argument_exception","原因":"畸形动作/元数据行[2],预期START_OBJECT或END_OBJECT找不到[VALUE_STRING]"}],"type":"illegal_argument_exception","原因":"畸形动作/元数据行[2],预期START_OBJ

  • 尝试使用通配符进入和弹性搜索精确短语搜索时遇到问题query_string。 希望能够返回结果,这将是所有变体的精确短语。i、 e.“库尔斯酿酒厂”、“库尔斯酿酒厂”、“库尔斯酿酒厂”等。 我不同意这种方法,但想搜索大部分文档以找到匹配的1或2个字段。

  • 我正在使用以下搜索: 我现在想使用弹性搜索在索引过程中提供的id ()来过滤结果。例如,{}。我猜你得用查询这个词。结果应该是只有当< code>_id匹配时,文档才返回。我该怎么做呢?

  • 我想通过数组映射,但我得到一个错误:TypeError: locationAddress.map不是一个函数 我是新来的反应和反应钩。我一直试图简化数组,但运气不好。知道为什么这不起作用吗? 编辑:到目前为止,我尝试了答案中的所有更改,但错误仍然存在。我包括了更多的代码和包。json文件。我尝试停用一些函数,如useEffect,现在只有在我尝试键入要映射的输入字段时才会显示错误。 找到解决方案:

  • 我有一个用于elastic search的qbox实例(关于qbox elasticsearch的更多详细信息可以通过自定义tcp端口在http://qbox.io/找到)。当我试图通过nutch访问实例进行索引时,我得到以下错误:

  • 我有以下格式的弹性搜索文档 } } 我的要求是,当我搜索特定字符串(string.string)时,我只想获得该字符串的FileOffSet(string.FileOffSet)。我该怎么做? 谢谢