umay_fb  
                (umay fb)
               
                 
              
                  
                    February 6, 2020, 10:23am
                   
                   
              1 
               
             
            
              i have create a scripted field query search and filter it. but the hits i founds is zero. and show the error like :
#! Deprecation: Deprecated field [inline] used, expected [source] instead 
{ 
"took": 1542, 
"timed_out": false, 
"_shards": { 
"total": 1, 
"successful": 1, 
"skipped": 0, 
"failed": 0 
}, 
"hits": { 
"total": { 
"value": 0, 
"relation": "eq" 
}, 
"max_score": null, 
"hits": 
} 
}
this the script i create and i use query term to get data. 
"script_fields": { 
"date": { 
"script": { 
"lang": "painless", 
"inline": "if (doc['status'].size() <= 0) {return 'IN PROGRESS';}def status = doc['status'].value;if(status == 0) {return 'IN PROGRESS';}else if(status == 1) {return 'DELIVERED';}else if(status == 2) {return 'LOST/BROKEN';}else if(status == 3) {return 'RETURNED';}else if(status == 99) {return 'CANCELLED';}else{return 'FAILED';}" 
}
can i get the result?
             
            
               
               
               
            
            
           
          
            
              
                flash1293  
                (Joe Reuter)
               
              
                  
                    February 6, 2020, 10:32am
                   
                   
              3 
               
             
            
              The most obvious thing would be to use the source property instead of inline (as it says in the response). If there are still problems, could you post the complete request you are sending together with the mapping of your index and an example document that should show up in your search?
             
            
               
               
               
            
            
           
          
            
              
                umay_fb  
                (umay fb)
               
              
                  
                    February 6, 2020, 10:39am
                   
                   
              4 
               
             
            
              its the script i create. i want filter using the result of script_fields. 
{ 
"query": { 
"term": { 
"Delivstatus[0]": "DELIVERED" 
} 
}, 
"_source":  , 
"script_fields": { 
"Delivstatus": { 
"script": { 
"lang": "painless", 
"inline": "if (doc['status'].size() <= 0) {return 'IN PROGRESS';}def status = doc['status'].value;if(status == 0) {return 'IN PROGRESS';}else if(status == 1) {return 'DELIVERED';}else if(status == 2) {return 'LOST/BROKEN';}else if(status == 3) {return 'RETURNED';}else if(status == 99) {return 'CANCELLED';}else{return 'FAILED';}" 
} 
} 
} 
}
             
            
               
               
               
            
            
           
          
            
              
                flash1293  
                (Joe Reuter)
               
              
                  
                    February 6, 2020, 11:01am
                   
                   
              5 
               
             
            
              Can you please also provide the things requested in my latest post? You can black out sensitive information as field names or actual values, but I'm not able to help you with partial information about your situation
             
            
               
               
               
            
            
           
          
            
              
                umay_fb  
                (umay fb)
               
              
                  
                    February 6, 2020, 11:23am
                   
                   
              6 
               
             
            
              for example i get data  : 
{ 
"mapping": { 
"properties": { "status": { 
"type": "long" 
}, 
"Date": { 
"type": "date" 
}, 
"dest": { 
"type": "string" 
}, 
"origin": { 
"type": "string" 
}, 
"Price": { 
"type": "long" 
}}}
and data like :
Status 
Date 
dest 
origin 
price 
 
 
1 
23-Jan-20 
Jakarta 
Jakarta 
100000 
 
0 
23-Jan-20 
Surabaya 
Jakarta 
20000 
 
99 
23-Jan-20 
Bandung 
Jakarta 
13000 
 
0 
23-Jan-20 
Bandung 
Jakarta 
15500 
 
0 
23-Jan-20 
Surabaya 
Medan 
166500 
 
1 
23-Jan-20 
Jakarta 
Medan 
110000 
 
1 
23-Jan-20 
Jakarta 
Jakarta 
200000 
 
 
 and i using this script : 
{ 
"query": { 
"term": { 
"SameCity": "yes" 
}
},
"_source": [],
"script_fields": {
    "SameCity": {
        "script": {
            "lang": "painless",
            "inline": "if (doc['dest'].size() <= 0 || doc['origin'].size() <= 0) {return 'Fail';}def dest = doc['dest'].value;def ori = doc['origin'].value;if(ori == dest) {return 'yes';}else {return 'no';}"
        }
    }
}
 
}
to get data :
Status 
Date 
dest 
origin 
price 
Same City 
 
 
1 
23-Jan-20 
Jakarta 
Jakarta 
100000 
yes 
 
1 
23-Jan-20 
Jakarta 
Jakarta 
200000 
yes 
 
 
 
             
            
               
               
               
            
            
           
          
            
              
                flash1293  
                (Joe Reuter)
               
              
                  
                    February 6, 2020,  2:23pm
                   
                   
              7 
               
             
            
              If you just want to filter by a script, you can use a script within the query clause like this: 
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-script-query.html 
PUT script_index
PUT script_index/_mapping
{
  
    "properties": {
      "status": {
        "type": "long"
      },
      "Date": {
        "type": "date"
      },
      "dest": {
        "type": "keyword"
      },
      "origin": {
        "type": "keyword"
      },
      "Price": {
        "type": "long"
      }
    }
}
PUT script_index/_doc/1
{ "status": 1, "Date": "2020-01-23", "dest": "Jakarta", "origin": "Jakarta", "Price": 100000  }
PUT script_index/_doc/2
{ "status": 0, "Date": "2020-01-23", "dest": "Surabaya", "origin": "Jakarta", "Price": 20000  }
PUT script_index/_doc/3
{ "status": 99, "Date": "2020-01-23", "dest": "Bandung", "origin": "Jakarta", "Price": 13000  }
GET script_index/_search
{
  "query": {
        "bool" : {
            "filter" : {
                "script" : {
                    "script" : {
                        "source": "if (doc['dest'].size() <= 0 || doc['origin'].size() <= 0) {return false;}def dest = doc['dest'].value;def ori = doc['origin'].value;if(ori == dest) {return true}else {return false}",
                        "lang": "painless"
                     }
                }
            }
        }
    }
}
 
Make sure the text fields your are accessing in your script are indexed as keyword type (not text).
             
            
               
               
               
            
            
           
          
            
              
                umay_fb  
                (umay fb)
               
              
                  
                    February 10, 2020,  7:28am
                   
                   
              8 
               
             
            
              thanks @flash1293 ,, its work..
but can we use 2 filter script query?
             
            
               
               
               
            
            
           
          
            
              
                flash1293  
                (Joe Reuter)
               
              
                  
                    February 11, 2020,  9:47am
                   
                   
              9 
               
             
            
              Filter can also be an array:
GET script_index/_search
{
  "query": {
        "bool" : {
            "filter" : [{
                "script" : {
                    "script" : {
                        "source": "if (doc['dest'].size() <= 0 || doc['origin'].size() <= 0) {return false;}def dest = doc['dest'].value;def ori = doc['origin'].value;if(ori == dest) {return true}else {return false}",
                        "lang": "painless"
                     }
                }
            }, {
                "script" : {
                    "script" : {
                        "source": "return true",
                        "lang": "painless"
                     }
                }
            }]
        }
    }
}
 
             
            
               
               
               
            
            
           
          
            
              
                system  
                (system)
                  Closed 
               
              
                  
                    March 10, 2020,  9:47am
                   
                   
              10 
               
             
            
              This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.