And it fails for following script

GET /custom10_index/_search
{
  "query": {
    "match_all": {}
  },
  "sort": {
    "_script": {
      "script": "ICUSortingScriptFilter",
      "params": {
                "field": "LastName"
            },
      "lang": "native",
      "type": "string"
    }
  }
}

Result:
{
   "took": 92,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 4,
      "failed": 1,
      "failures": [
         {
            "index": "custom10_index",
            "shard": 2,
            "status": 500,
            "reason": 
"RemoteTransportException[[Sise-Neg][inet[/10.211.242.237:9301]][indices:data/read/search[phase/query]]];
 
nested: QueryPhaseExecutionException[[custom10_index][2]: 
query[ConstantScore(*:*)],from[0],size[10],sort[<custom:\"_script\": 
org.elasticsearch.search.sort.ScriptSortParser$1@89da6f0>]: Query Failed 
[Failed to execute main query]]; nested: UnsupportedOperationException; "
         }
      ]
   },
   "hits": {
      "total": 0,
      "max_score": null,
      "hits": []
   }
}

Please let me know if there is a way to sort using custom native java 
script in elasticsearch?


On Tuesday, 10 February 2015 13:48:23 UTC+5:30, Geetanjali Paygude wrote:
>
> Thanks Hugues,
>
> This is helpful !! However I was trying to write Java native script for 
> sorting values using ICUCollation.
> Please find attached JAR . This script works fine. However it gives 
> incorrect sorting result. 
>
> Please find below code snippet
>
> Script is as follows:
>
> PUT /custom1_index
>
> {
>
>     "my_type": 
>
>     {"properties" :
>
>       { "LastName" :
>
>         {
>
>         "type": "string", 
>
>         "index":"not-anlayzed"
>
>        }
>
>       }  
>
>     }
>
> }
>
> PUT /custom1_index/my_type/1
>
> { "LastName": "AAP" 
>
>
> }
>
> PUT /custom1_index/my_type/2
>
> { "LastName": "zara" 
>
>
> }
>
>
> PUT /custom1_index/my_type/3
>
> { "LastName": "beta" 
>
>
> }
>
>
> GET /custom1_index/_search
>
> {
>
>  
>
>     
>
>     "script_fields": {
>
>         "sort": {
>
>             "script": "ICUSortingScriptFilter",
>
>             "lang": "native",
>
>             "params": {
>
>                 "field": “LastName"
>
>                 
>
>             }
>
>         },
>
>         "type": "string"
>
>      
>
>     }
>
>     
>
>      
>
> }
> Please let me know if any correction is required in this script.
>
> Regards,
> Angie
>
>
> On Friday, 6 February 2015 11:40:53 UTC+5:30, Hugues Malphettes wrote:
>>
>> Hi Angie,
>>
>> On Friday, 6 February 2015 12:17:47 UTC+8, Geetanjali Paygude wrote:
>>>
>>> Hi Hugues, 
>>>
>>> So you have extended "String" type to add custom analyzer. 
>>>
>>> I am referring to this thread
>>>
>>> http://elasticsearch-users.115913.n3.nabble.com/Support-for-case-insensitive-sorts-with-doc-values-tt4064487.html
>>>
>>> Is there any way to use script/transform the source and then apply sort 
>>> on it? If yes will you please share the same. 
>>>
>>
>>>
>>> As mentioned by Adrien, is there work-around on client-side before the 
>>> data gets into elasticsearch using some native / groovy script? 
>>>
>> I believe Adrien suggested this procedure:
>> - create a second field specifically to store the value as a 
>> docvalue/not_analyzed string
>> - on the client-side analyze the string yourself
>> - add the new value as a separate field in the document you index
>> - "profit": use that new field for sorting and other queries
>>
>> A variation of this consists of delegating the generation of the second 
>> field's value to a _source transform.
>> - create the same second field: docvalues-not_analyzed
>> - define a source transform for the affected type of document
>> - in the script of the source transform apply the transformation you need
>> - "profit"
>> You are saving some bandwidth, the _source of your document will never 
>> show the second value and the impact on your client code is limited to the 
>> queries.
>> ES will work more and the transform you can do in the script might be 
>> limited.
>>
>>
>>>
>>> All I want is following 
>>>
>>>
>>> 1. We have ICU plugin which helps us achieve custom sorting to some 
>>> extent. 
>>> 3. However, the problem now is that we are trying to use the doc_values 
>>> = true option in mapping but this  cannot be used for string fields having 
>>> analyzer. 
>>> 4. So if we need to use ICU plugin then we cannot use doc_value option. 
>>> 5.Other way is to use the ICU plugin as a library i.e. we call some API 
>>> in that plugin which converts our field into required format for sorting. 
>>>
>>>
>>> So is there a way to call some API or transform input using script ?
>>>
>> I suspect it might be difficult to invoke the ICU transformation via a 
>> groovy script.
>> You could make it work with a native script written in java.
>>
>>>
>>>
>>> OR If I use your analyzer in a native script, how to invoke the same 
>>> from mappings. Please provide usage example
>>>
>> My code snippet is in fact a new mapping type; not an analyzer.
>> It is more or less a fork of the original string mapping as defined 
>> inside Elasticsearch.
>>
>> I have packaged this new mapping type in a plugin here: 
>> https://github.com/hmalphettes/elasticsearch-docvalues-string
>>
>> It is a work in progress. Help is welcome if it is useful for you.
>>
>> I hope this helps.
>> Let us know,
>> Hugues
>>  
>>
>>>
>>>
>>>
>>> Thanks,
>>> Angie
>>>
>>> On Friday, 14 November 2014 06:55:36 UTC+5:30, Hugues Malphettes wrote:
>>>>
>>>> Hi Adrian and everyone,
>>>>
>>>> I gave a shot at a extending the 'string' type to add another analyzer:
>>>> https://gist.github.com/hmalphettes/b402d72230e9009f960c
>>>>
>>>> The parameter "index_docvalues_analyzer" when present on the mapping 
>>>> definition will generate a Token Stream and the first token is stored as a 
>>>> SortedSetDocValuesField.
>>>>
>>>> It works for me. WOuld it be interesting to make this part of the 
>>>> standard StringFieldMapper?
>>>>
>>>> Cheers!
>>>> Hugues
>>>>
>>>> On Tuesday, 7 October 2014 18:11:18 UTC+8, Hugues Malphettes wrote:
>>>>>
>>>>> Thanks Adrian,
>>>>>
>>>>> I'll give a shot at the source transform then.
>>>>>
>>>>> If you consider that it makes sense to support this, would it be 
>>>>> helpful to file an enhancement request on github?
>>>>> Give us a hint if you think it can be done by an occasional 
>>>>> contributor ;-)
>>>>>
>>>>> Cheers,
>>>>> Hugues
>>>>>
>>>>> On Tuesday, 7 October 2014 17:59:29 UTC+8, Adrien Grand wrote:
>>>>>>
>>>>>> Hi Hugues,
>>>>>>
>>>>>> For now the work-around would indeed be to do the work on client-side 
>>>>>> before the data gets into elasticsearch (or potentially using the 
>>>>>> _source 
>>>>>> transform[1] feature).
>>>>>>
>>>>>> [1] 
>>>>>> http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-transform.html
>>>>>>
>>>>>> On Tue, Oct 7, 2014 at 9:19 AM, Hugues Malphettes <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>> Hi everyone,
>>>>>>>
>>>>>>> Case insensitive sort is elegantly supported by using a custom 
>>>>>>> analyzer [1].
>>>>>>> `doc values` are documented as a great fit for sorting [2] to save 
>>>>>>> heap memory.
>>>>>>>
>>>>>>> However doc values are not support for analyzed strings at the 
>>>>>>> moment.
>>>>>>>
>>>>>>> Are we planning to support doc values for analyzers that emit a 
>>>>>>> single token per string?
>>>>>>> Is it worth it to have the ES client do the lower-casing and 
>>>>>>> collation itself?
>>>>>>>
>>>>>>> Thanks!
>>>>>>> Hugues
>>>>>>>
>>>>>>> [1] 
>>>>>>> http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/sorting-collations.html#case-insensitive-sorting
>>>>>>> [2] 
>>>>>>> http://www.elasticsearch.org/blog/elasticsearch-1-4-0-beta-released/
>>>>>>>  
>>>>>>>
>>>>>>> -- 
>>>>>>> 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 [email protected].
>>>>>>> To view this discussion on the web visit 
>>>>>>> https://groups.google.com/d/msgid/elasticsearch/4095e5b7-1fb4-477a-b27f-3e4519ab9000%40googlegroups.com
>>>>>>>  
>>>>>>> <https://groups.google.com/d/msgid/elasticsearch/4095e5b7-1fb4-477a-b27f-3e4519ab9000%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>> .
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> -- 
>>>>>> Adrien Grand
>>>>>>  
>>>>>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/f722db1a-9898-4b7a-aa05-110b1970aa25%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to