此处新增弹性搜索并调试现有索引。我正在基于搜索创建仪表板,发现正在发送的某些字段不会作为过滤选项出现。我进一步检查了这一点,发现有些字段没有编入索引。创建索引的人声称对索引的字段没有限制但我不同意找到以下内容:
"customerid": {
"type": "string",
"norms": {
"enabled": false
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
},
它显示的值为not_analyzed。我想更新此值,以便我需要的字段被索引并可用于仪表板中的可视化。我知道索引名称,但数据本身和映射属于类型。所以不知道该怎么做。在查看elasticsearch插件/头部时,我没有看到索引。
"customer_index": {
"dynamic_templates": [
{
"string_fields": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "multi_field",
"fields": {
除了所有相关字段的初始标题外。任何建议或帮助将不胜感激。
编辑:
正如Alain正确指出的那样,我对未分析的误解。我仍然感到困惑,并希望添加一些额外的信息将有助于诊断此问题。
首先,这是一个kibana视图,显示包含数据的特定索引,可用字段:
Available Fields
@timestamp
_id
_type
etc.
客户ID不是其中之一。现在有不同的数据源来到同一个索引,例如:
job records
customer records
project records
等
这由_type字段定义。现在我想访问客户记录对象,它有自己的属性:
customer_index": {
"dynamic_templates": [
{
"string_fields": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "multi_field",
"fields": {
"{name}": {
"index": "analyzed",
"omit_norms": true,
"type": "string"
},
"raw": {
"ignore_above": 256,
"index": "not_analyzed",
"type": "string"
}
}
},
"match": "*",
"match_mapping_type": "string"
}
},
{
"message_field": {
"mapping": {
"index": "analyzed",
"omit_norms": true,
"type": "string"
},
"match": "message",
"match_mapping_type": "string"
}
}
],
"_all": {
"enabled": true,
"omit_norms": true
},
"properties": {
"@timestamp": {
"type": "date",
"format": "dateOptionalTime"
},
"@version": {
"type": "string",
"index": "not_analyzed"
},
"CCType": {
"type": "string",
"norms": {
"enabled": false
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
},
"Crawled": {
"type": "string",
"norms": {
"enabled": false
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
},
"customerid": {
"type": "string",
"norms": {
"enabled": false
},
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"ignore_above": 256
}
}
},
现在我想搜索这些属性字段。我找到了SENSE插件,我试图用它来学习查询,并且能够做到这一点:
GET _search
{
"query": {
"match": {
"customerid": "11908906"
}
}
}
这在返回消息和计数方面效果很好。现在,当我在发现选项卡中尝试Kibana时,我搜索类型(customer_index)并过滤我需要的字段,我看到所有结果。我只是想知道如何在视觉上进行翻译。
答案 0 :(得分:2)
“not_analyzed”并不意味着“没有编入索引”。这意味着elasticsearch不会尝试分析字符串,而是保持完整。这在elasticsearch中非常常见,具体取决于您的内容。
例如:
/var/log/messages
默认情况下,将拆分为:
[ "var", "log", "messages" ]
当您想要将其作为完整路径进行搜索时,它不是很有用。通过将字段设置为not_analyzed,它将不管它。您仍然可以使用该字段进行搜索。
其次,您说这些字段不可用于过滤。假设您正在使用Kibana,请注意Kibana将缓存字段映射,这意味着新字段不会自动显示。转到设置 - >指数,选择您的索引,然后点击重新加载字段列表。