반응형
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 |