3

在我的elasticsearch.yml文件中,我试图实现一些映射,其中属于一种类型的一个字段使用与其余字段不同的分析器进行索引。

目前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

我在毫升中回答了这个问题:

如果您使用的是 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 回答