elasticsearch Elasticsearch-显示基于给定术语的每个返回结果的索引范围计数,elasticsearch,lucene,full-text-search,aggregate,aggregation,elasticsearch,Lucene,Full Text Search,Aggregate,Aggregation" /> elasticsearch Elasticsearch-显示基于给定术语的每个返回结果的索引范围计数,elasticsearch,lucene,full-text-search,aggregate,aggregation,elasticsearch,Lucene,Full Text Search,Aggregate,Aggregation" />

elasticsearch Elasticsearch-显示基于给定术语的每个返回结果的索引范围计数

elasticsearch Elasticsearch-显示基于给定术语的每个返回结果的索引范围计数,elasticsearch,lucene,full-text-search,aggregate,aggregation,elasticsearch,Lucene,Full Text Search,Aggregate,Aggregation,首先,如果我使用的术语不正确,我道歉,因为我每天都在学习elasticsearch,可能会使用不正确的短语 在花了几天的时间试图弄明白这一点,并把我的头发拔出来之后,我似乎每次都在碰壁 我试图让elasticsearch为每个返回的结果提供一个文档计数,我将在下面提供一个示例 上述查询返回以下结果: { "took": 37, "timed_out": false, "_shards": { "total": 5, "successful": 5, "fa

首先,如果我使用的术语不正确,我道歉,因为我每天都在学习elasticsearch,可能会使用不正确的短语

在花了几天的时间试图弄明白这一点,并把我的头发拔出来之后,我似乎每次都在碰壁

我试图让elasticsearch为每个返回的结果提供一个文档计数,我将在下面提供一个示例



上述查询返回以下结果:

{
  "took": 37,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1870535,
    "max_score": 0,
    "hits": []
  },
  "aggregations": {
    "meta": {
      "doc_count": 119196,
      "name": {
        "doc_count_error_upper_bound": 0,
        "sum_other_doc_count": 0,
        "buckets": [
          {
            "key": "Aberdeen",
            "doc_count": 119196
          }
        ]
      }
    }
  },
  "suggest": {
    "city": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Aberdeen",
            "score": 100
          }
        ]
      }
    ],
    "street": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Davidson House, Aberdeen, AB15",
            "score": 80
          },
          {
            "text": "Bruce House, Aberdeen, AB15",
            "score": 80
          }
        ]
      }
    ]
  }
}

我试图实现的结果是对每个返回的结果进行总体文档计数,例如,返回的街道地址
“Aberdeen Davidson House,AB15”
将说明索引中有多少文档与此给定地址匹配,并且将对每个结果重复此操作,对城市重复此操作,与聚合城市当前显示总体计数的方式类似

  {
    "key": "Aberdeen",
    "doc_count": 119196
  }
这是一个生产中类似的例子


我相信我面对的聚合问题是,我不知道将返回的值,否则我可以使用聚合预定义它们,就像我对城市所做的那样,从而要求以这种方式对每个给定结果进行总体计数

为了帮助给出一个我如何描绘结果的整体示例,我将展示我如何描绘可能的工作结果:

"suggest": {
    "city": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Aberdeen",
            "score": 100,
            "total_addresses": 196152
          }
        ]
      }
    ],
    "street": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Davidson House, Aberdeen, AB15",
            "score": 80,
            "total_addresses": 158
          },
          {
            "text": "Bruce House, Aberdeen, AB15",
            "score": 80,
            "total_addresses": 30
          }
        ]
      }
    ]
  }
就我正在使用的elasticsearch版本而言,我有两个运行elasticsearch 2.3和5.5的开发服务器,以查看较新版本的elasticsearch是否会有所不同。不幸的是,我遇到了问题,所以我一直使用2.3支持5.5


非常感谢您提供的任何帮助或建议。

您需要将查询一分为二。首先使用suggest API收集建议,然后对结果运行聚合。这种解决方案的缺点是,对于运行时间较长的聚合,您有一个疯狂的快速建议(如果幸运的话,不到一毫秒)。如果这对你来说没问题,这可能是一个好方法


另一个想法可能是使用预先聚合的数据创建自己的建议索引,其中包含这样一个计数-此索引会定期在后台重新创建。

air,首先非常感谢您抽出时间伸出援助之手。我一直希望有人能对此有所了解,因为我已经阅读了我能找到的每一篇教程,但它们都是指一般的聚合,我能找到的任何东西都与我想要的结果相似,尽管我可能在搜索不正确的术语。至于后面的选项(专用索引,每个给定的建议都有预定义的计数,我考虑了这个问题,因为我们的地址数据每3个月只改变一次,这是非常小的变化,不需要一个完整的重新索引)……你会从这两个方面推荐什么?我想尝试和错误将是一个起点。您能否提供一些示例,说明如何使用多个查询实现第一个选项,以帮助理解我将如何在第二个查询中聚合结果。
"suggest": {
    "city": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Aberdeen",
            "score": 100,
            "total_addresses": 196152
          }
        ]
      }
    ],
    "street": [
      {
        "text": "Aberdeen",
        "offset": 0,
        "length": 8,
        "options": [
          {
            "text": "Davidson House, Aberdeen, AB15",
            "score": 80,
            "total_addresses": 158
          },
          {
            "text": "Bruce House, Aberdeen, AB15",
            "score": 80,
            "total_addresses": 30
          }
        ]
      }
    ]
  }