Hi, Kevin:
Create Index
ref<http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-create-index.html#mappings>says
mappings can be included in index settings JSON. Are you saying that's
not supported by the Java client? (Fwiw, I am seeing the same - just wanted
to confirm):
the following settings successfully create index with predefined mappings
when using curl put /idx -d @settings.json but not when fed to java client
like so:
Settings settings =
ImmutableSettings.settingsBuilder().loadFromClasspath("es_admin_idx_settings.json").build();
return
getClient().admin().indices().prepareCreate(idxName).setSettings(settings).execute();
INFO metadata:114 - [Seth] [idx-elasticsearchserviceintegrationtest]
creating index, cause [api], shards [2]/[0], mappings [] //EMPTY MAPPINGS
{
"index" : {
"number_of_shards" : 1,
"number_of_replicas": 0
},
"mappings": {
"eligibility_criteria": {
"properties": {
"name": {
"type" : "string",
"fields": {
"raw": {
"type" : "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
On Tuesday, February 4, 2014 5:00:30 PM UTC-8, Kevin Wang wrote:
>
> The index request is used to index document, you should use put mapping
> request.
>
> e,g,
> PutMappingResponse response =
> client.admin().indices().preparePutMapping(INDEX).setType(INDEX_TYPE).setSource(source).get();
>
>
> On Wednesday, February 5, 2014 1:27:41 AM UTC+11, Doru Sular wrote:
>>
>> Hi guys,
>>
>> I am trying to create an index with the following code:
>> XContentBuilder source = XContentFactory.jsonBuilder().startObject()
>> //
>> .startObject("settings")
>> .field("number_of_shards", 1)
>> .endObject()// end settings
>> .startObject("mappings")
>> .startObject(INDEX_TYPE)//
>> .startObject("properties")//
>> .startObject("user")
>> .field("type", "string") // start user
>> .field("store", "yes")
>> .field("index", "analyzed")//
>> .endObject()// end user
>> .startObject("postDate")//
>> .field("type", "date")
>> .field("store", "yes")
>> .field("index", "analyzed")//
>> .endObject()// end post date
>> .startObject("message") //
>> .field("type", "string")
>> .field("store", "yes")
>> .field("index", "not_analyzed")
>> .endObject() // end user field
>> .endObject() // end properties
>> .endObject() // end index type
>> .endObject() // end mappings
>> .endObject(); // end the container object
>>
>> IndexResponse response = this.client.prepareIndex(INDEX,INDEX_TYPE
>> ).setSource(source)
>> .setType(INDEX_TYPE).execute()
>> .actionGet();
>>
>>
>> I want to have the "message" field not analyzed, because later I want to
>> use facets to obtain unique messages.
>> Unfortunately my code seems to add just a document in index with the
>> following structure:
>> {
>> "settings": {
>> "number_of_shards": 1
>> },
>> "mappings": {
>> "tweet": {
>> "properties": {
>> "user": {
>> "type": "string",
>> "store": "yes",
>> "index": "analyzed"
>> },
>> "postDate": {
>> "type": "date",
>> "store": "yes",
>> "index": "analyzed"
>> },
>> "message": {
>> "type": "string",
>> "store": "yes",
>> "index": "not_analyzed"
>> }
>> }
>> }
>> }
>> }
>>
>> Please help me to spot the error, it seems that mapping are not created.
>> Thank you very much,
>> Doru
>>
>>
--
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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elasticsearch/c04558a1-5faa-48eb-8861-0145d4d8c5e3%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.