elasticsearch - 从 ElasticSearch 中按域获取 10 个最佳结果

标签 elasticsearch request

我在 ElasticSearch 中有五个不同的域,它们被索引并且应该用于全文搜索。

如果我做一个 GET 请求

GET endpoint_to_my_elastic_search/*/_search?q=test

我得到了 _score 排序的结果。到目前为止一切顺利,但我想要一个结果,显示每个域的 10 个最佳点击(按分数)。我是这样试的:
GET endpoint_to_my_elastic_search/domain1/_search?q=test&size=10
GET endpoint_to_my_elastic_search/domain2/_search?q=test&size=10
GET endpoint_to_my_elastic_search/domain3/_search?q=test&size=10
GET endpoint_to_my_elastic_search/domain4/_search?q=test&size=10
GET endpoint_to_my_elastic_search/domain5/_search?q=test&size=10

很好 - 它有效。现在我有来自每个域的 10 个最佳结果。但是域的数量将来会增加到 10 或 20。所以我必须向我的 ElasticSearch 发送 20 个请求......闻起来像性能不佳;-)

有没有办法告诉 ElasticSearch 从每个请求的域中给我最好的 10 个结果?

最佳答案

我回答了类似 question几天前 - 建议使用 top_hits阿格斯..

更新:_index 是一个元字段,因此您可以使用通配符或别名跨多个索引进行查询,并将该字段用于 agg:

curl -XPOST localhost:9200/index-*/_search?pretty -d '
{
  "aggs": {
    "top_indices": {
      "terms": {
        "field": "_index"
      },
      "aggs": {
        "top_docs": {
          "top_hits": {}
        }
      }
    }
  }
}'

关于elasticsearch - 从 ElasticSearch 中按域获取 10 个最佳结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59250202/

相关文章:

node.js - 服务器之间通信的安全方式

django - 在 App Engine 上使用 Django 处理 HTTP HEAD 请求的最佳实践

php - Elasticsearch。如何结合快速搜索实现以下原则?

java - 如何在 Elasticsearch java api 中按别名查找索引?

elasticsearch - ELK Stack-自定义自动生成的字段映射

elasticsearch - 如何将Spring数据 Elasticsearch 与DDD原理集成在一起?

python - 为什么我无法使用 Google Map api 获取完整数据?

python - 使用 Selenium 从缓存中提取媒体文件

elasticsearch - 在Nginx代理后面进行Elasticsearch跨集群搜索

node.js - Node.js 请求 : HPE_INVALID_HEADER_TOKEN