我尝试使用ES的搜索模板来执行条件子句here。我正在将我的请求发送到/ [my_index]/_ search/template端点。由于JSON解析问题,请求失败,这很有意义,因为在添加条件子句之后,负载不再是有效的JSON。我应该如何使用搜索模板?是否有非JSON模板的指定端点?Elasticsearch搜索模板
0
A
回答
0
您需要在包装字符串中转义模板。
从你引用的同一链接:
正如上面写的,这个模板是不是有效的JSON,因为它包括 部分标记像{{#line_no}}。为此,模板 要么被存储在一个文件中(参见称为 节“预注册templateedit”)通过REST API一起使用时,或者,应该 写成一个字符串:
“模板“:{\”query \“:{\”filtered \“:{\”query \“:{\”match \“:{\”line \“:\”{{text}} \“}}” ,\ “过滤器\”:{{{#LINE_NO}} \ “范围\”:{\ “LINE_NO \”:{{{#开始}} \ “GTE \”:\ “{{开始}} \”{ {#END}},{{/结束}} {{/启动}} {{#结束}} \ “LTE \”:\ “{{端}} \”{{/结束}}}} {{/ “
2
当使用条件子句时,模板将不是有效的JSON,因为它将包含段标记{{#像这样}}。原因,模板应该存储在一个文件中,或者当通过REST API使用时,应该写成一个字符串。
方法1:存储在一个文件
保存模板的配置/脚本的查询部分
ES安装>配置>脚本
test_template tempalte。小胡子
{ "query":{ whatever query } }
您可以通过此方法通过使用感保存的模板
GET /_search/template { "template": "test_template", "params": { whatever params } }
方法2:模板作为字符串写入
模板转换为字符串形式和通过休息api使用
POST/_search/template/test_template { “template”:“{\”query \“:{whatever query;记得逃脱引号}} “ }
要搜索使用这个模板,
GET/_search /模板 { ”模板“:{ ”ID“: ”test_template“ }, ” PARAMS“:{ 任何PARAMS }}
相关问题
- 1. 搜索模糊查询 - Elasticsearch
- 2. ElasticSearch索引模板版本
- 3. Elasticsearch更新索引模板
- 4. id搜索elasticsearch
- 5. 搜索elasticsearch
- 6. Elasticsearch搜索词
- 7. ElasticSearch搜索
- 8. 如何获取Elasticsearch 5.x中的搜索模板列表?
- 9. 如何在elasticsearch中执行搜索模板查询?
- 10. 使用ElasticSearch模拟SQL LIKE搜索
- 11. 跨Elasticsearch群集更改索引模板
- 12. Logstash一直覆盖Elasticsearch索引模板
- 13. 用Golang搜索Elasticsearch
- 14. ElasticSearch搜索性能
- 15. ElasticSearch-Net NEST搜索
- 16. Elasticsearch搜索复数
- 17. 搜索,其中Elasticsearch
- 18. 在ElasticSearch中搜索
- 19. 在elasticsearch中搜索
- 20. Elasticsearch亲子搜索
- 21. ElasticSearch全文搜索
- 22. Elasticsearch多项搜索
- 23. Dwoo模板搜索路径
- 24. LDAP模板搜索属性
- 25. 终止模板搜索
- 26. 搜索在模板树
- 27. 弹性搜索索引模板创建
- 28. Elasticsearch动态模板
- 29. elasticsearch动态模板
- 30. Elasticsearch搜索像谷歌
您是否尝试将模板存储为'config/scripts'目录中的文件?参见[文档中的预先注册的模板](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-template.html#_pre_registered_template)。 – Thorsten 2014-10-28 19:11:56