【发布时间】:2021-05-06 14:59:01
【问题描述】:
我有一个实例,其中存储了具有各种属性的文章。但可能有些项目根本没有属性。有无数的属性和赋值,都是随机顺序的。
现在的问题是,不幸的是它并没有按照我想要的方式工作。属性受到尊重,但属性的顺序似乎很重要。但也可能是实例中的条目中有很多属性,在搜索查询中只查询到了 1-2 个,并且这些值可能会有细微的偏差。
目标是找到尽可能相似的条目,无论属性的顺序如何。
谁能帮我解决这个问题?
弹性实例信息:
"_index" : "articles",
"_type" : "_doc",
"_id" : "fYjaQXkBBdCju4scstN_",
"_score" : 1.0,
"_source" : {
"position" : "400.000",
"beschreibung" : "asc",
"menge" : 24.0,
"einheit" : "St",
"properties" : [
{
"desc" : "Farbe",
"val" : "rot"
},
{
"desc" : "Material",
"val" : "Holz"
},
{
"desc" : "Länge",
"val" : "20 cm"
},
{
"desc" : "Breite",
"val" : "100 km"
}
]
}
}
我当前查询的嵌套部分:
[nested] => Array
(
[path] => properties
[query] => Array
(
[0] => Array
(
[0] => Array
(
[bool] => Array
(
[should] => Array
(
[0] => Array
(
[match] => Array
(
[properties.desc] => Farbe
)
)
[1] => Array
(
[match] => Array
(
[properties.val] => rot
)
)
)
)
)
)
[1] => Array
(
[0] => Array
(
[bool] => Array
(
[should] => Array
(
[0] => Array
(
[match] => Array
(
[properties.desc] => Länge
)
)
[1] => Array
(
[match] => Array
(
[properties.val] => 22 cm
)
)
)
)
)
)
[2] => Array
(
[0] => Array
(
[bool] => Array
(
[should] => Array
(
[0] => Array
(
[match] => Array
(
[properties.desc] => Material
)
)
[1] => Array
(
[match] => Array
(
[properties.val] => Holz
)
)
)
)
)
)
)
)
【问题讨论】:
-
您对“属性”使用哪种字段类型?
-
“属性”字段的类型为“嵌套”
-
我不明白的是,为什么如果我更改查询以不搜索“Länge”“22 cm”但搜索“Länge”“20 cm”,即精确搜索条目中也包含的值。因此,如果我精确搜索一个属性及其值(也包含在条目中),或者我稍微更改搜索属性的值,那么分数值没有区别。分数结果保持不变。
-
在我看来,您发布的查询很难阅读,也许您可以编辑问题并以 JSON 格式发布。这让其他人更容易重现你的错误:)
标签: elasticsearch nested