在我的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_
这不会将自定义分析器应用于标题字段,所以我希望有人能够指出我将自定义分析器应用于各个领域的正确方向?
答案 0 :(得分:6)
我在ml:
中回答了这个问题如果您使用的是Java,则不必使用yml文件。你可以,但你没有。
如果您使用的是Spring,可以查看ES弹簧工厂项目: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
添加映射如下:
node .client() .admin () .indices()
.preparePutMapping ("yourindex" )
.setType ( "yourtype" )
.setSource ( mapping ())
.execute() .actionGet ();
我希望这可以帮到你