use*_*259 11 java mapping analyzer elasticsearch
在索引之前,我有一些我不想分析的弹性搜索字段.我已经读过,正确的方法是改变索引映射.现在我的映射看起来像这样:
{
"test" : {
"general" : {
"properties" : {
"message" : {
"type" : "string"
},
"source" : {
"type" : "string"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
{
"test" : {
"general" : {
"properties" : {
"message" : {
"type" : "string",
"index" : "not_analyzed"
},
"source" : {
"type" : "string"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我一直试图通过改变设置
client.admin().indices().prepareCreate("test")
.setSettings(getGrantSettings());
Run Code Online (Sandbox Code Playgroud)
getGrantSettings()的位置如下:
static Settings getGrantSettings(){
JSONObject settingSource = new JSONObject();
try{
settingSource.put("mapping", new JSONObject()
.put("message", new JSONObject()
.put("type", "string")
.put("index", "not_analyzed")
));
} catch (JSONException e){
e.printStackTrace();
}
Settings set = ImmutableSettings.settingsBuilder()
.loadFromSource(settingSource.toString()).build();
return set;
}
Run Code Online (Sandbox Code Playgroud)
Pai*_*ook 20
我已成功使用Java API将映射应用于Elasticsearch索引,如下所示:
XContentBuilder mapping = jsonBuilder()
.startObject()
.startObject("general")
.startObject("properties")
.startObject("message")
.field("type", "string")
.field("index", "not_analyzed")
.endObject()
.startObject("source")
.field("type","string")
.endObject()
.endObject()
.endObject()
.endObject();
PutMappingResponse putMappingResponse = client.admin().indices()
.preparePutMapping("test")
.setType("general")
.setSource(mapping)
.execute().actionGet();
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
Cha*_*ith 11
为未来的读者添加这个.请注意,您需要在创建实际索引之前执行映射,否则您将获得异常.请参阅以下代码.
client.admin().indices().create(new CreateIndexRequest("indexname")).actionGet();
PutMappingResponse putMappingResponse = client.admin().indices()
.preparePutMapping("indexname")
.setType("indextype")
.setSource(jsonBuilder().prettyPrint()
.startObject()
.startObject("indextype")
.startObject("properties")
.startObject("country").field("type", "string").field("index", "not_analyzed").endObject()
.endObject()
.endObject()
.endObject())
.execute().actionGet();
IndexResponse response1 = client.prepareIndex("indexname", "indextype")
.setSource(buildIndex())
.execute()
.actionGet();
// Now "Sri Lanka" considered to be a single country :)
SearchResponse response = client.prepareSearch("indexname"
).addAggregation(AggregationBuilders.terms("countryfacet").field("country")).setSize(30).execute().actionGet();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19067 次 |
| 最近记录: |