我正在使用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"
]
}
}
}
}
我应该在哪里添加它们?我的意思是在创建索引之前还是之后?
通过在线搜索,我发现了一些类似的方法
client.admin().indices().prepareCreate("temp_index").setSettings(ImmutableSettings.settingsBuilder().loadFromSource((jsonBuilder()
.startObject()
.startObject("analysis")
.startObject("analyzer")......and so on)
但是我有2个问题,
XContentBuilder
具有特定的语法,可用于创建json对象。
您可以按照https://www.elastic.co/guide/zh-CN/elasticsearch/client/java-
api/current/index_.html#helpers
将字符串转换为XContentBuilder
格式。
如果您在应用程序中加载了相同的字符串。您可以做到。
client.admin().indices()
.prepareCreate("index_name").setSettings("{setting _ json _ string }").get()
只会工作。
如果您想知道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()
问题内容: 我最近一直在尝试用Elasticsearch在Rails上使用ruby。我在为数据编制索引时遇到麻烦,因此我可以搜索带有复数和非复数关键字的项目。 Tire将允许我为每个映射属性分配一个分析器: 现在,假设我在“测试”标题中有一个关键字 如果我使用查询中的属性进行搜索: http:// localhost:9200 / myindex / mymapping / _search?q =
我有一个法语单词索引。我想在索引属性上应用一个分析器。假设我有一个标题属性,我想将其视为“法国属性”。我试过这个(在基巴纳): 但它导致: 我不明白为什么我会有这个错误。如果我显示映射(
我有一个elasticsearch请求如下: 我想在这个请求中添加分页,就像 我搜索了很多,找到了一个关于它的链接:https://github.com/elastic/elasticsearch/issues/4915. 但我仍然没有得到实现方法。 有没有办法通过Elasticsearch本身而不是我的应用程序来实现它?
问题内容: 我正在使用Sense(Chrome插件),并且已经成功设置了分析仪,并且可以正常工作。如果我在设置上发出GET(/ media / _settings),则返回以下内容。 我正在尝试通过执行以下操作来更新它: 关闭索引 发出此PUT命令(删除过滤器) 打开索引 但是,当设置恢复时,不会删除过滤器。创建分析器后,是否可以不对其进行更新? 问题答案: 简短答案:不可以。 更长的答案。从ES
问题内容: 我在ElasticSearch字段中有一个我不想分析的字段,即应逐字存储和比较它。这些值将包含字母,数字,空格,破折号,斜杠以及其他字符。 如果我在此字段的映射中未提供分析器,则默认值仍会使用标记程序,该标记程序会将我的逐字字符串分成大量单词。我不要 是否有一个超级简单的分析器,基本上不分析?还是有另一种方式表示不应分析此字段? 我只创建索引,我什么也没做。我可以在其他字段中使用“英语
问题内容: 我从第一页的API解析数据并将其添加到中,现在页面可以是多个,比如说100,我也可以从API获取页面总数。但是我将如何在tableView中为每个页面实现它并在滚动时显示指示器。看看我的代码 问题答案: 有很多方法可以实现这一点,例如以下方法: 首先,您需要创建一个在Delegates和中加载的全局变量。 现在,在您的api调用上,您需要在全局数组中添加That记录。 在最后一个单元格