Filter query processor
출처: 문서
본문
필터 쿼리 프로세서
2.8에 도입됨 {: .label .label-purple }
filter_query 검색 요청 프로세서는 검색 요청을 가로채서 요청에 추가 쿼리를 적용하여 결과를 필터링해요. 기존 쿼리를 다시 작성하지 않고 결과에 추가 필터링이 필요할 때 유용해요.
요청 본문 필드
다음 표는 사용 가능한 모든 요청 필드를 보여줘요.
| 필드 | 데이터 타입 | 설명 |
|---|---|---|
query |
Object | 쿼리 도메인 특화 언어(DSL)로 작성된 쿼리예요. OpenSearch 쿼리 유형 목록은 Query DSL을 참조하세요. 필수 항목이에요. |
tag |
String | 프로세서의 식별자예요. 선택 사항이에요. |
description |
String | 프로세서에 대한 설명이에요. 선택 사항이에요. |
ignore_failure |
Boolean | true로 설정하면 OpenSearch가 이 프로세서의 실패를 무시하고 검색 파이프라인에서 나머지 프로세서를 계속 실행해요. 선택 사항이에요. 기본값은 false예요. |
예제
다음 예제는 filter_query 프로세서를 사용하는 검색 파이프라인을 보여줘요.
설정
my_index라는 인덱스를 만들고 공개 문서 하나와 비공개 문서 하나를 인덱싱해요.
POST /my_index/_doc/1
{
"message": "This is a public message",
"visibility":"public"
}
{% include copy-curl.html %}
POST /my_index/_doc/2
{
"message": "This is a private message",
"visibility": "private"
}
{% include copy-curl.html %}
검색 파이프라인 생성
다음 요청은 my_pipeline이라는 검색 파이프라인을 생성하며, filter_query 요청 프로세서가 term 쿼리를 사용하여 공개 메시지만 반환해요.
PUT /_search/pipeline/my_pipeline
{
"request_processors": [
{
"filter_query" : {
"tag" : "tag1",
"description" : "This processor is going to restrict to publicly visible documents",
"query" : {
"term": {
"visibility": "public"
}
}
}
}
]
}
{% include copy-curl.html %}
검색 파이프라인 사용
검색 파이프라인 없이 my_index에서 문서를 검색해요.
GET /my_index/_search
{% include copy-curl.html %}
응답에는 두 문서가 모두 포함돼요.
응답
{: .text-delta} ```json { "took" : 47, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 2, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : "my_index", "_id" : "1", "_score" : 1.0, "_source" : { "message" : "This is a public message", "visibility" : "public" } }, { "_index" : "my_index", "_id" : "2", "_score" : 1.0, "_source" : { "message" : "This is a private message", "visibility" : "private" } } ] } } ```파이프라인으로 검색하려면 search_pipeline 쿼리 매개변수에 파이프라인 이름을 지정해요.
GET /my_index/_search?search_pipeline=my_pipeline
{% include copy-curl.html %}
응답에는 public 가시성을 가진 문서만 포함돼요.