在 ElasticSearch DSL 中对不同文档进行排序
Sort Different Documents in ElasticSearch DSL
我在 ElasticSearch 中索引了三种类型的文档:Car
、Bike
和 Truck
。我已经编写了一个查询来检索所有符合特定条件的文档,但我还想使用 Car
的 属性 对检索 Car
的顺序进行排序在 Bike
和 Truck
中有和没有找到。
到目前为止,这是我所拥有的:
{
"query": {
"bool": {
"must": [{
"match": {
"is_registered": true
}
}]
}
},
"sort": [{
"ac_type": {
"order": "desc"
}
}]
}
但是我在没有 属性 ac_type
的 Bikes
上收到错误。
"type": "query_shard_exception",
"reason": "No mapping found for [bike.ac_type] in order to sort on",
如何检索所有三种文档类型,但仅根据出现在单个文档中的字段进行排序?
汽车索引映射:
{
"car": {
"aliases": {},
"mappings": {
"event": {
"properties": {
"ac_type": {
"type": "long"
}
}
}
},
"settings": {
"index": {
"creation_date": "1549617583913",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "cuwdmQbBTLeaSpkvzW4kPw",
"version": {
"created": "6030299"
},
"provided_name": "car"
}
}
}
}
您可以做的一件事是在所有文档中添加 'ac_type' 参数。对于汽车,您可以为此参数添加值,而对于其他汽车,则不要添加任何值。这个值你可以对有数据的文档进行排序,对于其他的,没关系。
我在 ElasticSearch 中索引了三种类型的文档:Car
、Bike
和 Truck
。我已经编写了一个查询来检索所有符合特定条件的文档,但我还想使用 Car
的 属性 对检索 Car
的顺序进行排序在 Bike
和 Truck
中有和没有找到。
到目前为止,这是我所拥有的:
{
"query": {
"bool": {
"must": [{
"match": {
"is_registered": true
}
}]
}
},
"sort": [{
"ac_type": {
"order": "desc"
}
}]
}
但是我在没有 属性 ac_type
的 Bikes
上收到错误。
"type": "query_shard_exception",
"reason": "No mapping found for [bike.ac_type] in order to sort on",
如何检索所有三种文档类型,但仅根据出现在单个文档中的字段进行排序?
汽车索引映射:
{
"car": {
"aliases": {},
"mappings": {
"event": {
"properties": {
"ac_type": {
"type": "long"
}
}
}
},
"settings": {
"index": {
"creation_date": "1549617583913",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "cuwdmQbBTLeaSpkvzW4kPw",
"version": {
"created": "6030299"
},
"provided_name": "car"
}
}
}
}
您可以做的一件事是在所有文档中添加 'ac_type' 参数。对于汽车,您可以为此参数添加值,而对于其他汽车,则不要添加任何值。这个值你可以对有数据的文档进行排序,对于其他的,没关系。