반응형
elasticsearch 일치 대 용어 쿼리
"request.method": "GET"에 대한 일치 쿼리 검색을 사용합니다.
{
"query": {
"filtered": {
"query": {
"match": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
예상대로 일치 쿼리는 아래와 같이 결과를 얻을 수 있습니다.
그러나 문제는 용어 쿼리를 사용할 때 결과가 없다는 것입니다.
"일치"를 "용어"로 변경하고 다른 부분은 동일하게 유지하도록 쿼리를 업데이트하십시오.
{
"query": {
"filtered": {
"query": {
"term": {
"request.method": "GET"
}
},
"filter": {
"bool": {
"must": [
...
용어 쿼리는 일치 쿼리의 "분석되지 않은"버전이라고 생각합니다. 위 그림과 같이 "GET"과 같은 "request.method"가있는 레코드가 하나 이상 있습니다. 위에서 언급 한 용어 쿼리에 대한 결과가없는 이유는 무엇입니까? 감사합니다.
표준 분석기를 사용한다고 가정하면 인덱스에 저장 GET
될 get
때가됩니다. 원본 문서에는 여전히 원본 "GET"이 있습니다.
match
쿼리는 검색 용어에 동일한 표준 분석기를 적용하기 때문에 인덱스에 저장된 일치합니다. term
쿼리는 검색 용어에 어떤 분석기을 적용하지 않습니다 그래서 단지 역 색인에서 그 정확한 용어를 찾습니다.
예제에서 검색어라는 용어를 사용하려면 대문자 "GET"을 소문자 "get"으로 변경하거나 request.method 필드가로 설정되도록 매핑을 변경합니다 not_analyzed
.
참고 URL : https://stackoverflow.com/questions/23150670/elasticsearch-match-vs-term-query
반응형
'Program Tip' 카테고리의 다른 글
조건 대 대기 알림 메커니즘 (0) | 2020.11.18 |
---|---|
C ++ Lambda : "변경 가능"과 참조에 의한 캡처의 차이점 (0) | 2020.11.18 |
파이썬에 첫 번째 (반복 가능한) 내장 함수가없는 이유는 무엇입니까? (0) | 2020.11.18 |
승인되지 않음 또는 인증되지 않음에 대해 던질 수있는 .NET 예외 (0) | 2020.11.18 |
Git의 파일을 이전 하위 모듈의 경로에 어떻게 추가합니까? (0) | 2020.11.18 |