名称中带点 (.) 的弹性过滤器
Elastic filter with dot (.) in name
我对 ELK 很陌生,似乎从复杂的问题开始;-)
我有如下所示的元素:
{
"_index": "asd01",
"_type": "doc",
"_id": "...",
"_score": 0,
"_source": {
"@version": "1",
"my-key": "hello.world.to.everyone",
"@timestamp": "2018-02-05T13:45:00.000Z",
"msg": "myval1"
}
},
{
"_index": "asd01",
"_type": "doc",
"_id": "...",
"_score": 0,
"_source": {
"@version": "1",
"my-key": "helloworld.from.someone",
"@timestamp": "2018-02-05T13:44:59.000Z",
"msg": "myval2"
}
我想过滤以 "hello." 开头的我的键,并想忽略以 "helloworld." 开头的元素。点似乎被解释为通配符,各种转义似乎都不起作用。
使用过滤器,因为我希望能够在 Kibana 和 API 中直接使用相同的表达式。
有人可以告诉我如何让它与 Elasticsearch 6.1.1 一起工作吗?
它没有被用作通配符,它只是被默认分析器(标准分析器)删除了。如果您不指定映射,elasticsearch 将为您创建一个。对于字符串字段,它将创建一个多值字段,默认值为文本(使用默认分析器 - 标准)和带有关键字分析器的关键字字段。如果你不想要这种行为,你必须在索引创建期间明确指定映射,或者更新它并重新索引数据
试试这个
GET asd01/_search
{
"query": {
"wildcard": {
"my-key.keyword": {
"value": "hello.*"
}
}
}
}
我对 ELK 很陌生,似乎从复杂的问题开始;-) 我有如下所示的元素:
{
"_index": "asd01",
"_type": "doc",
"_id": "...",
"_score": 0,
"_source": {
"@version": "1",
"my-key": "hello.world.to.everyone",
"@timestamp": "2018-02-05T13:45:00.000Z",
"msg": "myval1"
}
},
{
"_index": "asd01",
"_type": "doc",
"_id": "...",
"_score": 0,
"_source": {
"@version": "1",
"my-key": "helloworld.from.someone",
"@timestamp": "2018-02-05T13:44:59.000Z",
"msg": "myval2"
}
我想过滤以 "hello." 开头的我的键,并想忽略以 "helloworld." 开头的元素。点似乎被解释为通配符,各种转义似乎都不起作用。
使用过滤器,因为我希望能够在 Kibana 和 API 中直接使用相同的表达式。
有人可以告诉我如何让它与 Elasticsearch 6.1.1 一起工作吗?
它没有被用作通配符,它只是被默认分析器(标准分析器)删除了。如果您不指定映射,elasticsearch 将为您创建一个。对于字符串字段,它将创建一个多值字段,默认值为文本(使用默认分析器 - 标准)和带有关键字分析器的关键字字段。如果你不想要这种行为,你必须在索引创建期间明确指定映射,或者更新它并重新索引数据
试试这个
GET asd01/_search
{
"query": {
"wildcard": {
"my-key.keyword": {
"value": "hello.*"
}
}
}
}