Jest爲elasticsearch提供了一個出色的異步API,我們發現它非常有用。但是,有時會發現結果請求與我們所期望的稍有不同。使用Jest自定義分析器創建索引的故障
通常我們並不關心,因爲一切工作正常,但在這種情況下,它不是。
我想用自定義的ngram分析器創建一個索引。當我這樣做以下的elasticsearch其餘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 ,ex,expec等等。
現在使用Jest客戶端,我把配置json放到我的類路徑中的一個文件中,內容與上面的PUT請求的主體完全相同。我執行這樣構成的玩笑動作:
new CreateIndex.Builder(name)
.settings(
ImmutableSettings.builder()
.loadFromClasspath(
"settings.json"
).build().getAsMap()
).build();
在結果
普里莫 - 使用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.是什麼玩笑不發表我的原始設置JSON的原因,但一些處理一個呢?
問題2.爲什麼由Jest生成的設置不起作用?
感謝您的努力,回答我的問題,就必須採取一段時間!我將你的建議應用於刪除頂部設置元素,它完美地工作。 – macias
沒有probs!請記住,您可以使用原始字符串作爲「源」。 –