【发布时间】:2020-09-24 14:41:00
【问题描述】:
我在创建包含许多条件的 Elasticsearch 查询时遇到问题。我的模型看起来像:
data class Product(
@Id
val id: String? = null,
val category: String,
val imagesUrls: List<String>,
@Field(type = FieldType.Double)
val price: Double?,
@Field(type = FieldType.Nested)
val parameters: List<Parameter>?
)
data class Parameter(
val key: String,
val values: List<String>
)
我想通过以下方式查询产品:
- 类别(例如
cars) - 价格(在 20k $ 和 50k $ 之间)
- 和参数->例如具有许多参数的产品,例如键
capacity值4L,5L和第二参数齿轮传动值manual
我当前的查询如下所示:
GET data/_search
{
"size": 10,
"query": {
"bool": {
"must": [
{
"term": {
"category.keyword": {
"value": "cars"
}
}
},
{
"nested": {
"path": "parameters",
"query": {
"bool": {
"must": [
{"term": {
"parameters.key.keyword": {
"value": "Capacity"
}
}},
{
"term": {
"parameters.key": {
"value": "4L, 5L"
}
}
}
]
}
}
}
}
]
}
}
- 能否告诉我如何在参数键等于容量时过滤产品并检查值列表是否包含其中一个值?
- 如何在一个查询中组合多个此类操作?
示例数据:
{
"category":"cars",
"name":"Ferrari",
"price":50000,
"parameters":[
{
"key":"capacity",
"values":"4L"
},
{
"key":"gear transmission",
"values":"automcatic"
}
]
}
【问题讨论】:
-
你能分享一个示例 JSON 文档吗?
-
是的,当然。刚刚添加。
-
@Ice 你有机会看我的回答吗,期待得到你的反馈:)
-
@BhavyaGupta 我看到了你的答案,明天我会检查它,当然,我会添加反馈:)
-
@Ice 您的赏金将在 11 小时内到期,如果您能仔细阅读我的回答,那就太好了,如果它帮助您解决问题,请不要忘记投票并接受我的回答您的查询:)
标签: elasticsearch