Oi não estou conseguindo executar LOOP em subdocumentos no Painless.
Este é apenas um exemplo um cenário criado para executar LOOP o cenário é outro (este caso poderia ser executado filtro mas o problema é o Loop em subdocumentos).
Hi, I am not able to execute LOOP on subdocuments in Painless.
This is just one example scenario created to run LOOP the scenario is another (this case could be run filter but the problem is the loop in subdocuments).
GET /_stats
GET /product/_mapping
GET /product/_settings
GET /product/table/_search
{"size":99}
CREATEs
DELETE /product
GET /product/table/_search
{"size":99}
PUT /product
{
"mappings":{
"table":{
"properties":{
"name":{"type":"string","index":"not_analyzed"},
"price":{"type":"float"},
"subproduct":{
"type":"nested",
"properties":{
"category":{"type":"long"},
"subname":{"type":"string","index":"not_analyzed"},
"subprice":{"type":"float"}
}
}
}
}
}
}
DATAs
PUT /product/table/1
{"name":"Product 1",
"price":123,
"subproduct":[
{"category":1,
"subname":"SubProduct 1.1",
"subprice":1.1},
{"category":2,
"subname":"SubProduct 1.2",
"subprice":1.2},
{"category":3,
"subname":"SubProduct 1.2",
"subprice":1.3}
]
}
PUT /product/table/2
{"name":"Product 2",
"price":234,
"subproduct":[
{"category":1,
"subname":"SubProduct 2.1",
"subprice":2.1},
{"category":2,
"subname":"SubProduct 2.2",
"subprice":2.2},
{"category":3,
"subname":"SubProduct 2.2",
"subprice":2.3}
]
}
PUT /product/table/3
{"name":"Product 1",
"price":345,
"subproduct":[
{"category":1,
"subname":"SubProduct 3.1",
"subprice":3.1},
{"category":2,
"subname":"SubProduct 3.2",
"subprice":3.2},
{"category":3,
"subname":"SubProduct 3.2",
"subprice":3.3}
]
}
QUERYs
GET /product/table/_search
{
"_source":true,
"size":9,
"script_fields":{
"sub":{
"script":{
"lang":"groovy",
"inline":"price=0; for(s in _source.subproduct){if(s.category==2) price=s.subprice;}; return price;"
}
}
}
}
GET /product/table/_search
{
"_source":true,
"size":9,
"script_fields":{
"sub":{
"script":{
"lang":"painless",
"inline":"def price=0; for(s in _source.subproduct){if(s.category==2) price=s.subprice;} return price;"
}
}
}
}
GET /product/table/_search
{
"_source":true,
"size":9,
"script_fields":{
"sub":{
"script":{
"lang":"painless",
"inline":"def price=0; for(s in doc['subproduct']){if(s.category==2) price=s.subprice;} return price;"
}
}
}
}
GET /product/table/_search
{
"_source":true,
"size":9,
"script_fields":{
"sub":{
"script":{
"lang":"painless",
"inline":"def price=0; for (int i=0; i<doc['subproduct'].length; ++i){if(doc['subproduct'][i].category==2) price=doc['subproduct'][i].subprice;} return price;"
}
}
}
}