현재 solr 기반 응용 프로그램을 elasticsearch로 마이그레이션하려고합니다.
이 lucene 쿼리가 있습니다
((
name:(+foo +bar)
OR info:(+foo +bar)
)) AND state:(1) AND (has_image:(0) OR has_image:(1)^100)
내가 이해하는 한 이것은 부울 OR과 결합 된 MUST 절의 조합입니다.
"(이름에 foo AND bar) 또는 (info에 foo AND bar)를 포함하는 모든 문서를 가져 오십시오. 그 후 조건 state = 1로 결과를 필터링하고 이미지가있는 문서를 강화하십시오."
MUST와 함께 부울 쿼리를 사용하려고했지만 부울 OR을 must 절에 가져 오는 데 실패했습니다. 여기 내가 가진 것입니다 :
GET /test/object/_search
{
"from": 0,
"size": 20,
"sort": {
"_score": "desc"
},
"query": {
"bool": {
"must": [
{
"match": {
"name": "foo"
}
},
{
"match": {
"name": "bar"
}
}
],
"must_not": [],
"should": [
{
"match": {
"has_image": {
"query": 1,
"boost": 100
}
}
}
]
}
}
}
보시다시피 "info"에 대한 조건이 없어야합니다.
누구든지 해결책이 있습니까?
정말 고맙습니다.
** 업데이트 **
elasticsearch 쿼리를 업데이트하고 해당 기능 점수를 제거했습니다. 내 기본 문제는 여전히 존재합니다.