elasticsearch Kibana查询字符串长度

disbfnqx  于 2023-11-17  发布在  ElasticSearch
关注(0)|答案(4)|浏览(347)

有没有办法在Kibana中查询一定长度的值?
例如,给定以下两个KV对:

key: "some"
key: "something"

字符串
我想搜索key.length> 5并只检索“something”。
我看到的另一个选择是从logstash添加一个标记,但这样我就必须重新加载几百GB。

nlejzf6q

nlejzf6q1#

您可以在Kibana. Script Query in Kibana中使用脚本查询来完成,这里有一个key长度大于5的脚本查询示例:

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

字符串
另外,您还需要在elasticsearch开启脚本搜索,您需要在elasticsearch.yml中添加以下配置:

script.engine.groovy.inline.search: on

9ceoxa92

9ceoxa922#

您可以通过Lucene查询语法使用正则表达式查询来实现这一点。例如,key:/.{6,}/将仅匹配关键字字段的条目为6个字符或更多的记录。
HT到similar question about Solr(也使用Lucene的查询引擎)。

5m1hhzi4

5m1hhzi43#

如果你可以重新索引你的索引,或者你只是创建它,你可以创建一个自定义的tokenizer如下:

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
    }
  }
}

字符串

9rbhqvlz

9rbhqvlz4#

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

  • 在Kibana中,单击设置选项卡,然后单击索引模式
  • 您应该看到2个选项卡“字段”和“脚本字段”。
  • 点击“脚本字段”选项卡。然后点击“添加脚本字段”。
  • 在脚本字段中输入“名称”,然后输入以下内容:

文档名“key”].value.length > 5

  • 点击底部的“创建字段”。现在您的脚本字段将被添加并可以从发现页面查看。

相关问题