2017-10-25 1 views
0

나는 Elasticsearch에서 검색을하고 있습니다. 여러 용어와 일치하는 단일 결과를 찾으려고합니다. 그것은 간단하게 보이지만 그것을 할 수있는 올바른 방법을 찾을 수 없습니다.정확한 복수어 검색

{ 
    "query": 
     "term": { 
      "name. keyword." 
       "value":"Will" 
      } 
     } 
    } 
} 

을 그리고 그것은 잘 작동 :

내가 다음 검색을 시작하고있어 하나의 단어로 검색하십시오.

내가 내 머리에 가장 적합한 다음과 같은 여러 가지를 시도 하나 개 이상의 단어로 검색하려면 :

{ 
    "query": 
     "term":[{{ 
      "name. keyword." 
       "value":"Will" 
      } 
     }, { 
      "lastname. keyword." 
       "value":"Smith" 
      } 
     }] 
    } 
} 

그러나 그것은 오류를 반환합니다. 가장 좋은 경우, 나는 모든 윌과 스미스의 뒤를 얻었습니다. 윌 스미스는 제가 찾고있는 사람입니다.하지만 나는 모든 것을 만난 사람들을 제거하고 싶습니다. 요구 사항.

{ 
    "dataset": { 
     "mappings": { 
      "data": { 
       "properties": { 
        "name": { 
         "type": "text", 
         "fields": { 
          "keyword": { 
           "type": "keyword", 
           "ignore_above": 256 
          } 
         } 
        }, 
        "lastname": { 
         "type": "text", 
         "fields": { 
          "keyword": { 
           "type": "keyword", 
           "ignore_above": 256 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

그것이 내가 할 노력하고있어 접근 가능 :

내 매핑은 다음과 같습니다?

+0

귀하의 작업 쿼리가 유효하지 않는 것 – Eli

답변

1

Bool Query보십시오 :

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "term": { 
      "name.keyword": "Will" 
      } 
     }, 
     { 
      "term": { 
      "lastname.keyword": "Smith" 
      } 
     } 
     ] 
    } 
    } 
} 
관련 문제