2015-09-09 7 views
9

Attualmente utilizzo Elastisearch 1.5.
Voglio aggiornare a Elasticsearch 1.7.script_score lo script non può essere caricato script di tipo [inline], operazione [ricerca] e lang [groovy] sono disabilitati

E poi quando corro sotto query al ES1.7, ho ottenuto l'errore che è

nidificato: QueryParsingException [[my_index] script_score lo script non potrebbe essere caricato ]; nested: ScriptException [script di tipo [inline], operazione [ricerca] e lang [groovy] disabilitati]; .

Questa query funziona sicuramente sull'ambiente ES 1.5. Voglio usare la stessa query per ES 1.7.

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "filtered": { 
      "query": { 
      "query_string": { 
       "fields": [ 
       "itemname" 
       ], 
       "query": "coke" 
      } 
      } 
     } 
     }, 
     "script_score": { 
     "script": "_score + doc['myscore'].value" 
     } 
    } 
    } 
} 

Ho già letto questo documento. https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html#enable-dynamic-scripting

Quindi, ho aggiunto le seguenti opzioni al mio elasticsearch.yml.

script.inline: on 
script.indexed: on 
script.engine.groovy.inline.aggs: on 

E l'ho fatto per riavviare il demone elasticsearch e per creare nuovo indice, ma ho ancora ottenuto l'errore.

Qualcuno mi consiglia come posso risolvere questo problema?

Aggiunto

[[email protected]]# curl -XGET 'http://localhost:9200' 
{ 
    "status" : 200, 
    "name" : "Ghost Girl", 
    "cluster_name" : "elasticsearch", 
    "version" : { 
    "number" : "1.7.1", 
    "build_hash" : "b88f43fc40b0bcd7f173a1f9ee2e97816de80b19", 
    "build_timestamp" : "2015-07-29T09:54:16Z", 
    "build_snapshot" : false, 
    "lucene_version" : "4.10.4" 
    }, 
    "tagline" : "You Know, for Search" 
} 

[[email protected]]# tail -n 10 /etc/elasticsearch/elasticsearch.yml 
# http server. With this enabled, it may pose a security risk, so disabling 
# it unless you need it is recommended (it is disabled by default). 
# 
#http.jsonp.enable: true 

script.groovy.sandbox.enabled: true 
script.inline: on 
script.indexed: on 
script.search: on 
script.engine.groovy.inline.aggs: on 

[[email protected]]# /etc/rc.d/init.d/elasticsearch restart 
Stopping elasticsearch:         [ OK ] 
Starting elasticsearch:         [ OK ] 

[[email protected]]# curl -XPOST 'localhost:9200/my_index/_search?pretty' -d '{ 
> "query": { 
>  "function_score": { 
>  "query": { 
>   "filtered": { 
>   "query": { 
>    "query_string": { 
>    "fields": [ 
>     "itemname" 
>    ], 
>    "query": "coke" 
>    } 
>   } 
>   } 
>  }, 
>  "script_score": { 
>   "script": "_score * 0.5" 
>  } 
>  } 
> } 
> }' 
{ 
    "took" : 3029, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 3, 
    "failed" : 2, 
    "failures" : [ { 
     "index" : "my_index", 
     "shard" : 1, 
     "status" : 400, 
     "reason" : "RemoteTransportException[[Fury][inet[/xx.xx.xx.xx:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[ss][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\": {\n \"function_score\": {\n  \"query\": {\n  \"filtered\": {\n   \"query\": {\n   \"query_string\": {\n    \"fields\": [\n    \"itemname\"\n    ],\n    \"query\": \"coke\"\n   }\n   }\n  }\n  },\n  \"script_score\": {\n  \"script\": \"_score * 0.5\"\n  }\n }\n }\n}]]]; nested: QueryParsingException[[my_index] script_score the script could not be loaded]; nested: ScriptException[scripts of type [inline], operation [search] and lang [groovy] are disabled]; " 
    }, { 
     "index" : "my_index", 
     "shard" : 4, 
     "status" : 400, 
     "reason" : "RemoteTransportException[[Fury][inet[/xx.xx.xx.xx:9300]][indices:data/read/search[phase/query]]]; nested: SearchParseException[[my_index][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"query\": {\n \"function_score\": {\n  \"query\": {\n  \"filtered\": {\n   \"query\": {\n   \"query_string\": {\n    \"fields\": [\n    \"itemname\"\n    ],\n    \"query\": \"coke\"\n   }\n   }\n  }\n  },\n  \"script_score\": {\n  \"script\": \"_score * 0.5\"\n  }\n }\n }\n}]]]; nested: QueryParsingException[[my_index] script_score the script could not be loaded]; nested: ScriptException[scripts of type [inline], operation [search] and lang [groovy] are disabled]; " 
    } ] 
    }, 
    "hits" : { 
    "total" : 0, 
    "max_score" : null, 
    "hits" : [ ] 
    } 
} 
+0

Puoi aggiungere 'script.search: on' e' script.groovy.sandbox.enabled: true'? – Val

+0

@Val Grazie, ho aggiunto quei parametri. ma non funziona. attualmente ho aggiunto "script.groovy.sandbox.enabled: true" e "script.inline: on" e "script.indexed: on" e "script.search: on" e "script.engine.groovy.inline. aggs: on ". Qualche idea ? – k16

+1

Stranamente, la stessa esatta query con le stesse identiche impostazioni funziona perfettamente sul mio 1.7. Sei sicuro di aver riavviato il tuo cluster ES? – Val

risposta

6

aggiungere script.engine.groovy.inline.update: on al file .yml

0

Come ha detto il Repond: nested: ScriptException[scripts of type [inline], operation [search] and lang [groovy] are disabled]

Puoi aggiungere script.engine.groovy.inline.search: on in .yml file.

+0

per favore fornisci anche un esempio basato su post OP –

Problemi correlati