木場で特定の長さの値をクエリする方法はありますか?文字列の長さを問い合わせるキバナ
例えば、与えられた以下の2 KVペア:
key: "some"
key: "something"
私はkey.length> 5を検索し、 "何か" のみを取得したいと思います。
もう1つのオプションはlogstashからタグを追加することですが、その後数百GBをリロードする必要があります。
木場で特定の長さの値をクエリする方法はありますか?文字列の長さを問い合わせるキバナ
例えば、与えられた以下の2 KVペア:
key: "some"
key: "something"
私はkey.length> 5を検索し、 "何か" のみを取得したいと思います。
もう1つのオプションはlogstashからタグを追加することですが、その後数百GBをリロードする必要があります。
Kibanaでスクリプトクエリを使用できます。 Script Query in Kibanaは、キーの長さを持つスクリプトクエリの例以上5があります:
{
"query": {
"filtered": {
"filter": {
"script": {
"script": "doc['key'].getValue().length() > 5"
}
}
}
}
}
そしてまた、あなたは、あなたがelasticsearch.ymlに以下の設定を追加する必要がelasticsearch内のスクリプト検索を有効に必要:
script.engine.groovy.inline.search: on
あなたはKibanaに直接スクリプトフィールドを作成することによってこれを行うことができます。
Kibanaでは、[設定]タブをクリックし、あなたが2つのタブ「フィールド」と「スクリプトフィールド」を参照してくださいする必要があり、あなたのインデックスパターン
をクリックしてください。
[スクリプトフィールド]タブをクリックします。次に、 "スクリプトフィールドを追加"します。
スクリプトフィールドに "名" を入力し、次のように入力します - 。
DOC [ 'キーを'] value.length> 5
をクリックして、一番下にある "フィールドの作成します"。今度はあなたのスクリプトフィールドが追加されます&は発見ページから見ることができます。
あなたのインデックスのインデックスを再作成することができますかあなたはそれを作成している場合、あなたはトークナイザ、次のようにカスタムを作成することができます
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
}
}
}
感謝を!グービック検索を有効にする理由を教えてください: 更新:バージョン4.0.0-RC1以降のKibanaスクリプトフィールドは、グルービーではなくLucene式にデフォルト設定されています。Lucene Expressionsは数値フィールドの操作のみをサポートしています... –