Имея следующее простое отображение:Скопления в Elasticsearch резки строку вместо того, чтобы все,
curl -XPUT localhost:9200/transaciones/ -d '{
"mappings": {
"ventas": {
"properties": {
"tipo": { "type": "string" },
"cantidad": { "type": "double" }
}
}
}
}'
Добавление данных:
curl -XPUT localhost:9200/transaciones/ventas/1 -d '{
"tipo": "Ingreso bancario",
"cantidad": 80
}'
curl -XPUT localhost:9200/transaciones/ventas/2 -d '{
"tipo": "Ingreso bancario",
"cantidad": 10
}'
curl -XPUT localhost:9200/transaciones/ventas/3 -d '{
"tipo": "PayPal",
"cantidad": 30
}'
curl -XPUT localhost:9200/transaciones/ventas/4 -d '{
"tipo": "Tarjeta de credito",
"cantidad": 130
}'
curl -XPUT localhost:9200/transaciones/ventas/5 -d '{
"tipo": "Tarjeta de credito",
"cantidad": 130
}'
Когда я пытаюсь получить aggs
с:
curl -XGET localhost:9200/transaciones/ventas/_search?pretty=true -d '{
"size": 0,
"aggs": {
"tipos_de_venta": {
"terms": {
"field": "tipo"
}
}
}
}'
Ответ:
"took" : 15,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"tipos_de_venta" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "bancario",
"doc_count" : 2
}, {
"key" : "credito",
"doc_count" : 2
}, {
"key" : "de",
"doc_count" : 2
}, {
"key" : "ingreso",
"doc_count" : 2
}, {
"key" : "tarjeta",
"doc_count" : 2
}, {
"key" : "paypal",
"doc_count" : 1
} ]
}
}
}
Как вы можете видеть, что это режет струны Tarjeta de credito
Into Tarjeta
, de
, credit
. Как я могу взять всю строку без использования на карте not_analyzed
на tipo
? Мой желаемый результат будет Ingreso bancario
, PayPal
и Tarjeta de crédito
на ответ будет что-то вроде этого:
"aggregations" : {
"tipos_de_venta" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "Ingreso bancario",
"doc_count" : 2
}, {
"key" : "PayPal",
"doc_count" : 1
}, {
"key" : "Tarjeta de credito",
"doc_count" : 2
} ]
}
}
PS: Я использую ES 2.3.2
Я знаю, что я могу сделать это с помощью 'not_analyzed' (как я утверждаю на посту). Я хочу знать, есть ли другая возможность достичь моей цели, не используя ее. –
Я обновил свой ответ – Val
Немного вопрос. Причина того, что вы не используете 'not_analyzed' в поле' tipo', - это то, что кто-то может захотеть выполнить поиск по самому термину. Используя этот 'tipo.raw', я могу сделать поиск непосредственно на' tipo' и получить aggs на 'tipo.raw' (например, две разные вещи)? –