我是弹性搜索的新手。使用6.2.3版本的弹性搜索。 我想要等效于以下SQL查询的弹性搜索:
SELECT DISTINCT customer_name , customer_services, customer_visible from customers;
我有大约20万份弹性搜索文档。我想要文档中多个字段的唯一记录。这些字段是 customer_name, 客户服务, customer_visible
我不是要计数,我想获取指定字段的数据,而每个字段都没有重复的数据。
我尝试了几次查询,但是并不能为我提供所有字段的唯一查询。 请帮助我为上述sql提供弹性搜索6.2.3等效查询。
答案 0 :(得分:0)
我不是专家,但据我所知,如果您只想在一个字段上进行选择,那么您可以使用Term Aggregation
但是从这个Post来看,Elasticsearch不支持多个字段上的术语聚合,因为它的性能不佳。您可以查看有关在术语聚合中使用script
的同一链接中建议的解决方案。
答案 1 :(得分:0)
下面是对我有效的等效于ES 6.3的查询。
{
"size": 0,
"aggs": {
"company_details": {
"terms": {
"size": 10000,
"script": "doc['customer_global_cust_id'].value + ' | ' + doc['customer_name'].value + ' | ' + doc['customer_visible'].value + ' | ' +doc['customer_services'].values"
}
}
}
}
上面,我已经使用了customer_services的值,因为它是文档中的数组字段,其余字段只是字符串值,因此使用了值。