Last active
          February 26, 2020 17:32 
        
      - 
      
 - 
        
Save benwtrent/87231cd159c437830d6f2d5bfec76280 to your computer and use it in GitHub Desktop.  
    Trying to recreate wierd script bug
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | PUT programs | |
| { | |
| "mappings": { | |
| "properties": { | |
| "visit_times" : { | |
| "type" : "date", | |
| "null_value" : "0" | |
| } | |
| } | |
| } | |
| } | |
| POST programs/_doc | |
| { | |
| "no_visitts": 1 | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": null | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": [] | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": 1582588800001 | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": [1582588800001, 1572588800001] | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": [1482588800001, 1572588800001] | |
| } | |
| POST programs/_doc | |
| { | |
| "visit_times": 1482588800001 | |
| } | |
| # Post a couple of these... | |
| POST programs/_doc | |
| { | |
| "visit_times": [1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001, | |
| 1582588800001] | |
| } | |
| #Both searches are "worst case" as they look for values that are never in the range. So, it iterates ALL values. | |
| # SLOW | |
| POST /programs/_search | |
| { | |
| "query": { | |
| "bool": { | |
| "must": [ | |
| { | |
| "script": { | |
| "script": { | |
| "lang": "painless", | |
| "source": """ | |
| for (int i = 0; i < doc['visit_times'].length; ++i) { | |
| long milliseconds = doc['visit_times'][i].toInstant().toEpochMilli(); | |
| if (milliseconds >= 1882588800000L && milliseconds <= 1882675199999L)) | |
| { | |
| return true; | |
| } | |
| } | |
| return false; | |
| """ | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| #FAST! | |
| POST /programs/_search | |
| { | |
| "query": { | |
| "bool": { | |
| "must": [ | |
| { | |
| "script": { | |
| "script": { | |
| "lang": "painless", | |
| "source": """ | |
| for (visit_time in doc['visit_times']) { | |
| long milliseconds = visit_time.toInstant().toEpochMilli(); | |
| if (milliseconds >= 1882588800000L && milliseconds <= 1882675199999L)) | |
| { | |
| return true; | |
| } | |
| } | |
| return false; | |
| """ | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment