0

我对 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 一起工作吗?

4

1 回答 1

0

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

尝试使用这个

GET asd01/_search
{
  "query": {
    "wildcard": {
      "my-key.keyword": {
        "value": "hello.*"
      }
    }
  }
}
于 2018-02-12T06:29:04.087 回答