我们使用elasticsearch收集SQL统计信息。一旦我们注意到一些条目没有出现在聚合中。
下面是一个示例请求(最初由kibana生成):
POST /_msearch
{"index":["stat-2017-09-04"],"ignore_unavailable":true,"preference":1504514752086}
{
"query":{
"bool":{
"must":[
{
"query_string":{
"analyze_wildcard":true,
"query":"Group:spbpro.db.sql AND AppUserName:robot"
}
},
{
"range":{
"EndTime":{
"gte":1504503690000,
"lte":1504503692800,
"format":"epoch_millis"
}
}
}
],
"must_not":[
]
}
},
"aggs":{
"3":{
"terms":{
"field":"Name.keyword",
"size":5000,
"order":{
"1":"desc"
}
},
"aggs":{
"1":{
"sum":{
"field":"TotalTime"
}
},
"2":{
"date_histogram":{
"field":"EndTime",
"interval":"20ms",
"time_zone":"Asia/Baghdad",
"min_doc_count":1
},
"aggs":{
"1":{
"sum":{
"field":"TotalTime"
}
}
}
}
}
}
}
}
这是elasticsearch的答案:
{
"responses": [
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 4.754195,
"hits": [
{
"_index": "stat-2017-09-04",
"_type": "stat-spbpro.db.sql",
"_id": "AV5LaI15AUHnqGLtN2GS",
"_score": 4.754195,
"_source": {
"Group": "spbpro.db.sql",
"Name": "select * from (select a.IDPU, sum(d.COUNT)as CNT from ( select IDPU, max(ID) as ID from (select IDPU, ID from PARAMS where IDTPPARAM in (select ID from TPPARAMS where IDTPARC=?)) where ID in (select IDPARAM from DATA_1064_A where DTPU>=? and DTPU<=?) group by IDPU ) a join DATA_1064_A d on d.IDPARAM=a.ID and DTPU>=? and DTPU<=? group by IDPU) where IDPU in (select ID from TEMP_IDS where IDTYPE=1)",
"StartTime": "2017-09-04T05:36:09.0559048Z",
"EndTime": "2017-09-04T05:41:31.7295827Z",
"TotalTime": 297761.8962,
"Count": 13
}
},
{
"_index": "stat-2017-09-04",
"_type": "stat-spbpro.db.sql",
"_id": "AV5LaI15AUHnqGLtN2OF",
"_score": 4.7034826,
"_source": {
"Group": "spbpro.db.sql",
"Name": "select IDPU, count(*) as HRSCNT from PUTEDATAS where DTFR>=? and DTFR<? and IDPU in (select ID from TEMP_IDS where IDTYPE=1) group by IDPU",
"StartTime": "2017-09-04T05:37:06.2981554Z",
"EndTime": "2017-09-04T05:41:32.7463729Z",
"TotalTime": 4277.6874,
"Count": 13
}
}
]
},
"aggregations": {
"3": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"1": {
"value": 4277
},
"2": {
"buckets": [
{
"1": {
"value": 4277
},
"key_as_string": "2017-09-04T08:41:32.740+03:00",
"key": 1504503692740,
"doc_count": 1
}
]
},
"key": "select IDPU, count(*) as HRSCNT from PUTEDATAS where DTFR>=? and DTFR<? and IDPU in (select ID from TEMP_IDS where IDTYPE=1) group by IDPU",
"doc_count": 1
}
]
}
},
"status": 200
}
]
}
聚合包含一个bucket,用于“选择IDPU,count(*)作为HRSCNT…”。这是正确的。
但是为什么“select*from(select a. IDPU...”只在点击中列出,而不出现在聚合中?
Elasticsearch版本为5.0
我认为您的映射可能如下所示:
...
"Name": {
"type" "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
...
当您没有显式设置映射时,这是字符串的默认映射。这意味着长度超过256个字符的字符串不会在关键字字段中建立索引(也不会显示在聚合中)。请参见文档上方的ignore\u。源仍被存储,因此您可以在搜索结果中看到它们,并可以搜索分析的字段(名称)。
您可以通过显式创建映射并省略上面的忽略来解决此问题。您必须将数据重新索引到一个新的索引中(您不能更改现有的映射)——您可以使用reindex api轻松做到这一点。如果您只想将此字段作为关键字搜索(而不想使用已分析的字段),也可以只使用一个关键字字段,如下所示:
...
"Name": {
"type" "keyword"
}
}
...
问题内容: 我正在尝试使用以下查询对以下数据进行elasticsearch来执行术语聚合,输出将名称分解为标记(请参见下面的输出)。因此,我尝试将os_name映射为multi_field,但现在无法通过它查询。是否可以有没有令牌的索引?例如“ Fedora Core”? 查询: 数据: 输出: 映射: 问题答案: 实际上,您应该像这样更改映射 并且您的aggs应该更改为:
我们目前正在开发一个多语言文档CMS。因此,我们有翻译成不同语言的文件。 对于使用Elasticsearch进行搜索,我们目前使用每种语言(德语、英语、法语……)一个索引,其中同一文档的所有翻译共享相同的ID。 当用户搜索特定术语时,我们希望在所有语言中搜索,但只返回不同ID的列表。据我所知,只有使用以下术语聚合才能做到这一点: 这很好,但是作为弹性搜索文档https://www.elastic.
以下是数据集的快照: 我想获得员工名单以及employeeStatus和employeeAddr。 所以我在employeeId上使用术语聚合,然后使用employeeStatus和employeeAddr的子聚合来获得这些详细信息。下面的查询正确返回结果。 现在我只想要永久身份的员工。所以我正在应用过滤器聚合。 现在的问题是雇员地址聚合没有为雇员地址返回存储桶,因为记录2在聚合完成之前就被过滤掉
问题内容: 我有两种日志消息: 第一个消息是已发送消息的类型,第二个消息是确认消息已传递的消息。 它们之间的区别是后缀,我已将其与“ id”分开并可以对其进行查询。 这些消息将按以下格式解析并存储在elasticsearch中: 我想找出哪些消息已成功发送,哪些没有成功。我是Elasticsearch的初学者,所以我真的很努力。 我目前正在尝试术语聚合,但是我所能实现的就是以下代码: 向我显示已发
我有一个存储字符串数组的字段。不同的文档包含不同的字符串集。 现在,我使用这个聚合查询来分析每个文件类型的使用情况。 结果与预期一致。但最近我在删除XML文件支持后更新了此字段。因此,文档的non具有文件类型XML。我可以从这个查询中确认这一点。 总命中计数为零。奇怪的是,当我再次执行上述聚合查询时,我仍然可以将XML视为一个术语。doc count为零。 如果这个XML术语在任何文档中都不存在,
问题内容: 如何编写一个将整个字段值而不是单个标记考虑在内的ElasticSearch术语聚合查询?比如,我想通过城市名聚集,但下面的回报,,并作为单独的水桶,不和的水桶预期。 问题答案: 您应该在映射中解决此问题。添加一个not_analyzed字段。如果您还需要分析的版本,则可以创建多字段。 现在在city.raw上创建聚合