私は基本的なELKスタックを持っています。複数のマシンがElasticSearch(ES)サーバーにログをプッシュし、Kibanaを使用してそれらを検査します。ElasticSearchはSystem.NullReferenceExceptionを検出しますが、NullReferenceExceptionは検出しません - なぜですか?
私の問題は、System.NullReferenceException
がたくさん見えることですが、NullReferenceException
のどれも、私を大きく困惑させることはありません。
ここで私が実行しようとしていますクエリです:私は
GET _search
{
"query": {
"match": {
"message": "System.NullReferenceException"
}
}
}
:
GET _search
{
"query": {
"match": {
"message": "NullReferenceException"
}
}
}
そして結果は次のとおりです。ただし
{
"took": 47,
"timed_out": false,
"_shards": {
"total": 1681,
"successful": 1681,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": []
}
}
、私は次のクエリを使用している場合取得:
{
"took": 31,
"timed_out": false,
"_shards": {
"total": 1681,
"successful": 1681,
"failed": 0
},
"hits": {
"total": 12796,
"max_score": 1.7968642,
"hits": [
{
"_index": "logs-good-qa_849-2016.05.05",
"_type": "MobileWebService",
"_id": "28327d702db62623059027479162a3d73ef909f6",
"_score": 1.7968642,
"_source": {
"@timestamp": "2016-05-05T19:04:20.741Z",
"message": "Object reference not set to an instance of an object. \r\nSystem.NullReferenceException: Object reference not set to an instance of
...
メッセージの列が解析されているようです。私はマッピング要求した場合:
GET logs-good-qa_849-2016.05.05/_mapping/MobileWebService
を私は戻ってこれを取得:私は、メッセージフィールドは、単語の区切り文字で分割され、それぞれインデックスが作成されていなければならないと結論
# GET logs-good-qa_849-2016.05.05/_mapping/MobileWebService
{
"logs-good-qa_849-2016.05.05": {
"mappings": {
"MobileWebService": {
"properties": {
"@timestamp": {
"type": "date",
"format": "strict_date_optional_time||epoch_millis"
},
"@version": {
"type": "string"
},
"host": {
"type": "string"
},
"level": {
"type": "string"
},
"logger": {
"type": "string"
},
"message": {
"type": "string"
},
"path": {
"type": "string"
},
"qa_build": {
"type": "string"
},
"tags": {
"type": "string"
},
"ts": {
"type": "string"
}
}
}
}
}
}
いるから。私が知る限り、.
は単語区切り文字なので、何が起こっているのか分かりません。
アイデア?
これは優れた説明です。ありがとうございました。だから、私は "を追加する必要があると思います。"単語デリミタに戻し、すべてのインデックスを再作成します。そうする最善の方法を提案できますか? – mark
10進数を分割するリスクがあるので、 '.'を追加するだけではわかりません。 '3.4'は' 3'と '4'に分割されます。これはおそらくあなたが望むものではありません。必要なものを達成する最も良い方法は、[ngram token filter](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-ngram-tokenfilter)を活用したカスタムアナライザを作成することです。 html)および/または[edgeNgram token filter](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenfilter.html)を使用して、各トークンの接頭辞および接尾辞を生成します。 – Val
カスタムアナライザ?恐ろしい音。私は「NullReferenceException」をそのまま検索したいという私の望みがあまりにも多すぎるとは思っていませんが、あまりにも多くを求めているかもしれないと思い始めています。私は何かを逃していますか(ELKのこの事業全体にとって非常に新しいものですから) – mark