1

現在、従来の lucene ベースのアナライザー コンポーネントをエラスティック サーチ (0.19.18) に移行できるかどうか、およびその方法を評価しています。レガシー コードは lucene に基づいているため、アナライザーを es-plugin でラップしました。アナライザーの構成は、次の行のようになります。

index.analysis.analyzer.myAnalyzer.type : myAnalyzer
index.analysis.analyzer.default.type: myAnalyzer
index.analysis.analyzer.default_index.type: myAnalyzer
index.analysis.analyzer.default_search.type: myAnalyzer

ここまでは順調ですね。

curl -XGET 'localhost:9200/_analyze' -d 'Some text'

正しくトークン化されたテキストを含むオブジェクトを返しますが、

curl -XGET 'localhost:9200/<name-of-my-index>/_analyze' -d 'Some text'

トークン化されていないテキストを返します。明らかに、myAnalyzer の代わりに小文字のフィルターのみが適用されます。インデックス内のオブジェクトも正しく分析されていません。

インデックス マッピングは次のようになります (head-plugin からの出力)。

mappings: {
item: {
    analyzer: myAnalyzer
    properties: {
        id: {
            type: string
        }
        itemnumber: {
            type: string
        }
        articletext: {
            analyzer: myAnalyzer
            type: string
        }
        sortvalue: {
            type: string
        }
        salesstatus: {
            format: dateOptionalTime
            type: date
        }
    }
}
}

私はESを初めて使用するので、この動作の実際の理由がわかりません。アイデアを持っている人はいますか?

4

1 に答える 1

2

これは、Elasticsearchでカスタムのデフォルトアナライザーを設定する方法です。

index:
  analysis:
    analyzer:
      default:
        filter: [lowercase]
        tokenizer: whitespace
        type: custom

チャームのように機能します。

于 2012-11-12T12:15:07.443 に答える