关于弹性搜索的非常基本的问题,文档没有很清楚地回答(因为它们似乎涉及许多高级细节但却错过了基本细节!)。
示例:范围查询
http://www.elasticsearch.org/guide/reference/query-dsl/range-query.html
不知道如何通过搜索端点来表示范围?
如果是,那么如何通过查询字符串来完成?我的意思是,我想做一个GET,而不是一个POST(因为它是一个查询,而不是一个插入/修改)。但是,GET请求的文档没有说明如何在Range示例中使用JSON:
http://www.elasticsearch.org/guide/reference/api/search/uri-request.html
我错过了什么?
由于
答案 0 :(得分:14)
curl -X GET 'http://localhost:9200/my_index/_search?q=my_field:[0+TO+25]&pretty'
答案 1 :(得分:8)
我们假设我们有一个索引
curl -XPUT localhost:9200/test
和一些文件
curl -XPUT localhost:9200/test/range/1 -d '{"age": 9}'
curl -XPUT localhost:9200/test/range/2 -d '{"age": 12}'
curl -XPUT localhost:9200/test/range/3 -d '{"age": 16}'
现在我们可以通过
在一定范围内查询这些文档curl -XGET 'http://localhost:9200/test/range/_search?pretty=true' -d '
{
"query" : {
"range" : {
"age" : {
"from" : "10",
"to" : "20",
"include_lower" : true,
"include_upper": true
}
}
}
}
'
这将返回文件2和3。
我不确定是否有办法通过URI request执行这类复杂查询。
编辑:感谢karmi,这里是没有JSON请求的解决方案:
curl -XGET --globoff 'localhost:9200/test/range/_search?q=age:["10"+TO+"20"]&pretty=true'
答案 2 :(得分:0)
感谢@javanna回复自己:
在搜索文档的RequestBody部分:
http://www.elasticsearch.org/guide/reference/api/search/request-body.html
最后,它说:
搜索请求的其余部分应该在正文中传递。正文内容也可以作为名为 source 的REST参数传递。
所以我想我需要使用source
属性的搜索端点来传递json。