Failed to put mappings on indices while using java

Hi,

Full disclosure im a newb at this:

I have been trying to create an index using the below code:
private boolean createIndices( ) {

String indexName="279"
String typeName="badge_type";
String mapping={"badge_type": {"_type":{"store":"true"},"

  • ""_index":{"enabled":"true"},"
  • ""_id":{"path":"badge_type_id"},"
  • ""dynamic":"strict","
  • ""properties":{
    "badge_type_id":{"type":"string","store":"true","index":"not_analyzed"},"

""name":{"type":"string","store":"true","index_analyzer":"autocomplete","search_analyzer":"standard"},"

  • ""description":{"type":"string","store":"true"} "
  • " } } };
    try {
    if (!NodeOperation.INSTANCE.getNode().client().admin().indices()
    .prepareExists(indexName).execute().actionGet().isExists()) {
    System.out.println("index does not exist, create it and : "
  • indexName);
    log.trace("CREATE INDEX: " + indexName);
    String settings = "{"aliases": { "
  • ""content": {}, "school": {}},"
  • ""settings":{"
  • ""index":{"
  • """+indexName+"":{"
  • ""analysis":{"analyzer" : [{"
  • ""autocomplete" : { "
  • ""type" :"custom","
  • ""tokenizer":"keyword","
  • ""filter":["lowercase", "autocomplete_filter" ] } "
  • "},{"
  • ""email_custom" : { "
  • ""type" :"custom","
  • ""tokenizer":"uax_url_email","
  • ""filter":["lowercase", "autocomplete_filter" ] } "
  • "}],"filter":"
  • "{"autocomplete_filter":{ "type" :"edge_ngram","
  • ""min_gram":"2"," + ""max_gram":20" + " }"
  • " }" + " } " + "}}}}";

CreateIndexRequestBuilder irb = NodeOperation.INSTANCE
.getNode().client().admin().indices()
.prepareCreate(indexName).setSource(settings);
irb.execute().actionGet();

}

if (!isTypeExist(indexName, typeName)) {
System.out
.println("type does not exist create it: " + typeName);
PutMappingResponse res = NodeOperation.INSTANCE.getNode()
.client().admin().indices()
.preparePutMapping(indexName).setType(typeName)
.setSource(mapping).setIndices(indexName).execute()
.actionGet();
return res.isAcknowledged();
} else {
return true;
}
} catch (Exception e) {
e.getMessage();
}
return false;
}

the index is created with the following setings:
{

"279" : {
"settings" : {
"index" : {
"settings" : {
"analysis" : {
"filter" : {
"autocomplete_filter" : {
"type" : "edge_ngram",
"min_gram" : "2",
"max_gram" : "20"
}
},
"analyzer" : [ {
"autocomplete" : {
"filter" : [ "lowercase", "autocomplete_filter" ],
"type" : "custom",
"tokenizer" : "keyword"
}
}, {
"email_custom" : {
"type" : "custom",
"filter" : [ "lowercase", "autocomplete_filter" ],
"tokenizer" : "uax_url_email"
}
} ]
}
},
"number_of_shards" : "5",
"number_of_replicas" : "1",
"version" : {
"created" : "1030499"
},
"uuid" : "T4a3_p3GSkKpui5zKhfSqQ"
}
}
}
}

but mapping cannot be added to the type, i get the following error:
[2014-12-02 15:11:32,828][INFO ][cluster.metadata ] [War Eagle]
[279] creating index, cause [api], shards [5]/[1], mappings []
[2014-12-02 15:11:34,229][DEBUG][action.admin.indices.mapping.put] [War
Eagle] failed to put mappings on indices [[279]], type [badge_type]
org.elasticsearch.index.mapper.MapperParsingException: Analyzer
[autocomplete] not found for field [name]
at
org.elasticsearch.index.mapper.core.TypeParsers.parseField(TypeParsers.java:220)
at
org.elasticsearch.index.mapper.core.StringFieldMapper$TypeParser.parse(StringFieldMapper.java:153)
at
org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:289)
at
org.elasticsearch.index.mapper.object.ObjectMapper$TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:217)
at
org.elasticsearch.index.mapper.object.RootObjectMapper$TypeParser.parse(RootObjectMapper.java:136)
at
org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:209)
at
org.elasticsearch.index.mapper.DocumentMapperParser.parseCompressed(DocumentMapperParser.java:190)
at
org.elasticsearch.index.mapper.MapperService.parse(MapperService.java:440)
at
org.elasticsearch.cluster.metadata.MetaDataMappingService$4.execute(MetaDataMappingService.java:503)
at
org.elasticsearch.cluster.service.InternalClusterService$UpdateTask.run(InternalClusterService.java:328)
at
org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:153)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

any help to finding out where im going wrong will be greatly appreciated.

Thanks in advance.

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/b33ab998-935c-4cb7-ba99-35106b9f7c55%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

i found my error, it was in the JSON this is the format that it should have:
{

      "settings":{
          "index":{
     "analysis": {
        "filter": {
           "autocomplete_filter": {
              "type": "edge_ngram",
              "min_gram": "2",
              "max_gram": "20"
           }
        },
        "analyzer": {
              "auto_complete": {
                 "type": "custom",
                 "tokenizer": "keyword",
                 "filter": [
                    "lowercase",
                    "autocomplete_filter"
                 ]
              }
           ,
           
              "email_custom": {
                 "type": "custom",
                 "tokenizer": "uax_url_email",
                 "filter": [
                    "lowercase",
                    "autocomplete_filter"
                 ]
              }
     }
        
     }

}
}
}

--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/a912c56a-3983-4572-9c7a-683b77ca663e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.