我在Android应用程序中使用弹性搜索。我在查询字符串中传递过滤器,如下所示:
URL/IndexName/TypeName/_search?sort=registry_date:desc&from=0&size=10&q=firstname:رشید
工作正常。但我想在firstname字段上应用前缀过滤器,以通过查询字符串实现以下内容:
{
"query": {
"bool": {
"must": [
{
"prefix": {
"firstname.keyword": "رشید"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [
{
"registry_date": {
"order": "desc"
}
}
],
"aggs": {}
}
任何帮助?
答案 0 :(得分:1)
我现在找不到我发现这个的地方,但对我来说(在Elasticsearch版本5.4上)的工作原理如下:
URL/IndexName/TypeName/_search?source=PLACE_JSON_HERE
其中PLACE_JSON_HERE
可以是您作为POST正文传递的整个JSON。
例如:
URL/IndexName/TypeName/_search?source={"query":{"match_all":{}}}
将返回所有文件。
在您的情况下,您甚至可以将PLACE_JSON_HERE
替换为:
{
"query": {
"bool": {
"must": [
{
"prefix": {
"firstname.keyword": "رشید"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 10,
"sort": [
{
"registry_date": {
"order": "desc"
}
}
],
"aggs": {}
}
但正如我所说,我现在无法在ES文档中找到它,所以我不知道它是否适用于所有版本。
在6.2.2版本上测试:
http://localhost:9200/_doc/_search?source={"query":{"match_all":{}}}&source_content_type=application/json
按预期工作。自ES 6以来source_content_type
需要source
。