elasticsearch 在使用Transport Client创建索引时,如何将字段的分析指定为未分析
我使用的是elasticsearch-6.1.1。由于JavaHighLeve客户端未提供CreateIndexRequest api-6.1.1,因此我尝试使用TransportClient创建索引,如下所示:() 代码是:
elasticsearch 在使用Transport Client创建索引时,如何将字段的分析指定为未分析,
elasticsearch,
elasticsearch,我使用的是elasticsearch-6.1.1。由于JavaHighLeve客户端未提供CreateIndexRequest api-6.1.1,因此我尝试使用TransportClient创建索引,如下所示:() 代码是: public class IndexOperations { RestHighLevelClient client ; public IndexOperations(RestHighLevelClient client){ this.cl
public class IndexOperations {
RestHighLevelClient client ;
public IndexOperations(RestHighLevelClient client){
this.client = client ;
}
public void indexOperations()throws UnknownHostException,IOException {
TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName("localhost"),9300));
String mapping = XContentFactory.jsonBuilder()
.startObject()
.startObject("delllogfiles")
.startObject("properties")
.startObject("message")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("logid")
.field("type","long")
.endObject()
.startObject("version")
.field("type","long")
.endObject()
.startObject("qualifiers")
.field("type","text")
.endObject()
.startObject("level")
.field("type","long")
.endObject()
.startObject("task")
.field("type","long")
.endObject()
.startObject("opcode")
.field("type","long")
.endObject()
.startObject("keywords")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("recordid")
.field("type","long")
.endObject()
.startObject("providername")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("providerid")
.field("type","long")
.endObject()
.startObject("logname")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("processid")
.field("type","long")
.endObject()
.startObject("threadid")
.field("type","long")
.endObject()
.startObject("machinename")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("userid")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("timecreated")
.field("type","date")
.endObject()
.startObject("activityid")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("relatedactivityid")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("containerlog")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("matchedqueryids")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("bookmark")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("levldispalyname")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("opcodedisplayname")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("taskdisplayname")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("keywordsdisplayname")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.startObject("properties")
.field("type","text")
.field("index","not_analyzed")
.endObject()
.endObject()
.endObject()
.endObject()
.string();
CreateIndexResponse createIndexResponse = transportClient.admin().indices()
.prepareCreate("logfiles")
.addMapping("delllogfiles",mapping,XContentType.JSON)
.get();
System.out.println("finally index created "+createIndexResponse.isAcknowledged());
transportClient.close();
当运行代码时,我得到一个异常:
Exception in thread "main" MapperParsingException[Failed to parse mapping [delllogfiless]: Could not convert [message.index] to boolean]; nested: IllegalArgumentException[Could not convert [message.index] to boolean]; nested: IllegalArgumentException[Failed to parse value [not_analyzed] as only [true] or [false] are allowed.];
使用TransportClient时,如何将字段的分析程序设置为未分析?来自弹性搜索5索引属性只有两个选项
- 真的
- 假的
很高兴这有帮助!