Also, your shard_size parameter should always be greater than the size 
parameter.  So if you are asking for size of 10 then I would try setting 
shard_size to 20 or 30.

On Wednesday, 30 July 2014 09:22:16 UTC+1, Colin Goodheart-Smithe wrote:
>
> Would you be able to re-run your query and post the stack trace from the 
> Elasticsearch server logs.  This might help to work out whats going on.
>
> Thanks
>
> Colin
>
> On Tuesday, 29 July 2014 12:29:00 UTC+1, Valentin wrote:
>>
>> Ok. I think I found the problem. As soon as I try to sort on the script 
>> value it ceases to work
>>
>> works, but unsorted
>> {
>>   "size": 0,
>>   "aggs": {
>>     "winners": {
>>       "terms": {
>>         "field": "tit",
>>         "size": 10,
>>         "shard_size": 4
>>       },
>>       "aggs": {
>>         "articles_over_time": {
>>           "date_histogram": {
>>             "field": "datetime",
>>             "interval": "1d"
>>           }
>>         },
>>         "diff": {
>>           "sum": {
>>             "script": "(doc['datetime'].value < 1406412000000) ? -1 : 1",
>>             "lang": "groovy"
>>           }
>>         }
>>       }
>>     }
>>   }
>> }
>>
>> does not work:
>> {
>>   "size": 0,
>>   "aggs": {
>>     "winners": {
>>       "terms": {
>>         "field": "tit",
>>         "size": 10,
>>         "order": {
>>           "diff": "desc"
>>         },
>>         "shard_size": 4
>>       },
>>       "aggs": {
>>         "articles_over_time": {
>>           "date_histogram": {
>>             "field": "datetime",
>>             "interval": "1d"
>>           }
>>         },
>>         "diff": {
>>           "sum": {
>>             "script": "(doc['datetime'].value < 1406412000000) ? -1 : 1",
>>             "lang": "groovy"
>>           }
>>         }
>>       }
>>     }
>>   }
>> }
>>
>>
>>
>>
>> On Tuesday, July 29, 2014 12:40:15 PM UTC+2, Valentin wrote:
>>>
>>> Hi Colin,
>>>
>>> I could figure out the shard_size problem thanks to your help.
>>>
>>> For the 'datetime' error: I checked and it exists in all the indices. It 
>>> has the correct mappings and the therefor probably could not have wrong 
>>> values I guess. And using the elasticsearch-head plugin I dont get the 
>>> error but a wrong result which really seems strange.
>>>
>>> Thanks
>>> Valentin
>>>
>>> On Tuesday, July 29, 2014 11:54:08 AM UTC+2, Colin Goodheart-Smithe 
>>> wrote:
>>>>
>>>> Firstly, I think the reason you are only getting results from one index 
>>>> when you are asking for a size of 1 in your terms aggregation is because 
>>>> you are asking for the top 1 bucket from each shard on each index.  This 
>>>> will then be merged together and only the top bucket will be kept.  If the 
>>>> top bucket is not the same on all indexes then you will not get results 
>>>> from all indices.  Setting the shard_size parameter to something like 10 
>>>> can help with this (see 
>>>> http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_document_counts_are_approximate
>>>>  
>>>> for more information on this)
>>>>
>>>> Second, I wonder if the reason you are getting the error from your 
>>>> script is that you don't have a 'datetime' value for all of your documents 
>>>> in some of your indices?
>>>>
>>>> Regards,
>>>>
>>>> Colin
>>>>
>>>> On Monday, 28 July 2014 16:04:55 UTC+1, Valentin wrote:
>>>>>
>>>>> Hi Colin,
>>>>>
>>>>> now it gets really strange. First my alias
>>>>> curl 'http://localhost:9200/_alias?pretty'
>>>>> { 
>>>>>   "live-2014-07-27" : { 
>>>>>
>>>>>     "aliases" : { 
>>>>>
>>>>>       "aggtest" : { } 
>>>>>
>>>>>     } 
>>>>>
>>>>>   }, 
>>>>>
>>>>>   "live-2014-07-26" : { 
>>>>>
>>>>>     "aliases" : { 
>>>>>
>>>>>       "aggtest" : { } 
>>>>>
>>>>>     } 
>>>>>
>>>>>   } 
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> I tried two different queries:
>>>>> curl -XPOST 'http://localhost:9200/aggtest/video/_search?pretty=true' 
>>>>> -d '{
>>>>>   "size": 0,
>>>>>   "aggs": {
>>>>>     "winners": {
>>>>>       "terms": {
>>>>>         "field": "tit",
>>>>>         "order": {
>>>>>           "diff": "desc"
>>>>>         },
>>>>>         "size": 1
>>>>>       },
>>>>>       "aggs": {
>>>>>         "articles_over_time": {
>>>>>           "date_histogram": {
>>>>>             "field": "datetime",
>>>>>             "interval": "1d"
>>>>>           }
>>>>>         },
>>>>>         "diff": {
>>>>>           "sum": {
>>>>>             "script": "(doc['datetime'].value < 1406412000000) ? -1 : 
>>>>> 1",
>>>>>             "lang": "groovy"
>>>>>           }
>>>>>         }
>>>>>       }
>>>>>     }
>>>>>   }
>>>>> }'
>>>>>
>>>>> and
>>>>>
>>>>> curl -XPOST '
>>>>> http://localhost:9200/live-2014-07-26,live-2014-07-27/video/_search?pretty=true'
>>>>>  
>>>>> .....
>>>>>
>>>>> both do give me a result (but a wrong one) when I do query using 
>>>>> elasticsearch-head but result in an error if I use the commandline
>>>>>
>>>>> {
>>>>>
>>>>>   "error" : "SearchPhaseExecutionException[Failed to execute phase 
>>>>> [query], all shards failed; shardFailures 
>>>>> {[_MxuihP3TfmZV4FYUQaRQQ][live-2014-07-26][1]: 
>>>>> QueryPhaseExecutionException[[live-2014-07-26][1]: 
>>>>> query[ConstantScore(cache(_type:video))],from[0],size[0]: Query Failed 
>>>>> [Failed to execute main query]]; nested: 
>>>>> GroovyScriptExecutionException[MissingPropertyException[No such property: 
>>>>> datetime for class: Script126]]; 
>>>>> }{[FYhB58m7T1W3HjhzUmtzww][live-2014-07-27][0]: 
>>>>> RemoteTransportException[[live02][inet[/10.XXX.XX.XX:9300]][search/phase/query]];
>>>>>  
>>>>> nested: QueryPhaseExecutionException[[live-2014-07-27][0]: 
>>>>> query[ConstantScore(cache(_type:video))],from[0],size[0]: Query Failed 
>>>>> [Failed to execute main query]]; nested: 
>>>>> GroovyScriptExecutionException[MissingPropertyException[No such property: 
>>>>> datetime for class: Script119]]; 
>>>>> }{[_MxuihP3TfmZV4FYUQaRQQ][live-2014-07-27][1]: 
>>>>> QueryPhaseExecutionException[[live-2014-07-27][1]: 
>>>>> query[ConstantScore(cache(_type:video))],from[0],size[0]: Query Failed 
>>>>> [Failed to execute main query]]; nested: 
>>>>> GroovyScriptExecutionException[MissingPropertyException[No such property: 
>>>>> datetime for class: Script126]]; 
>>>>> }{[FYhB58m7T1W3HjhzUmtzww][live-2014-07-26][0]: 
>>>>> RemoteTransportException[[live02][inet[/10.XXX.XX.XX:9300]][search/phase/query]];
>>>>>  
>>>>> nested: QueryPhaseExecutionException[[live-2014-07-26][0]: 
>>>>> query[ConstantScore(cache(_type:video))],from[0],size[0]: Query Failed 
>>>>> [Failed to execute main query]]; nested: 
>>>>> GroovyScriptExecutionException[MissingPropertyException[No such property: 
>>>>> datetime for class: Script119]]; }]",
>>>>>
>>>>>   "status" : 500
>>>>>
>>>>> }
>>>>>
>>>>>
>>>>> But I noticed something strange. This works:
>>>>> curl -XPOST 'http://localhost:9200/aggtest/video/_search?pretty=true' 
>>>>> -d '{
>>>>>   "size": 0,
>>>>>   "aggs": {
>>>>>     "winners": {
>>>>>       "terms": {
>>>>>         "field": "tit"
>>>>>       },
>>>>>       "aggs": {
>>>>>         "articles_over_time": {
>>>>>           "date_histogram": {
>>>>>             "field": "datetime",
>>>>>             "interval": "1d"
>>>>>           }
>>>>>         }
>>>>>       }
>>>>>     }
>>>>>   }
>>>>> }'
>>>>> result:
>>>>>
>>>>> {
>>>>>
>>>>>   "took" : 26,
>>>>>
>>>>>   "timed_out" : false,
>>>>>
>>>>>   "_shards" : {
>>>>>
>>>>>     "total" : 4,
>>>>>
>>>>>     "successful" : 4,
>>>>>
>>>>>     "failed" : 0
>>>>>
>>>>>   },
>>>>>
>>>>>   "hits" : {
>>>>>
>>>>>     "total" : 89419,
>>>>>
>>>>>     "max_score" : 0.0,
>>>>>
>>>>>     "hits" : [ ]
>>>>>
>>>>>   },
>>>>>
>>>>>   "aggregations" : {
>>>>>
>>>>>     "winners" : {
>>>>>
>>>>>       "buckets" : [ {
>>>>>
>>>>>         "key" : "videotitle",
>>>>>
>>>>>         "doc_count" : 3539,
>>>>>
>>>>>         "articles_over_time" : {
>>>>>
>>>>>           "buckets" : [ {
>>>>>
>>>>>             "key_as_string" : "2014-07-26T00:00:00.000Z",
>>>>>
>>>>>             "key" : 1406332800000,
>>>>>
>>>>>             "doc_count" : 2820
>>>>>
>>>>>           }, {
>>>>>
>>>>>             "key_as_string" : "2014-07-27T00:00:00.000Z",
>>>>>
>>>>>             "key" : 1406419200000,
>>>>>
>>>>>             "doc_count" : 719
>>>>>
>>>>>           } ]
>>>>>
>>>>>         }
>>>>>
>>>>>       }, {
>>>>>
>>>>> But this does not: (notice the size-limit to 1)
>>>>> curl -XPOST 'http://localhost:9200/aggtest/video/_search?pretty=true' 
>>>>> -d '{
>>>>>   "size": 0,
>>>>>   "aggs": {
>>>>>     "winners": {
>>>>>       "terms": {
>>>>>         "field": "tit",
>>>>>         "size": 1
>>>>>       },
>>>>>       "aggs": {
>>>>>         "articles_over_time": {
>>>>>           "date_histogram": {
>>>>>             "field": "datetime",
>>>>>             "interval": "1d"
>>>>>           }
>>>>>         }
>>>>>       }
>>>>>     }
>>>>>   }
>>>>> }'
>>>>> result:
>>>>>
>>>>> {
>>>>>
>>>>>   "took" : 17,
>>>>>
>>>>>   "timed_out" : false,
>>>>>
>>>>>   "_shards" : {
>>>>>
>>>>>     "total" : 4,
>>>>>
>>>>>     "successful" : 4,
>>>>>
>>>>>     "failed" : 0
>>>>>
>>>>>   },
>>>>>
>>>>>   "hits" : {
>>>>>
>>>>>     "total" : 89419,
>>>>>
>>>>>     "max_score" : 0.0,
>>>>>
>>>>>     "hits" : [ ]
>>>>>
>>>>>   },
>>>>>
>>>>>   "aggregations" : {
>>>>>
>>>>>     "winners" : {
>>>>>
>>>>>       "buckets" : [ {
>>>>>
>>>>>         "key" : "videotitle",
>>>>>
>>>>>         "doc_count" : 2820,
>>>>>
>>>>>         "articles_over_time" : {
>>>>>
>>>>>           "buckets" : [ {
>>>>>
>>>>>             "key_as_string" : "2014-07-26T00:00:00.000Z",
>>>>>
>>>>>             "key" : 1406332800000,
>>>>>
>>>>>             "doc_count" : 2820
>>>>>
>>>>>           } ]
>>>>>
>>>>>         }
>>>>>
>>>>>       } ]
>>>>>
>>>>>     }
>>>>>
>>>>>   }
>>>>>
>>>>> }
>>>>>
>>>>> Which seems to be a related problem to my original query, because it 
>>>>> always seem to query one index but not the other 
>>>>>
>>>>> my original query I used in elasticsearch-head:
>>>>> /aggtest/video/
>>>>>
>>>>> {
>>>>>   "size": 0,
>>>>>   "aggs": {
>>>>>     "winners": {
>>>>>       "terms": {
>>>>>         "field": "tit",
>>>>>         "order": {
>>>>>           "diff": "desc"
>>>>>         }
>>>>>       },
>>>>>       "aggs": {
>>>>>         "articles_over_time": {
>>>>>           "date_histogram": {
>>>>>             "field": "datetime",
>>>>>             "interval": "1d"
>>>>>           }
>>>>>         },
>>>>>         "diff": {
>>>>>           "sum": {
>>>>>             "script": "(doc['datetime'].value < 1406412000000) ? -1 : 
>>>>> 1",
>>>>>             "lang": "groovy"
>>>>>           }
>>>>>         }
>>>>>       }
>>>>>     }
>>>>>   }
>>>>> }
>>>>> and the result:
>>>>>
>>>>>    - {
>>>>>       - key: videotitle 
>>>>>       - doc_count: 719
>>>>>       - articles_over_time: {
>>>>>          - buckets: [
>>>>>             - {
>>>>>                - key_as_string: 2014-07-27T00:00:00.000Z
>>>>>                - key: 1406419200000
>>>>>                - doc_count: 719
>>>>>             }
>>>>>          ]
>>>>>       }
>>>>>       - diff: {
>>>>>          - value: 719
>>>>>       }
>>>>>    }
>>>>>
>>>>>
>>>>>
>>>>> Thanks,
>>>>> Valentin
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Monday, July 28, 2014 3:42:46 PM UTC+2, Colin Goodheart-Smithe 
>>>>> wrote:
>>>>>>
>>>>>> How are you searching over the multiple indexes? are you using 
>>>>>> aliases? It would be helpful if you could post your alias configuration 
>>>>>> (see [1]) and an cURL example of a search request that fails
>>>>>>
>>>>>> [1] 
>>>>>> http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html#alias-retrieving
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Colin
>>>>>>
>>>>>> On Monday, 28 July 2014 14:00:55 UTC+1, Valentin wrote:
>>>>>>>
>>>>>>> Hi Colin,
>>>>>>>
>>>>>>> thanks for checking. I could successfully reproduce your example and 
>>>>>>> I even splitted it into 2 indeces and it worked (Elasticsearch 1.3.0). 
>>>>>>> But 
>>>>>>> as soon as I try it with my data it doesnt work. I ran some additional 
>>>>>>> tests and it works if I only use the current index (day) and split it 
>>>>>>> in 
>>>>>>> half. But as soon as I try to compare yesterday and the day before it 
>>>>>>> only 
>>>>>>> seems to get the data from one day but not the other.
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Valentin
>>>>>>>
>>>>>>> On Monday, July 28, 2014 10:07:43 AM UTC+2, Colin Goodheart-Smithe 
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> I ran the commands in the following gist, on master, without error. 
>>>>>>>>  Would you be able to post the error you get and a similar 
>>>>>>>> reproducible 
>>>>>>>> example to help diagnose the issue you are running into? Also, which 
>>>>>>>> version of Elasticsearch are you running?
>>>>>>>>
>>>>>>>> https://gist.github.com/colings86/46fbb0b22c2f3c4348ae
>>>>>>>>
>>>>>>>> Thanks
>>>>>>>>
>>>>>>>> Colin
>>>>>>>>
>>>>>>>> On Sunday, 27 July 2014 17:53:29 UTC+1, Valentin wrote:
>>>>>>>>>
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I am trying to use this aggregation which does not work:
>>>>>>>>> "aggs": {
>>>>>>>>>     "winners": {
>>>>>>>>>       "terms": {
>>>>>>>>>         "field": "urls",
>>>>>>>>>         "order": {
>>>>>>>>>           "diff": "desc"
>>>>>>>>>         }
>>>>>>>>>       },
>>>>>>>>>       "aggs": {
>>>>>>>>>         "diff": {
>>>>>>>>>           "sum": {
>>>>>>>>>             "script": "(doc['datetime'].date.getMillis() < 
>>>>>>>>> 1406332800000) ? -1 : 1",
>>>>>>>>>             "lang": "groovy"
>>>>>>>>>           }
>>>>>>>>>         }
>>>>>>>>>       }
>>>>>>>>>     }
>>>>>>>>>   }
>>>>>>>>>
>>>>>>>>> Can anyone help?
>>>>>>>>>
>>>>>>>>> Cheers,
>>>>>>>>> Valentin
>>>>>>>>>
>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elasticsearch+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/99841285-725a-41d0-b337-65a2eca0b4af%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to