ElasticSearch를 처음 접했고 조건부 쿼리/필터를 구성 할 수있는 방법이 있는지 궁금합니다. 나는 레일스와 함께 일하고 있는데, 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 가지 부울 속성 (남성/여성)에서 유지됩니다. 두 개의 유사한 필터를 준비하는 것만 큼 간단 할 것입니다. 그러나 쿼리에 적용되는 조건부 필터가 몇 개 더 있으며, 결국에는 미리 준비된 필터가 10 개 이상 있습니다. 더 우아한 방법이 있어야합니다! 고맙습니다!
이것은 실제로 흥미로운 것 같습니다. 어제 JBuilder를 레일즈에 설치하기 시작했고, 다소 시간이 걸리기 때문에 나이가 들었습니다. 그래서 나는 당분간 그것을 지키고 앞으로 템플릿을 계속 탐색 할 것입니다. 다른 누군가는 이것을 읽을 수도 있습니다. 복잡해 짐 JBuilder가 반드시 즐거운 도구 일 필요는 없습니다! –