我希望建立一个价格比较网站并使用弹性搜索来帮助我这样做。我们将从不同供应商处比较的产品将有不同的产品名称,品牌名称等。我想知道的是,我能够使用弹性匹配2个基于产品标题的特定部分相同的产品搜索。这4个产品标题就是一个例子:
1)Apple Iphone 7黑色64GB 2)哑光黑色Iphone手机壳 3)64GB黑色I-phone 4)Apple Iphone充电器
如果我们网站上的用户点击Apple Iphone 7 Black产品 - >然后,我将查询Elastic Search以查找所有Apple Iphone 7 Black产品,并将它们及其数据返回到站点。但我只想要产品1& 3将被退回。
这是否适用于弹性搜索?如果是这样,任何人都可以向我展示JSON需要为此类或查询发送的大致轮廓吗?
由于
答案 0 :(得分:0)
非常好的项目。我认为您需要与大多数字段匹配的类似产品,或者您可以查询短语匹配查询并返回类似产品。这是您找到类似产品的代码
{
"query": {
"more_like_this" : {
"ids" : ["12345"],
"fields" : ["field_1", "field_2"],
"min_term_freq" : 1,
"max_query_terms" : 12
}
}
}
词组匹配查询
{
"query": {
"bool": {
"should": [
{"multi_match": {
"fields" : ["field_1", "field_2"],
"query": "Apple Iphone 7 Black 64GB",
"type": "phrase"
}}
],
"must_not": [
{
"ids": {
"values": ["12345"]
}
}
]
}
}
}
如果您需要模糊匹配,请替换
"type": "phrase"
到
"fuzziness" : "AUTO"