在我的elasticsearch.yml文件中,我尝试实现一些映射,其中使用不同的分析器将属于一种类型的一个字段索引到其余字段。
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_
这不会将自定义分析器应用于标题字段,因此我希望有人可以为我指出将自定义分析器应用于各个字段的正确方向?
我在ml中回答了这个问题:
如果您使用的是Java,则不必使用yml文件。您可以,但不必。
如果您使用的是Spring,则可以查看ES spring工厂项目:https : //github.com/dadoonet/spring- elasticsearch
如果不是这样,则可以使用不同的方法在Java中创建索引和映射:
您可以在这里看看json映射文件,以了解我的工作方式:https : //github.com/dadoonet/spring-elasticsearch/blob/master/src/main/java/fr/pilato/spring /elasticsearch/ElasticsearchAbstractClientFactoryBean.java#L616
您还可以使用ES提供的XContent对象在Java中构建映射:https : //github.com/dadoonet/rssriver/blob/master/src/test/java/org/elasticsearch/river/rss/RssRiverTest.java# L14
这里描述了使用此对象: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 ();
希望对您有帮助