ElasticSearchの新機能で、条件付きクエリ/フィルタを作成する方法があるかどうかは疑問でした。私はRailsに取り組んでいるので、ESレベルで条件付きクエリを指すものを見つけることができなかったので、その特定のレベルになければならないと思います。だからここElasticSearch 5.x(elasticsearch-rails/elasticsearch-model)の条件付きクエリ
は、私が持っている(作業)クエリです:
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つの別々のブール属性(男性/女性)で保持されます。 2つの同様のフィルタを準備するだけでも簡単だと思っていましたが、クエリには条件フィルタがいくつか追加されていました。よりエレガントな方法が必要です!ありがとうございました!
これは本当に面白そうです。私は昨日、JBuilderをRailsでセットアップし始めました。それは幾分か機能するには年齢がかかりました - だから、当分の間はそれに固執して今後のテンプレートを探求してください:)誰かがこれを読んでいるかもしれません - 複雑になるJBuilderは必ずしも楽しいツールではありません! –