当前位置: 首页 > 面试题库 >

elasticsearch双面

滕夜洛
2023-03-14
问题内容

我想运行一个elasticsearch查询,该查询按两个不同字段(纬度和经度)的组合对数据进行分组

curl -XGET http://www.my_server:9200/idx_occurrence/Occurrence/_search?pretty=true -d '{  
    "query": { 
        "query_string" : { 
            "fields" : ["genus_interpreted","dataset"], 
            "query": "Pica 2", 
            "default_operator" : "AND" 
         } 
    }, 
    "facets": { 
        "test": { 
            "terms": { 
                "fields" :["decimalLatitude","decimalLongitude"],
                "size" : 500000000 
            } 
        } 
    } 
}'

它提供的结果比预期的要多一倍…知道吗?

答案的更多相关部分是…

_shards":{
    "total":5,
    "successful":5,
    "failed":0
},
"hits":{
    "total":**37**,
    "max_score":3.9314494,
    "hits":[{

如果我不应用这些方面,则总点击数是37。该总数是构面总数的一半(请参见下文)

"facets":{
    "test":{
        "_type":"terms",
        "missing":0,
        "total":**74**,
        "other":0,
        "terms":[
           {"term":"167.21665954589844","count":5},
           {"term":"167.25","count":4},
           {"term":"167.14999389648438","count":4},
           {"term":"167.1041717529297","count":4},
           {"term":"-21.04166603088379","count":4},.....

因此,构面分组是分别进行的(按纬度然后按经度)。

请注意,我不能仅按纬度或经度分组,因为多个记录可以共享纬度(但具有不同的经度),反之亦然。


问题答案:

您要在多个字段上进行TermsFacet:纬度和经度。这意味着纬度和经度是一个唯一的字段,它们被汇总在一起。您会看到每个单个值的条目,可以是纬度或经度。返回74个条目的事实证明,索引中有74个不同的纬度和经度值,这是有道理的。您到底想实现什么?每个纬度经度对对应一个方面?在这种情况下,您有两种选择:

  • 向包含该对本身的索引添加一个附加字段,然后在其上进行构面
  • 使用术语脚本即时创建纬度经度对。查看文档以了解更多信息。这是一个应该有所帮助的示例,请尝试一下:
{
    "query" : {
        "match_all" : { }
    },
    "facets" : {
        "tags" : {
            "terms" : {
                "field" : "latitude",
                "script" : "term + \"_\" + _source.longitude"
            }
        }
    }
}


 类似资料:
  • 我有一个关于浮点数的机器ε的天真问题。 我们知道,双浮点数的机器ε约为10^-16,而浮点数的最小严格正值可以小到10^{-300}。既然机器ε是相对误差的上限,那么使用这个比机器ε小得多的数字10^{-300}有什么意义呢? 我一定是误解了浮点表示。你能澄清一下吗?

  • 给定问题: 0/1-背包问题,n个项目的权值为w_i和v_i。求权重加起来为权重W的项目的最大总价值。 但有两个难题: 背包中所有物品的总重量必须正好是w。 项目总量必须为偶数。 我想找到一个算法,同时关注这两个问题。我已经发现了如何一次性关注其中一个。 现在我的问题是如何实现这两个难题一起工作。有办法解决这个吗? (如果我的问题有什么不清楚的地方,尽管问!)

  • Elasticsearch 来源于作者 Shay Banon 的第一个开源项目 Compass 库,而这个 Java 库最初的目的只是为了给 Shay 当时正在学厨师的妻子做一个菜谱的搜索引擎。2010 年,Elasticsearch 正式发布。至今已经成为 GitHub 上最流行的 Java 项目,不过 Shay 承诺给妻子的菜谱搜索依然没有面世…… 2015 年初,Elasticsearch

  • Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎。 Elasticsearch是一个基于Lucene的实时分布式的搜索与分析引擎,集成了安全、SQL、机器学习、告警、监控等高级特性,被广泛应用于实时日志分析处理、信息检索、以及数据的多维查询和统计分析等场景。 目前仅支持只读对接腾讯云的Elasticsearch。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中

  • ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。 使用 首先需要引入 Guzzle-Swoole: composer require yurunsoft/guzzle-swoole 实例化

  • Elastic Stack Overview 多节点 Elasticsearch 集群部署 RPM 安装1. 环境准备(1 master/ingress node, 2 data node) // 2 data node, 1 master/ingress node $ for i in master data01 data02 ; do ssh $i.mylabserver.com 'hostn