English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Elasticsearch 分析

検索操作中にクエリを処理する際には、分析モジュールが索引内のすべての内容を分析します。このモジュールは、分析器、トークン生成器、トークンフィルタ、および文字フィルタで構成されています。分析器が未定義の場合は、デフォルトで、内蔵の分析器、トークン、フィルタ、およびトークン生成器が分析モジュールに登録されます。

以下の例では、他の分析器が指定されていない場合に使用される標準分析器を使用します。これは、文の構造に基づいて文を分析し、使用されている単語を生成します。

POST _analyze
{
   "analyzer": "standard",
   "text": "今日の天気は良い"
{}

コードを実行すると、以下のように応答が得られます:

{
   "tokens": [
      {
         "token" : "today's",
         "start_offset": 0,
         "end_offset": : 7,
         "type": "",
         "position": 0
      },
      {
         "token": "weather",
         "start_offset": : 8,
         "end_offset": : 15,
         "type": "",
         "position": : 1
      },
      {
         "token" : "is",
         "start_offset": : 16,
         "end_offset": : 18,
         "type": "",
         "position": : 2
      },
      {
         "token": "beautiful",
         "start_offset": : 19,
         "end_offset": : 28,
         "type": "",
         "position": : 3
      {}
   ]]
{}

標準分析器の設定

私たちは、カスタム要件を満たすために、標準分析器にさまざまなパラメータを設定することができます。

以下の例では、標準分析器をmax_token_lengthに設定します。5。

これには、まずmax_length_tokenパラメータを持つ分析器を使用してインデックスを作成します。

PUT index_4_analysis
{
   "settings": {
      "analysis": {
         "analyzer": {
            "my_english_analyzer": {
               "type": "standard",
               "max_token_length": 5,
               "stopwords": "_english_"
            {}
         {}
      {}
   {}
{}

次に、以下のように示されるテキストに分析器を適用します。トークンは表示されませんが、これは先頭と末尾にそれぞれ2つのスペースがあるためです。" 「is」という単語は、先頭にスペースがあり、末尾にもスペースがあります。それらをすべて取り除くと、以下のようになります4スペースが含まれる文字列ですが、これは単語であることを意味するものではありません。少なくとも先頭または末尾に非スペースの文字が一つはあるべきで、それがカウントされる単語となります。

POST index_4_analysis/_analyze
{
   "analyzer": "my_english_analyzer",
   "text": "今日の天気は良い"
{}

コードを実行すると、以下のように応答が得られます:

{
   "tokens": [
      {
         "token": "today"
         "start_offset": 0,
         "end_offset": : 5,
         "type": "",
         "position": 0
      },
      {
         "token": "s",
         "start_offset": : 6,
         "end_offset": : 7,
         "type": "",
         "position": : 1
      },
      {
         "token": "weath",
         "start_offset": : 8,
         "end_offset": : 13,
         "type": "",
         "position": : 2
      },
      {
         "token": "er",
         "start_offset": : 13,
         "end_offset": : 15,
         "type": "",
         "position": : 3
      },
      {
         "token": "beaut",
         "start_offset": : 19,
         "end_offset": : 24,
         "type": "",
         "position": : 5
      },
      {
         "token": "iful",
         "start_offset": : 24,
         "end_offset": : 28,
         "type": "",
         "position": : 6
      {}
   ]]
{}

以下の表に、さまざまな分析器のリストと説明が示されています-

番号分析器和説明
1

標準分析器(standard)

stopwordsとmax_token_lengthの設定でこの分析器に設定できます。デフォルトでは、stopwordsリストは空で、max_token_lengthは255。

2

簡単分析器(simple)

この分析器は小文字のtokenizerで構成されています。

3

空白分析器 (whitespace)

この分析器はスペースマーカーで構成されています

4

停止分析器 (stop)

stopwordsとstopwords_pathを設定できます。デフォルトでは、stopwordsは英語の停止語で初期化され、stopwords_pathは停止語を含むテキストファイルのパスを含みます。

分詞器

トークン生成器は、Elasticsearchのテキストからトークンを生成するために使用されます。スペースや他の記号を考慮して、テキストをタグに分解することができます。Elasticsearchには、カスタム分析器で使用できる多くの内蔵のタグマーカーがあります。

以下に分詞器の例を示します。この分詞器は非アルファベットの文字に遭遇するとテキストを複数の単語に分解しますが、すべての単語を小文字にします。-

POST _analyze
{
   "tokenizer": "lowercase",
   "text": "It Was a Beautiful Weather 5 Days ago."
{}

コードを実行すると、以下のように応答が得られます:

{
   "tokens": [
      {
         "token": "it",
         "start_offset": 0,
         "end_offset": : 2,
         "type": "word",
         "position": 0
      },
      {
         "token": "was",
         "start_offset": : 3,
         "end_offset": : 6,
         "type": "word",
         "position": : 1
      },
      {
         "token": "a",
         "start_offset": : 7,
         "end_offset": : 8,
         "type": "word",
         "position": : 2
      },
      {
         "token": "beautiful",
         "start_offset": : 9,
         "end_offset": : 18,
         "type": "word",
         "position": : 3
      },
      {
         "token": "weather",
         "start_offset": : 19,
         "end_offset": : 26,
         "type": "word",
         "position": : 4
      },
      {
         "token": "days",
         "start_offset": : 29,
         "end_offset": : 33,
         "type": "word",
         "position": : 5
      },
      {
         "token": "ago",
         "start_offset": : 34,
         "end_offset": : 37,
         "type": "word",
         "position": : 6
      {}
   ]]
{}

トークン生成器のリストおよび説明は以下の表に示されています:

番号トークン化器および説明
1

標準マーカー(standard)

これは、文法的マーカーに基づいて構築されています。max_token_lengthはこのマーカーに設定できます。

2

エッジ NGram マーカー(edgeNGram)

min_gram、max_gram、token_charsなどの設定は、このマーカーに設定できます。

3

キーワードマーカー(keyword)

これは、整个入力を出力として生成します。buffer_sizeはこのマーカーに設定できます。

4

文字マーカー(letter)

これは、非アルファベット文字にまで続く整个単語をキャプチャします。