2016-03-23 14 views
2

Kibana'da belirli bir uzunluk için sorgulamanın bir yolu var mı?Kibana dize uzunluğu için sorgulama

Örneğin

, verilen aşağıdaki iki KV çiftleri:

key: "some" 
key: "something" 

Ben key.length> 5 aramak ve "bir şey" sadece almak istiyorum.

Gördüğüm diğer seçenek, logstash'dan bir etiket eklemektir, ancak sonra birkaç yüz GB'yi yeniden yüklemem gerekecek.

cevap

2

Bunu yapmak için betik sorgusunu Kibana'da kullanabilirsiniz. Script Query in Kibana, bir anahtarın uzunluğu ile komut sorgusu için örnek 5'ten fazla yok:

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

Ve ayrıca sen, elasticsearch.yml içine aşağıdaki yapılandırma eklemem gerekiyor elasticsearch komut dosyası arama etkinleştirmek gerekir:

script.engine.groovy.inline.search: on 
+0

Teşekkür! Dokümanlar, mükemmel arama yapmanın nedenini verir: GÜNCELLEME: Güvenlik önlemi olarak, 4.0.0-RC1 sürümünden başlayarak, Kibana komut alanları varsayılan değer olarak değil, Groovy ... Lucene İfadeleri, yalnızca sayısal alanlardaki işlemleri destekler ... –

1

Sen Kibana doğrudan bir metne alanı oluşturarak yapabilirsiniz.

  • Kibana, Ayarlar sekmesini tıklayın ve ardından O 2 sekme "Fields" ve "Senaryolu alanlar" görmelisiniz Dizininizin desen

  • tıklayın. "Komutlu alanlar" sekmesine tıklayın. Ardından "Komut dosyası ekle".

  • Senaryo alanında bir "Ad" girin ve aşağıdakileri girin: -

    doc [ 'anahtar'] value.length> 5

  • tıklayın altındaki "alan oluşturmak".. Şimdi scripted alanınız eklenecek & Discover sayfasından görüntülenebilir.

0

Dizininizi reindex olabilir veya sadece oluştururken iseniz, tokenizer aşağıdaki gibi özel bir oluşturabilirsiniz:

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