2017-10-26 16 views
0

에 사전 등록 mushache 템플릿에 tojson 사용하는 방법. kibana Console에서 용어 쿼리를 사용하여 검색 템플릿을 저장하려고합니다.Elasticsearch</p> <p>안녕,</p> <p>에서 사전 등록 mushache 템플릿의 사용 조건에 내가 Elasticsearch의 v5.6.3를 사용하는 방법 Elasticsearch

POST _scripts/test-json 
{ 
    "script": { 
    "lang": "mustache", 
    "source": {"query": {"filter": {"bool": {"must": [{"terms": {"beat.hostname": {{#tojson}}hostname{{/tojson}} } }] } } } } 
    } 
} 

하지만 큰 따옴표없이 구문 오류가 발생했습니다.

나는 github에서이 문제를 보았습니다. https://github.com/elastic/elasticsearch/issues/21648

이 예제의 예제와 같이 템플릿을 변경했지만 구문 오류가 없습니다. 그러나 나는 결과를 얻을 수 없다. 호출이되면 내가 런타임 오류가 발생했습니다,

POST _scripts/test-json 
{ 
    "script": { 
    "lang": "mustache", 
    "source": {"query": {"filter": {"bool": {"must": [{"terms": {"beat.hostname": ["{{#tojson}}hostname{{/tojson}}}}"] } }] } } } } 
    } 
} 

:

POST _scripts/test-json 
{ 
    "script": { 
    "lang": "mustache", 
    "source": {"query": {"filter": {"bool": {"must": [{"terms": {"beat.hostname": ["{{hostname}}"] } }] } } } } 
    } 
} 

그리고 나는 템플릿을 변경했습니다.

{ 
    "type": "json_parse_exception", 
    "reason": "Unexpected character ('h' (code 104)): was expecting comma to separate Array entries\n at [Source: org.elasticsear[email protected]396f6738; line: 1, column: 190]" 
    } 

사전 등록 된 검색 템플릿의 용어에 대한 매개 변수를 어떻게 보낼 수 있습니까?

감사합니다.

답변

0

이 문제는 해결되었습니다. 키는 script.source가 쿼리 JSON을 포함하는 문자열이 될 수 있습니다.

POST _scripts/test-json 
{ 
    "script": { 
    "lang": "mustache", 
    "source": "{\"size\": 0, \"query\": {\"bool\": {\"must\": [{\"terms\": {\"beat.hostname\": {{#tojson}}hostname{{/tojson}} } } ] }}}" 
    } 
} 

이 스크립트는 성공 적으로 저장 될 수 있습니다. 그리고 다음과 같이 호출 :

GET _search/template 
{ 
    "id": "test-json", 
    "params": { 
    "hostname": ["host-1", "host-2"] 
    } 
} 

하드

:-) 해결책을 찾기 위해