1
현재 부모님은이 문서와 관련된 탄성 검색 (문서) 및 하위 (의견)에 색인되어 있습니다. 첫 번째 목적은 하위 쿼리를 기반으로 N 개 이상의 의견이 포함 된 문서를 검색하는 것이 었습니다. 여기에 내가했던 방법입니다 ElasticSearch의 하위 빈도에 의한 필터
documents/document/_search
{
"min_score": 0,
"query": {
"has_child" : {
"type" : "comment",
"score_type" : "sum",
"boost": 1,
"query" : {
"range": {
"date": {
"lte": 20130204,
"gte": 20130201,
"boost": 1
}
}
}
}
}
}
내가 문서를 가지고 주석의 양을 계산하는 점수를 사용하고 내가 "min_score"을 사용하여,이 금액으로 문서를 필터링. 이제 내 목표는 설명뿐 아니라 문서와 관련된 여러 하위 문서를 항상 빈도를 기준으로 검색하는 것입니다. 쿼리와 비슷한 것 :
documents/document/_search
{
"query": {
"match_all": {
}
},
"filter" : {
"and" : [{
"query": {
"has_child" : {
"type" : "comment",
"query" : {
"range": {
"date": {
"lte": 20130204,
"gte": 20130201
}
}
}
}
}
},
{
"or" : [
{"query": {
"has_child" : {
"type" : "comment",
"query" : {
"match": {
"text": "Finally"
}
}
}
}
},
{ "query": {
"has_child" : {
"type" : "comment",
"query" : {
"match": {
"text": "several"
}
}
}
}
}
]
}
]
}
}
위의 쿼리는 정상적으로 작동하지만 처음에는 주파수에 기반하여 필터링하지 않습니다. 점수가 계산되기 전에 필터가 계산되므로 min_score를 사용하여 각 하위 쿼리를 필터링 할 수 없습니다.
이 문제를 해결할 수있는 방법은 있습니까?
하지만 bool 쿼리는 (조건 A AND (조건 B OR 조건 C)와 같은) 문장을 쓰지 못하게합니다. – mvallebr
여러 개의 중첩 bool 쿼리를 사용하면 확실합니다. 외부 조건에는 conditionB와 conditionC가있는 should 절만있는 두 개의 must 절인 conditionA와 추가 bool 쿼리가 있습니다. 말이된다? 그것은 다른 사고 방식 일 뿐이지 만 동일한 행동을 취할 수 있습니다. – javanna
사실 당신은 맞습니다, bool 쿼리는 논리를 할 수 있습니다 ... Mas 개별적으로 점수를 필터링하는 방법? – mvallebr