2012-06-05 11 views
9

Lo siento, soy nuevo en ElasticSearch.Confusión entre asignaciones y tipos en ElasticSearch

http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping.html

En este documento se dice que puede "crea una asignación de llamada Tweet dentro del índice de twitter"

$ curl -XPUT 'http://localhost:9200/twitter/tweet/_mapping' -d ' 
{ 
    "tweet" : { 
     "properties" : { 
      "message" : {"type" : "string", "store" : "yes"} 
     } 
    } 
} 
' 

Como alguien me dijo en el canal de IRC ES,/twitter/gorjeo del pío = índice, pío = tipo

Pero, ¿qué sucede si hago lo siguiente?

$ curl -XPUT 'http://localhost:9200/twitter/XXX/_mapping' -d ' 
{ 
    "YYY" : { 
     "properties" : { 
      "message" : {"type" : "string", "store" : "yes"} 
     } 
    } 
} 
' 

Si ya proporcioné el nombre del tipo en la url, ¿por qué debería seguir proporcionando un nombre de tipo en el contenido? Si proporciono el nombre del tipo en el contenido, ¿por qué no puedo simplemente llamar a algunos URL como:

$ curl -XPUT 'http://localhost:9200/twitter/_mapping' -d ' 

Durante la lectura del documento, para mí que dice "crea una asignación llamada Tweet dentro del índice de Twitter", esto significa que XXX es el nombre de la asignación y YYY es el nombre del tipo.

Por lo tanto, si hay un nombre de correlación, no puede ser normalmente muchos "asignaciones" para un índice

Así que, al final, XXX y YYY son/deberían ser los mismos?


No es lo que entiendo de la doc, pero lo que pienso es: - Un índice puede tener tipos - Tipos tienen un mapeo lo tanto no creamos un mapeo como la documentación dice, pero creamos un tipo, que tiene un mapeo, o actualizamos el mapeo del tipo no?

Y en un índice donde no quiero usar ningún tipo (todos los documentos indexados tienen el mismo tipo de datos), pero quiero crear una asignación para ese índice, ¿se supone que debo manejar eso creando solo un tipo con su mapeo, y siempre use ese tipo (en el río CouchDB por ejemplo)?

Gracias

Respuesta

10

En la versión actual de búsqueda elasticsearch (0.19.4) "YYY" es ignorado y el mapeo se asigna al tipo "XXX".

De hecho, puede pensar en crear asignaciones como tipos de creación. Internamente, los tipos se representan en términos de asignaciones y la documentación simplemente refleja este comportamiento. Si todos sus registros tienen el mismo tipo, debe tratar el índice como un índice con un solo tipo. El tipo se utiliza para registrar "espacios de nombres" de diferentes tipos y, por lo tanto, es obligatorio. Una identificación en sí misma no identifica un registro de manera única. Para identificar un registro en elasticsearch, necesita tener índice, tipo e id. Esta es la razón por la cual el tipo es un parámetro requerido para la operación get, por ejemplo. Para otras operaciones, si no se especifica type, elasticsearch supone que desea realizar la operación con registros de todos los tipos.

Tenga en cuenta que los tipos también se pueden crear dinámicamente en cualquier momento agregando un registro de un tipo nuevo. Por lo tanto, un índice con un solo tipo es un índice que no tiene el segundo tipo pero.

+0

gracias esto es lo que los registros parecen decirme –

+0

No estoy seguro de saberlo pero es posible establecer todas las asignaciones durante la creación del índice y tiene una API mucho más intuitiva. Vea la sección Asignaciones de esta página: http: // www.elasticsearch.org/guide/reference/api/admin-indices-create-index.html – imotov

+0

sí lo he notado. Pero en realidad me gustaría crear un río CouchDB y no creo que pueda crear el mapeo index + con el río CouchDB. Supongo que debería crear el índice + mapeo (1 paso o 2) primero y luego el río. –

Cuestiones relacionadas