Sto tentando di utilizzare i campi di script nella mia query. Ho abilitato lo scripting sandbox e ho provato a usare un'espressione per calcolare un nuovo campo.Campo di script che utilizza l'espressione - È possibile accedere solo alla variabile membro [valore] o ai metodi membri
Il fatto è che ottengo il seguente errore:
{
"type": "expression_script_compilation_exception",
"reason": "Only the member variable [value] or member methods may be accessed on a field when not accessing the field directly"
}
Sembra che solo "valore" è accessibile. cosa mi manca qui?
Quando si esegue la seguente query:
{
"query": {
"match_all": {}
},
"script_fields" : {
"field1" : {
"script" : {
"lang": "expression",
"inline": "doc['about.hobbies'].empty"
}
}
}
}
Mapping:
{
"my_index": {
"mappings": {
"type": {
"properties": {
"about": {
"properties": {
"hobbies": {
"type": "string",
"analyzer": "lowercase"
}
}
}
}
}
}
}
piccola spiegazione: Ho un campo che può contenere l'elenco dei valori di stringa.
"hobbies": ["a","b",c"]
e può essere anche vuoto. Voglio avere un campo di script di tipo booleano che avrà il valore true quando la lista non è vuota, e false quando la lista è vuota.
Aggiornamento: Leggendo alcune di più, ho incontrato questa documentazione su lucene expressions scripts
There are a few limitations relative to other script languages:
- Only numeric fields may be accessed
- Stored fields are not available
- If a field is sparse (only some documents contain a value), documents missing the field will have a value of 0
Il mio campo è di tipo stringa, potrebbe essere il problema? In caso affermativo, esiste un altro modo per utilizzare i campi di script in base ai campi stringa? magari usare groovy?
Si prega di condividere la mappatura .. – Richa
Grazie @Richa. Aggiornato. – Tomer