ElasticSearch 的新手,我想知道是否有一种方法可以构建条件查询/过滤器。我正在使用 Rails,所以我想它必须在那个特定的级别上,因为我找不到任何指向 ES 级别的条件查询的东西,我很确定只是假设是愚蠢的!
所以这是我的(工作)查询:
search_definition = {
query: {
bool: {
must: [
{
more_like_this: {
fields: tag_types,
docs: [
{
_index: self.class.index_name,
_type: self.class.document_type,
_id: id
}
],
min_term_freq: 1
}
}
],
should: [
range: {
age: {
gte: min_age,
lte: max_age,
boost: 4.0
}
}
],
filter: {
bool: {
must: [
term: {
active: true
}
],
must: [
geo_distance: {
distance: xdistance,
unit: "km",
location: {
lat: xlat,
lon: xlng
},
boost: 5.0
}
]
}
}
}
},
size: how_many
}
它工作得很好。现在让我们假设我想应用额外的过滤器,在这个特定的示例中,我需要验证正在搜索的用户何时,另一端的用户实际上正在为正在搜索的人寻找一个性别的人。这保存在数据库中的 2 个单独的布尔属性中(男性/女性)。我认为准备两个类似的过滤器会很简单——但是,查询中还有一些条件过滤器,最终我会得到十多个预先准备好的过滤器。一定有更优雅的方式!谢谢!