2017-10-27 3 views
0

私はテンプレート化のために3つのsensuチェック値を除外しようとしています。正規表現で複数の値を取得するにはどうすればよいですか?

私は

Query: {"find": "terms","field":"check_name.keyword"} 

Regex: /.*_error_100.*|.*_error_200.*|.*_error_300.*/ 

データソースとしてElasticsearchを使用していますが、私の正規表現が間違っですか?

.*が前後参照 正規表現を使用しただけでなく、非常に遅いようにあなた デヴォン

+0

あなたのソリューションが間違っていますか?あなたの現在の正規表現は正常に見えます。それは '。* _ error_ [123] 00。*'として書き直すことができますが、あなたは正しい場所でパターンを使用していますか?パターンの周りに '/'は必要ですか?関連する文書は何ですか? –

答えて

1

がすべてをマッチングありがとうございました。

正規表現(模範的なクエリ)により、いくつかのフィールドを照会するには、次の

{ 
    "query": { 
     "regexp":{ 
      "somefield": "_error_[123]00" 
     } 
    } 
} 

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax

+1

* Luceneのパターンは常に固定されています。指定されたパターンは文字列全体と一致しなければなりません。* Luceneの正規表現パターンで '。* _ error_ [123] 00。*'を使用してパターンを含むフィールドに一致させる必要があります。 –

+0

パーフェクトありがとうございます!まだ正規表現とluceneのクエリを学習しています。できる場合は、もう1つの質問(同じ主題)を聞きたいと思います。ホスト名についても同じことをしたいのなら、これは 'ip-10-1- [80 -96] - 。* 'この上で複数のサブネットを取得しようとしています(ipはホスト名です)。 – Devon

関連する問題