Kibana查询字符串长度

时间:2016-03-23 19:39:58

标签: elasticsearch kibana

有没有办法在Kibana中查询一定长度的值?

例如,给定以下两个KV对:

key: "some"
key: "something"

我想搜索key.length> 5并检索"某事"只要。

我看到的另一个选项是从logstash中添加一个标记,但是我必须重新加载几百GB。

4 个答案:

答案 0 :(得分:5)

您可以使用脚本查询在 Kibana 中执行此操作。 Script Query in Kibana,有一个脚本查询示例,密钥长度大于5:

{
    "query": {
        "filtered": {
            "filter": {
                "script": {
                    "script": "doc['key'].getValue().length() > 5"
                }
            }
        }
    }
}

您还需要在 elasticsearch 启用脚本搜索,您需要将以下配置添加到 elasticsearch.yml

 script.engine.groovy.inline.search: on

答案 1 :(得分:3)

如果您可以重新索引索引,或者您只是创建索引,则可以创建自定义标记生成器,如下所示:

PUT test_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "character_analyzer": {
          "type": "custom",
          "tokenizer": "character_tokenizer"
        }
      },
      "tokenizer": {
        "character_tokenizer": {
          "type": "nGram",
          "min_gram": 1,
          "max_gram": 1
        }
      }
    }
  }, 
  "mappings": {
    "person": {
      "properties": {
        "name": { 
          "type": "text",
          "fields": {
            "keyword": { 
              "type": "keyword"
            },
            "words_count": { 
              "type": "token_count",
              "analyzer": "standard"
            },
            "length": { 
              "type": "token_count",
              "analyzer": "character_analyzer"
            }
          }
        }
      }
    }
  }
}

PUT test_index/person/1
{
  "name": "John Smith"
}

PUT test_index/person/2
{
  "name": "Rachel Alice Williams"
}

GET test_index/person/_search
{
  "query": {
    "term": {
      "name.length": 10
    }
  }
}

答案 2 :(得分:2)

您可以直接在Kibana中创建脚本字段来完成此操作。

  • 在Kibana中,单击“设置”选项卡,然后单击索引模式

  • 您应该看到2个标签"字段"和"脚本字段"。

  • 点击" Scripted fields"标签。然后"添加脚本字段"。

  • 输入"名称"在“脚本”字段中输入以下内容: -

    doc [' key']。value.length> 5

  • 点击"创建字段"在底部。现在,您的脚本字段将被添加&可以从Discover页面查看。

答案 3 :(得分:1)

您可以通过 Lucene 查询语法使用正则表达式查询来完成此操作。例如,key:/.{6,}/ 将仅匹配键字段包含 6 个字符或更多字符的记录。

HT 到 similar question about Solr(也使用 Lucene 的查询引擎)。