Discoverにてコロン前後のキーワードを検索する場合の事象について

下記のようなインデックスを保持しております

{
  "took" : 2,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 4,
      "relation" : "eq"
    },
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : 1.0,
        "_source" : {
          "message" : "aaa/bbb"
        }
      },
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 1.0,
        "_source" : {
          "message" : "aaa:bbb"
        }
      },
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 1.0,
        "_source" : {
          "message" : "TTPs/Defense Evasion/Stealth:IAMUser-CloudTrailLoggingDisabled"
        }
      },
      {
        "_index" : "test",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "message" : "TTPs/Privilege Escalation/IAMUser-AnomalousBehavior"
        }
      }
    ]
  }
}

このインデックスに対し、KibanaのDiscoverにて、キーワードを「IAMUser」あるいは「aaa」「bbb」で検索した時、検索対象キーワードがコロンの前後に存在するドキュメントがヒットしないように見受けられます。下記が結果になります。

・検索キーワード「IAMUser」
想定:_idが1と2のドキュメントがヒット
結果:_idが1のドキュメントのみヒット

・検索キーワード「aaa」または「bbb」
想定:_idが3と4のドキュメントがヒット
結果:_idが3のドキュメントのみヒット

この挙動はKibanaの仕様でしょうか?それとも不具合でしょうか?ご教示いただけますと幸いです。

それはkibanaの挙動と言うより、Elasticsearchの挙動と思われます。
"message"がtext fieldの場合、設定されているtokenizerでtokenに分割された上でインデックスされます。その際のtokenizerの挙動としてハイフンでは分割されるもののコロンでは単語に分割されないということだと思います。
副作用もありますが、たとえばCharacter group tokenizerを使うと指定した文字で分割できます。N-gram tokenizerを用いるのも一つの方法かもしれません。

analyze APIを用いて、どのようにtoken化されるか確認できます。

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.