lucene - query - elasticsearch tutorial
Elasticsearch siempre regresa "falta el tipo de mapeo" (2)
Establecer el mapeo para el índice es posible en Elastic search. Intenté esto con la última versión de Elastic search 1.7.3 y pude establecer la asignación exitosamente en el índice.
Intenté lo siguiente,
- Eliminar el índice (ELIMINAR http://localhost:9200/index )
- Coloque el json de asignación debajo del índice (PUT http://localhost:9200/index )
- Obtenga la asignación (GET http://localhost:9200/ / _mapping)
Estoy siguiendo los consejos dados aquí para encontrar palabras parciales con elasticsearch:
ElasticSearch n-gram tokenfilter no encuentra palabras parciales
Creé un script bash simple que intenta ejecutar una versión de esto:
curl -XDELETE 10.160.86.134:9200/products
curl -XPOST 10.160.86.134:9200/products -d ''{
"index": {
"number_of_shards": 1,
"analysis": {
"filter": {
"mynGram" : {"type": "nGram", "min_gram": 2, "max_gram": 10}
},
"analyzer": {
"a1" : {
"type":"custom",
"tokenizer": "standard",
"filter": ["lowercase", "mynGram"]
}
}
}
}
}
}''
curl -XPUT 10.160.86.134:9200/products/_mapping -d ''{
"product" : {
"index_analyzer" : "a1",
"search_analyzer" : "standard",
"properties" : {
"product_description": {"type":"string"},
"product_name": {"type":"string"}
}
}
}''
Después de ejecutar este script, los dos primeros comandos (dumping de productos, luego ajuste el índice) parecen funcionar, dándome esto:
{"ok":true,"acknowledged":true}
{"ok":true,"acknowledged":true}
Luego se produce un error después de la llamada de asignación que me da esto:
{"error":"ActionRequestValidationException[Validation Failed: 1: mapping type is missing;]","status":500}
¿Alguien puede ver lo que estoy haciendo mal? La búsqueda en google comienza a autocompletar "mapeo no encontrado elasticsearch", por lo que parece ser un error muy común.
Resulta que esto está sucediendo porque la asignación debe aplicarse al tipo:
Intenté aplicarlo a la cosa incorrecta:
curl -XPUT 10.160.86.134:9200/products/_mapping -d ''{
Debe ser aplicado al tipo como tal:
curl -XPUT 10.160.86.134:9200/products/product/_mapping -d ''{
Es triste que una simple búsqueda en Google no pueda responder a esto. También la publicación anterior a la que me vinculé es muy engañosa y la respuesta es incorrecta, que también señalaré allí.