如何从记录中获取所有languages
的值并使其唯一。
记录
PUT items/1
{ "language" : 10 }
PUT items/2
{ "language" : 11 }
PUT items/3
{ "language" : 10 }
字符串
查询
GET items/_search
{ ... }
# => Expected Response
[10, 11]
型
任何帮助将是伟大的。
如何从记录中获取所有languages
的值并使其唯一。
记录
PUT items/1
{ "language" : 10 }
PUT items/2
{ "language" : 11 }
PUT items/3
{ "language" : 10 }
字符串
查询
GET items/_search
{ ... }
# => Expected Response
[10, 11]
型
任何帮助将是伟大的。
7条答案
按热度按时间cetgtptt1#
您可以使用terms aggregation。
字符串
聚合中的
size
参数指定要包含在聚合结果中的最大术语数。如果需要所有结果,请将此值设置为大于数据中唯一术语数的值。搜索将返回如下内容:
型
bn31dyow2#
我也在为我自己寻找这种解决方案。我在terms aggregation中找到了参考。
因此,根据这一点,以下是适当的解决方案。
字符串
如果你遇到以下错误:
型
在这种情况下,您必须在请求中添加“KEYWORD”,如下所示:
型
yks3o0rb3#
如果你想获得第一个文档中每个
language
字段的唯一值,你可以这样做:字符串
j2datikz4#
如果你想得到所有的唯一值,而不需要任何近似值或设置一个幻数(
size: 500
),那么使用COMPOSITE AGGREGATION(ES 6.5+)。来自官方文件:
JavaScript中的实现示例:
字符串
szqfcxe25#
Elasticsearch 1.1+有一个**Cardinality Aggregation**,它会给予你一个唯一的 count,但不是术语本身。
请注意,它实际上是一个近似值,在高基数数据集上,准确性可能会降低,但在我的测试中,它通常非常准确。
您还可以使用
precision_threshold
参数调整精度。当然,代价是内存使用。文档中的这张图显示了更高的
precision_threshold
如何导致更准确的结果。的数据
ztyzrc3y6#
必须区分两个字段(derivative_id和vehicle_type),并按最便宜的车排序。必须嵌套aggs。
字符串
测试结果:
型
z3yyvxxp7#
aggs将工作在数字值默认情况下,如果你想工作的字符串字段,你应该启用它的文件