title: ElasticSearch - Script - Loop - Painless
body: <p>\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).</p>
  
  <pre><code>GET /_stats
  
  GET /product/_mapping
  GET /product/_settings
  
  GET /product/table/_search
  {"size":99}
  </code></pre>
  
  <p>CREATEs</p>
  
  <pre><code>DELETE /product
  
  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"}
                  }
              }
          }
      }
  }
  }
  </code></pre>
  
  <p>DATAs</p>
  
  <pre><code>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}
      ]
  }
  </code></pre>
  
  <p>QUERYs</p>
  
  <pre><code>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&lt;doc['subproduct'].length; ++i){if(doc['subproduct'][i].category==2) price=doc['subproduct'][i].subprice;} return price;"
              }
          }
      }
  }
  </code></pre>