20

アナライザーを指定して名前を付け、その名前をマッピングで使用してインデックスを作成したいと考えています。ES インスタンスが常にエラー メッセージを返します。

これは、大まかに、私がやりたいことです:

"settings": {
  "mappings": {
    "alfedoc": {
      "properties": {
        "id": { "type": "string" },
        "alfefield": { "type": "string", "analyzer": "alfeanalyzer" }
      }
    }
  },
  "analysis": {
    "analyzer": {
      "alfeanalyzer": {
        "type": "pattern",
        "pattern":"\\s+"
      }
    }
  }
}

しかし、これはうまくいかないようです。ESインスタンスは常に次のようなエラーを返します

MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]];

"analysis"辞書のブランチをいくつかの場所 (マッピング内など)に配置しようとしましたが、役に立ちませんでした。動作する完全な例 (これまで見つけることができませんでした) も役立つと思います。おそらく、かなり基本的なものが欠けています。

4

1 に答える 1

28

「分析」は、インデックスを作成するときに「マッピング」ブロックの前または後にある「設定」ブロックに入ります。

"settings": {
    "analysis": {
        "analyzer": {
            "alfeanalyzer": {
                "type": "pattern",
                "pattern": "\\s+"
            }
        }
    }
},
"mappings": {
    "alfedoc": { ... }
}

これは良い完全な例です:例 1

于 2013-08-14T17:22:57.153 に答える