我想从弹性搜索中的索引器获取列中两个项目的计数。我的索引器中有一个名为“category”的列,它包含多个条目。我有兴趣获得多个日期的“账单”和“支出”。为此,我编写了以下查询,它不适用于两个值。我可以将单个值设为“结算”或“支出”,但不能同时提取两个。
{"dates":
{"date_histogram":
{"field": "createdDateTime",
"interval": "day"},
"aggs": {"fields":
{"term":
{"field": "type",
"include": ["billing", "expenditure"]
}}}}}
以上代码在这种情况下不起作用,为了使其工作,我需要将“include”行更改为
"include": "billing"
或 “包括”:“支出”
如果有人调查并提供帮助,那将会很有帮助。:)
以下答案适用于我上面的帖子,现在我在上面的帖子中遇到了另外一个问题:
在我的'type'字段中,我想再过滤一个名为“花费”的值。这里的问题是 - ES将这两个措词视为两个术语,结果并不像预期的那样。请帮忙。只想将这两个措辞单词过滤为单个单词而不是两个单词。
答案 0 :(得分:2)
可以过滤将为其创建存储桶的值。 这可以使用include和exclude参数来完成 基于正则表达式字符串或精确值的数组[1.5.0] 在1.5.0中添加。支持值数组。
因此可以在1.5版本之后使用数组
"aggs": {
"aggterm": {
"terms": {
"field": "type",
"include" : ["billing", "expenditure"]
}
}
}
答案 1 :(得分:1)
include需要正则表达式模式。正如@jgr所指出的,这仅适用于elasticsearch<的版本。 1.5.0。所以对于查询中提供的示例 对于版本而言,它看起来如下所示< 1.5.0:
"aggs": {
"aggterm": {
"terms": {
"field": "type",
"include" : "billing|expenditure"
}
}
}
如果不是你在OP中的例子应该工作