Elastic Search에서 NEST API를 사용하여 결과 세트를 도출하기 위해 여러 수준의 필터를 갖고 싶습니다. 다른 필터의 결과를 쿼리 할 수 있습니까 ...? 그렇다면 여러 수준에서 할 수 있습니까?
내 요구 사항은 사용자가 다양한 필드의 옵션을 선택 / 선택 취소 할 수있는 것과 같습니다.
예 : 내 색인 '사람'에 완전히 1000 개의 문서가 있습니다. 3 개의 ListBox, 1) City 2) 좋아하는 음식 3) 좋아하는 색상이있을 수 있습니다. 사용자가 도시를 선택하면 600 개의 문서가 필터링됩니다. 600 개의 문서 중 좋아하는 음식을 필터링하고 싶습니다. 300 개의 문서가 나올 수 있습니다. 이제는 resp로 필터링하고 싶습니다. 좋아하는 영화에 추가하여 이전에 파생 된 300 개 문서 중 50 개 문서를 검색합니다.
원하는 것을 얻기 위해 필터 내에서 쿼리 할 필요가 없습니다. 필터링 된 쿼리 ( http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-filtered-query.html)를 사용하고 여러 필터를 제공 하십시오 . 귀하의 인스턴스에서 첫 번째 쿼리에 대해 다음과 같이 할 것이라고 가정합니다.
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
}
]
}
}
}
그런 다음 그 결과를 반환하고 표시합니다. 그런 다음 다음 필터를 선택하도록하고 다음을 수행합니다.
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
},
{
"term" : {
"food" : "some food"
}
}
]
}
}
}
그런 다음 헹구고 3 개의 필터 매개 변수에 대해 반복합니다.
{
"filtered" : {
"query" : {
"match_all" : { }
},
"filter" : {
"and" : [
{
"term" : {
"city" : "some city"
}
},
{
"term" : {
"food" : "some food"
}
},
{
"term" : {
"colour" : "some colour"
}
}
]
}
}
}
나는 이것을 테스트하지 않았지만 원칙은 건전하며 작동합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다