【发布时间】:2015-01-12 23:28:22
【问题描述】:
Jest 为 elasticsearch 提供了出色的异步 API,我们发现它非常有用。然而,有时结果请求与我们预期的略有不同。
通常我们不在乎,因为一切正常,但在这种情况下却不是。
我想使用自定义 ngram 分析器创建索引。当我按照 elasticsearch rest API 文档执行此操作时,我在下面调用:
curl -XPUT 'localhost:9200/test' --data '
{
"settings": {
"number_of_shards": 3,
"analysis": {
"filter": {
"keyword_search": {
"type": "edge_ngram",
"min_gram": 3,
"max_gram": 15
}
},
"analyzer": {
"keyword": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"keyword_search"
]
}
}
}
}
}'
然后我确认分析器配置正确:
curl -XGET 'localhost:9200/test/_analyze?analyzer=keyword&text=Expecting many tokens
作为回应,我收到了多个令牌,例如 exp、expe、expec 等。
现在使用 Jest 客户端,我将配置 json 放到我的类路径上的一个文件中,内容与上面的 PUT 请求的正文完全相同。我执行这样构造的 Jest 动作:
new CreateIndex.Builder(name)
.settings(
ImmutableSettings.builder()
.loadFromClasspath(
"settings.json"
).build().getAsMap()
).build();
结果
-
Primo - 使用 tcpdump 检查实际发布到 elasticsearch 的内容是(打印得很漂亮):
{ "settings.analysis.filter.keyword_search.max_gram": "15", "settings.analysis.filter.keyword_search.min_gram": "3", "settings.analysis.analyzer.keyword.tokenizer": "whitespace", "settings.analysis.filter.keyword_search.type": "edge_ngram", "settings.number_of_shards": "3", "settings.analysis.analyzer.keyword.filter.0": "lowercase", "settings.analysis.analyzer.keyword.filter.1": "keyword_search", "settings.analysis.analyzer.keyword.type": "custom" } -
Secundo - 生成的索引设置为:
{ "test": { "settings": { "index": { "settings": { "analysis": { "filter": { "keyword_search": { "type": "edge_ngram", "min_gram": "3", "max_gram": "15" } }, "analyzer": { "keyword": { "filter": [ "lowercase", "keyword_search" ], "type": "custom", "tokenizer": "whitespace" } } }, "number_of_shards": "3" <-- the only difference from the one created with rest call }, "number_of_shards": "3", "number_of_replicas": "0", "version": {"created": "1030499"}, "uuid": "Glqf6FMuTWG5EH2jarVRWA" } } } } Tertio - 用
curl -XGET 'localhost:9200/test/_analyze?analyzer=keyword&text=Expecting many tokens检查分析器我只得到一个令牌!
问题1.是什么原因导致Jest没有发布我的原始设置json,而是一些处理了?
问题 2。 为什么 Jest 生成的设置不起作用?
【问题讨论】:
标签: java elasticsearch elasticsearch-jest