弹性过滤器,名称中带有点(。)

时间:2018-02-11 18:05:48

标签: elasticsearch kibana elastic-stack kibana-6

我对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开头的my-key。"并且想要忽略以" helloworld开头的元素。"。点似乎被解释为一个野生动物园,各种逃避似乎都无法发挥作用。

使用过滤器,因为我希望能够在Kibana和API中直接使用相同的表达式。

有人能指出我如何使用Elasticsearch 6.1.1吗?

1 个答案:

答案 0 :(得分:0)

它没有被用作通配符,它​​只是被默认的分析器(标准分析器)删除。如果您未指定映射,elasticsearch将为您创建一个映射。对于字符串字段,它将创建一个多值字段,默认为文本(使用默认分析器 - 标准)和关键字分析器的关键字字段。如果您不想要此行为,则必须在创建索引期间显式指定映射,或者更新它并重新索引数据

尝试使用此

GET asd01/_search
{
  "query": {
    "wildcard": {
      "my-key.keyword": {
        "value": "hello.*"
      }
    }
  }
}