Elasticsearch 匹配的结果排在最前面,排在后面
Elasticsearch matched results on top and remaining after them
我正在我的应用程序中使用 elasticsearch
,我是 Elasticsearch 的新手。
我有一个名为 files
的索引,其中有一些 tags
与之关联。我想使用 tags
查询它们。可能是这样的
{
"query": {
"terms": {
"tags": [
"xxx",
"yyy"
]
}
},
"sort": [
{
"created_at": {
"order": "desc"
}
}
]
}
以上查询结果仅为符合条件的。但我需要所有匹配结果的结果。还有 sort
created_at
。怎么做?
我试过这个:
{
"query": {
"bool": {
"should": [
{
"terms": {
"name": [
"cool",
"co"
]
}
}
],
"minimum_should_match": 0
}
},
"sort": [
{
"_score": {
"order": "desc"
}
},
{
"created_at": {
"order": "desc"
}
}
]
}
但结果总是零。
您可以使用 should
的 bool 查询。
既然你想要所有的文档,你可以使用一个match_all
。 should
只影响评分,不影响是否包含文档。
{
"query": {
"bool": {
"must" :
{
"match_all": { }
}
},
"should": [
{ "terms" : {
"tags": [
"xxx",
"yyy"
]
} }]
},
"sort": [
{ "_score":
{ "order": "desc"
}
},
{ "created_at":
{ "order": "desc"
}
}
]
}
另外,sort 可以接受一个数组,这样你就可以传入多个参数来对结果进行排序。
我正在我的应用程序中使用 elasticsearch
,我是 Elasticsearch 的新手。
我有一个名为 files
的索引,其中有一些 tags
与之关联。我想使用 tags
查询它们。可能是这样的
{
"query": {
"terms": {
"tags": [
"xxx",
"yyy"
]
}
},
"sort": [
{
"created_at": {
"order": "desc"
}
}
]
}
以上查询结果仅为符合条件的。但我需要所有匹配结果的结果。还有 sort
created_at
。怎么做?
我试过这个:
{
"query": {
"bool": {
"should": [
{
"terms": {
"name": [
"cool",
"co"
]
}
}
],
"minimum_should_match": 0
}
},
"sort": [
{
"_score": {
"order": "desc"
}
},
{
"created_at": {
"order": "desc"
}
}
]
}
但结果总是零。
您可以使用 should
的 bool 查询。
既然你想要所有的文档,你可以使用一个match_all
。 should
只影响评分,不影响是否包含文档。
{
"query": {
"bool": {
"must" :
{
"match_all": { }
}
},
"should": [
{ "terms" : {
"tags": [
"xxx",
"yyy"
]
} }]
},
"sort": [
{ "_score":
{ "order": "desc"
}
},
{ "created_at":
{ "order": "desc"
}
}
]
}
另外,sort 可以接受一个数组,这样你就可以传入多个参数来对结果进行排序。