작성
·
31
0
안녕하세요
search관한 질문으로서 질문을 해도 되는지 궁금하며 질문 내용은 아래와 같습니다
질문내용
조건 => (contents=장애인 or abstract=매매대금) and etype="민사 and (jdate>2023-01-01 and jdate<2025-03-01) 인경우 search구문은 아래와 같습니다
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"match": {
"contents": {
"query": "장애인"
}
}
},
{
"match": {
"abstract": {
"query": "매매대금",
"boost": 2
}
}
}
]
}
},
{
"term": {
"etype": {
"value": "행동"
}
}
},
{
"range": {
"jdate": {
"gt": "2023-01-01",
"lt": "2025-03-01"
}
}
}
]
}
}
1.1 조건 => (contents=장애인 or abstract=매매대금) and etype=민사 인경우으로서
jdate전체로 할경우 range부분을 삭제 시키면 가능하나 삭제를 안하고 gt와 lt 값을 어떻케 주면 되는지(즉 최대일과 최소일을 모른다는 가정하에서)
1.2 조건 => (contents=장애인 or abstract=매매대금) and (jdate>2023-01-01 and jdate<2025-03-01)
etype 예에서는 행동로 했는데 행동이 아닌 전체를 할경우 이것 또한 term부문을 삭제를 하면 되는데
삭제를 안할경우 value값을 무엇을 주어야 하는지요?
1.3 1.1 및 1.2 질문을 한이유는 search 문을 여러개 만들어서 조건에 맞는 것을 사용해야 하는데 한개의 search문에서 값만 변경해서 사용할려고 합니다
이게 가능한지 궁금 하네요
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. 모시개님.
ES에서 검색 쿼리를 작성하는 방법에 대해 아주 구체적으로 질문을 해주셨네요. 이와 관련하여 ElasticSearch의 range
쿼리와 term
쿼리에 대한 설명을 덧붙여 드립니다. 이론적으로는 하나의 검색 쿼리를 활용하여 다양한 조건에 맞게 사용할 수 있습니다.
날짜 범위를 최대한 넓게 설정하는 방법
jdate
필드를 특정 범위로 제한하지 않으면서 쿼리를 유지하고 싶다면, gt
와 lt
를 최대한 넓은 범위로 설정하면 됩니다. 예를 들어, jdate
의 시작일(gt
)을 가능한 가장 이른 날짜와 끝일(lt
)을 가능한 가장 늦은 날짜로 설정하면 됩니다. 예를 들어, "gt": "1900-01-01"
및 "lt": "2100-01-01"
과 같이 설정할 수 있습니다. 이 방법은 정확한 최소 및 최대 날짜를 모르는 경우 유용할 수 있습니다.
etype
조건을 없앨 때의 설정 방법
특정 필드의 조건을 없애고 싶을 때는 보편적인 값으로 설정할 수 있는데, 일반적으로 이 경우에는 필드에 맞는 모든 값을 포함할 수 있는 방법을 사용합니다. 하지만 기본적으로는 쿼리에서 해당 조건을 완전히 제거하거나 조건을 자유롭게 설정할 수 있는 패턴을 사용합니다. 이 경우 “match_all” 쿼리를 사용해서 조건이 상관없는 부분을 모두 포함하도록 설정해 줄 수 있습니다.
위의 내용을 자세히 다룬 관련 문서나 질문이 있는 링크를 첨부해 드립니다:
여기서 더 구체적인 쿼리 작성 방법을 설명드리고 있으며, 유사한 사례에 대한 해결책을 볼 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다
질문 이항에서 match_all : {}를 사용하라고 했는데
"match_all은 조건 아무것도 없이 해당 인덱스의 모든 데이터를 검색한다. "
라고 되어 있는데 저가 원하는 것은 모든데이터가 아니고 etype field의 검색조건을 달지 않겠다는 것 입니다
즉 빼는것과 동일한 효과 입니다.
즉 etype에 "행동"조건에 맞는것과 빼는 조건(검색어 없슴)과 두가지 경우수를 포함하는 것을 한개의 search문에서 프로그램할려는 것입니다
혹시나 Mustache로 해서 두가지 경우수를 만들수 있나요