Elasticsearch:构建Java客户端的映射

时间:2012-10-04 12:49:17

标签: elasticsearch

在我的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_

这不会将自定义分析器应用于标题字段,所以我希望有人能够指出我将自定义分析器应用于各个领域的正确方向?

1 个答案:

答案 0 :(得分:6)

我在ml:

中回答了这个问题

如果您使用的是Java,则不必使用yml文件。你可以,但你没有。

如果您使用的是Spring,可以查看ES弹簧工厂项目: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

  4. 添加映射如下:

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

    我希望这可以帮到你