[英]How to add analyzer settings in ElasticSearch?
I am using ElasticSearch 1.5.2 and I wish to have the following settings : 我正在使用ElasticSearch 1.5.2,希望具有以下设置:
"settings": {
"analysis": {
"filter": {
"filter_shingle": {
"type": "shingle",
"max_shingle_size": 2,
"min_shingle_size": 2,
"output_unigrams": false
},
"filter_stemmer": {
"type": "porter_stem",
"language": "English"
}
},
"tokenizer": {
"my_ngram_tokenizer": {
"type": "nGram",
"min_gram": 1,
"max_gram": 1
}
},
"analyzer": {
"ShingleAnalyzer": {
"tokenizer": "my_ngram_tokenizer",
"filter": [
"standard",
"lowercase",
"filter_stemmer",
"filter_shingle"
]
}
}
}
}
Where should I add them? 我应该在哪里添加它们? I mean before index creation or after?
我的意思是在创建索引之前还是之后?
By searching online I found some method like 通过在线搜索,我发现了一些类似的方法
client.admin().indices().prepareCreate("temp_index").setSettings(ImmutableSettings.settingsBuilder().loadFromSource((jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")......and so on)
But I am having 2 issues, 但是我有2个问题,
I get a compile error : The method loadFromSource in the type ImmutableSettings.builder is not applicable for the arguments XContentBuilder 我收到一个编译错误:ImmutableSettings.builder类型的方法loadFromSource不适用于参数XContentBuilder
Also, I don't know how to convert my settings to this format. 另外,我不知道如何将我的设置转换为这种格式。 And where is the documentation to get to know about all these methods?
在哪里可以找到有关所有这些方法的文档? I tried reading the official ElasticSearch JAVA API https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/search.html but I was unable to find anything about setting up analyzers.
我尝试阅读官方的ElasticSearch JAVA API https://www.elastic.co/guide/zh-cn/elasticsearch/client/java-api/current/search.html,但找不到任何有关设置分析仪的信息。 All the related content I find is only in the form of REST APIs and not in Java API.
我发现的所有相关内容仅以REST API的形式出现,而没有以Java API的形式出现。
XContentBuilder
have specific syntax , can be used to create a json object. XContentBuilder
具有特定的语法,可用于创建json对象。
You can follow https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index_.html#helpers to convert your string to XContentBuilder
format. 您可以按照https://www.elastic.co/guide/zh-CN/elasticsearch/client/java-api/current/index_.html#helpers将字符串转换为
XContentBuilder
格式。
If you have same string loaded in application. 如果您在应用程序中加载了相同的字符串。 You simply can do.
您可以做到。
client.admin().indices()
.prepareCreate("index_name").setSettings("{setting _ json _ string }").get()
Will simply work. 只会工作。
If you want to know how the json will look like in XContentBuilder, then here it is, 如果您想知道JSON在XContentBuilder中的外观,那么就在这里,
XContentBuilder settingsBuilder = XContentFactory.jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("filter")
.startObject("filter_shingle")
.field("type","shingle")
.field("max_shingle_size",2)
.field("min_shingle_size",2)
.field("output_unigrams",false)
.endObject()
.startObject("filter_stemmer")
.field("type","porter_stem")
.field("language","English")
.endObject()
.endObject()
.startObject("tokenizer")
.startObject("my_ngram_tokenizer")
.field("type","nGram")
.field("min_gram",1)
.field("max_gram",1)
.endObject()
.endObject()
.startObject("analyzer")
.startObject("ShingleAnalyzer")
.field("tokenizer","my_ngram_tokenizer")
.array("filter","standard","lowercase","filter_stemmer","filter_shingle")
.endObject()
.endObject()
.endObject()
.endObject()
client.admin().indices()
.prepareCreate("index_name").setSettings(settingsBuilder).get()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.