我在 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/