如何从 Elasticsearch 中的过滤器中获取所有文档?
How to get all documents from a filter in Elasticsearch?
如果我传递空参数(见下文),我想从 Elasticsearch 获取所有文档。我怎样才能做到这一点?
一个解决方案是我可以将所有现有类别写入一个数组。但是我有100多个类别,这不是一个好的解决方案。
有人可以帮助我吗?如果数组为空,是否可以忽略这些条款?
POST _scripts/test{"script": {
"lang": "mustache",
"source": {
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"terms": {
"category": [
"{{#category}}",
"{{.}}",
"{{/category}}"
]}}}}}}}
如果我执行以下查询,结果将为空:
GET poi/_search/template{
"id": "test",
"params": {
"category" : [""]
}}
实现此目标的最佳方法是使用 JSON array:
POST _scripts/test
{
"script": {
"lang": "mustache",
"source": """
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{{#category}}
{
"terms": {
"category": {{#toJson}}category.values{{/toJson}}
}
}
{{/category}}
]
}
}
}
"""
}
}
然后您可以像这样执行此搜索模板:
GET poi/_search/template
{
"id": "test",
"params": {
"category" : {
"values": ["cat1", "cat2", "cat3"]
}
}
}
如果你不想指定任何类别,像这样:
GET poi/_search/template
{
"id": "test",
"params": {
}
}
如果我传递空参数(见下文),我想从 Elasticsearch 获取所有文档。我怎样才能做到这一点?
一个解决方案是我可以将所有现有类别写入一个数组。但是我有100多个类别,这不是一个好的解决方案。
有人可以帮助我吗?如果数组为空,是否可以忽略这些条款?
POST _scripts/test{"script": {
"lang": "mustache",
"source": {
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"terms": {
"category": [
"{{#category}}",
"{{.}}",
"{{/category}}"
]}}}}}}}
如果我执行以下查询,结果将为空:
GET poi/_search/template{
"id": "test",
"params": {
"category" : [""]
}}
实现此目标的最佳方法是使用 JSON array:
POST _scripts/test
{
"script": {
"lang": "mustache",
"source": """
{
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": [
{{#category}}
{
"terms": {
"category": {{#toJson}}category.values{{/toJson}}
}
}
{{/category}}
]
}
}
}
"""
}
}
然后您可以像这样执行此搜索模板:
GET poi/_search/template
{
"id": "test",
"params": {
"category" : {
"values": ["cat1", "cat2", "cat3"]
}
}
}
如果你不想指定任何类别,像这样:
GET poi/_search/template
{
"id": "test",
"params": {
}
}