2012-08-08 6 views
18

में प्रयोग किया जाता है मैं तो जैसे एक साधारण क्वेरी चला रहा हूँ:कोई और अधिक _source अगर script_fields elasticsearch क्वेरी

{ 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "test": { 
     "script": "_source.name" 
    } 
    } 
} 

समस्या यह है कि एक बार मैं script_fields परिचय, मैं अब मेरे परिणामों में _source मिलता है।

मैं कोशिश की है:

{ 
    "fields": [ 
    "_all" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 

और

{ 
    "fields": [ 
    "*" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 

लेकिन वे कोई फर्क नहीं किया। script_fields के अतिरिक्त लौटने का कोई तरीका है?

उत्तर

20

fields सरणी में, यह लोड _source बनाने:

{ 
    "fields": [ 
    "_source" 
    ], 
    "query": { 
    "term": { 
     "statuses": "active" 
    } 
    }, 
    "script_fields": { 
    "email": { 
     "script": "_source.name" 
    } 
    } 
} 
+0

किसी को वास्तव में पता है _why_ ऐसा होता है? क्या यह https://github.com/elastic/elasticsearch/issues/20068 से संबंधित है? –

0

यह मेरे लिए काम करता है:

curl -X DELETE localhost:9200/a 

curl -X POST localhost:9200/a/b/c -d '{"title" : "foo"}' 

curl -X POST localhost:9200/a/_refresh 

echo; 

curl localhost:9200/a/_search?pretty -d '{ 
    "fields": [ 
    "_source" 
    ], 
    "query": { 
    "match_all": {} 
    }, 
    "script_fields": { 
    "title_script": { 
     "script": "_source.title" 
    } 
    } 
}' 

आउटपुट:

"hits" : { 
    # ... 
    "hits" : [ { 
    # ... 
    "_source" : {"title" : "foo"}, 
    "fields" : { 
     "title_script" : "foo" 
    } 
    } ] 
} 
संबंधित मुद्दे