elastic4s 布尔查询中的 elasticsearch "more like this"
elasticsearch "more like this" in elastic4s boolean query
我正在使用 elastic4s 1.5.10 并尝试构建我在 elasticarch REST 端点上准备的查询。现在正在尝试重写为 elastic4s dsl。
POST /index_name/type/_search
{
"_source":{"include":["name","surname"]},
"query": {
"bool": {
"must": [
{
"more_like_this": {
"fields": ["desc"],
"ids": ["472825948"],
"min_term_freq":0,
"max_query_terms":200
}
},
{
"match": {"city": "London"}
},
{
"match": {"operation": "add"}
}
]
}
}
}
此查询的目标是获取与 472825948 在同一城市(伦敦)具有相同操作(添加)的相似项目。
我在elastic4s中的尝试如下:
es_client.execute{
search in s"$storage_folder/${typ.name()}" query bool(
must(
morelike id adId in s"$storage_folder/${typ.name()}" fields("desc") minTermFreq(0) maxQueryTerms(200),
matchQuery(field="city",value = "London"),
matchQuery(field="operation",value = "add"))
)sourceInclude("name","surname")
}
}
"morelike" 在此上下文中不起作用。原始 json 中的查询没有意义,或者 elastic4s 不支持这个,或者 ...
有人可以帮忙吗?
感谢
为了完整起见,我也在这里添加了回复。
morelike
e 是请求类型,morelikeThisQuery
是查询的正确形式。所以结果查询应该如下所示
es_client.execute{
search in s"$storage_folder/${typ.name()}" query bool(
must(
morelikeThisQuery fields("desc") ids(adId) minTermFreq(0) maxQueryTerms(200),
matchQuery(field="city",value = "London"),
matchQuery(field="operation",value = "add"))
)sourceInclude("name","surname")
}
}
我正在使用 elastic4s 1.5.10 并尝试构建我在 elasticarch REST 端点上准备的查询。现在正在尝试重写为 elastic4s dsl。
POST /index_name/type/_search
{
"_source":{"include":["name","surname"]},
"query": {
"bool": {
"must": [
{
"more_like_this": {
"fields": ["desc"],
"ids": ["472825948"],
"min_term_freq":0,
"max_query_terms":200
}
},
{
"match": {"city": "London"}
},
{
"match": {"operation": "add"}
}
]
}
}
}
此查询的目标是获取与 472825948 在同一城市(伦敦)具有相同操作(添加)的相似项目。
我在elastic4s中的尝试如下:
es_client.execute{
search in s"$storage_folder/${typ.name()}" query bool(
must(
morelike id adId in s"$storage_folder/${typ.name()}" fields("desc") minTermFreq(0) maxQueryTerms(200),
matchQuery(field="city",value = "London"),
matchQuery(field="operation",value = "add"))
)sourceInclude("name","surname")
}
}
"morelike" 在此上下文中不起作用。原始 json 中的查询没有意义,或者 elastic4s 不支持这个,或者 ...
有人可以帮忙吗?
感谢
为了完整起见,我也在这里添加了回复。
morelike
e 是请求类型,morelikeThisQuery
是查询的正确形式。所以结果查询应该如下所示
es_client.execute{
search in s"$storage_folder/${typ.name()}" query bool(
must(
morelikeThisQuery fields("desc") ids(adId) minTermFreq(0) maxQueryTerms(200),
matchQuery(field="city",value = "London"),
matchQuery(field="operation",value = "add"))
)sourceInclude("name","surname")
}
}