3

私のelasticsearch.ymlファイルでは、あるタイプに属する 1 つのフィールドが別のアナライザーを使用してインデックス付けされるマッピングを実装しようとしています。

現在、yaml ファイルの構造は次のとおりです。

index:
  bookshelf:
    types:
      book:
        mappings:
          title: {analyzer: customAnalyzer}
  analysis:
    analyzer:
      # set standard analyzer with no stop words as the default
      default:
        type: standard
        stopwords: _none_
      # set custom analyser to provide relative search results
      customAnalyzer:
        type: custom
        tokenizer: nGramTokenizer
        filter: [lowercase,stopWordsFilter,asciifolding]
    tokenizer:
      nGramTokenizer:
        type: nGram
        min_gram: 1
        max_gram: 2
    filter:
      nGramFilter:
        type: nGram
        min_gram: 1
        max_gram: 2
      stopWordsFilter:
        type: stop
        stopwords: _none_

これはカスタム アナライザーをタイトル フィールドに適用しないため、カスタム アナライザーを個々のフィールドに適用するための正しい方向を誰かが教えてくれることを期待していました。

4

1 に答える 1

6

私はこれをmlで答えました:

Java を使用している場合は、yml ファイルを使用する必要はありません。できますが、そうする必要はありません。

Spring を使用している場合は、ES spring factory プロジェクト (  https://github.com/dadoonet/spring-elasticsearch)を参照してください。

そうでない場合は、Java でインデックスとマッピングを作成するさまざまな方法があります。

  1. ここで、json マッピング ファイルを読み取ることでこれをどのように行っているかを確認できます:  https://github.com/dadoonet/spring-elasticsearch/blob/master/src/main/java/fr/pilato/spring /elasticsearch/ElasticsearchAbstractClientFactoryBean.java#L616

  2. ES が提供する XContent オブジェクトを使用して、Java でマッピングを構築することもできます:  https://github.com/dadoonet/rssriver/blob/master/src/test/java/org/elasticsearch/river/rss/RssRiverTest.java# L14

  3. このオブジェクトの使用については、  https ://github.com/dadoonet/rssriver/blob/master/src/test/java/org/elasticsearch/river/rss/AbstractRssRiverTest.java#L98 で説明されています。

次のようにマッピングを追加します。

node .client() .admin () .indices()
 .preparePutMapping ("yourindex" )
 .setType ( "yourtype" )
 .setSource ( mapping ())
 .execute() .actionGet ();

これがお役に立てば幸いです

于 2012-10-04T15:38:57.590 に答える