하는 방법을 query_string 검색을 정확한 구문에서

나는 2 개의 문서에서:

curl -XPUT "http://localhost:9200/vehicles/vehicle/1" -d'
{
    "model": "Classe A"
}'

curl -XPUT "http://localhost:9200/vehicles/vehicle/2" -d'
{
    "model": "Classe B"
}'

왜 이 쿼리를 반환합니다 2documents:

curl -XPOST "http://localhost:9200/vehicles/_search" -d'
{
  "query": {
    "query_string": {
      "query": "model:\"Classe A\""
    }
  }
}'

와 이 중 하나,단지 두 번째 문서

curl -XPOST "http://localhost:9200/vehicles/_search" -d'
{
  "query": {
    "query_string": {
      "query": "model:\"Classe B\""
    }
  }
}'

내가 원하는 탄력 있는 검색에 맞에 정확한 구문을 통과하는 쿼리를 매개 변수와 공백,렇게 하려면 어떻게 해야 합니까?

해결책

당신이 볼 필요가 있는해석기당신이'다시 사용합니다. 지 않는 경우't 중 하나를 지정동 방법을 사용하는 것표준 해석기. 그것은 훌륭한 대부분의 경우 일반 텍스트 입력,그러나지 않는't 작업에 대한 사용이 경우에 당신이 언급한다.

표준 해석기 할 것입니다 분할 단어에서 당신의 문자열로 변환들을 소문자입니다.

하려는 경우 경기체 문자열"Classe A"그리고 구분이"세 B"사용할 수 있습니다키워드 분석기. 이 전체 필드 중 하나로 문자열입니다.

다음을 사용할 수 있는 경기를 쿼리하는 것이 결과를 반환할 수 있습니다.

매핑을 만듭:

PUT vehicles
{
  "mappings": {
    "vehicle": {
      "properties": {
        "model": {
          "type": "string",
          "analyzer": "keyword"
        }
      }
    }
  }
}

쿼리를 수행:

POST vehicles/_search
{
  "query": {
    "match": {
      "model": "Classe A"
    }
  }
}

당신이 사용하고 싶었query_string쿼리할 수 있는 다음 설정하자그리고

POST vehicles/vehicle/_search
{
  "query": {
    "query_string": {
      "query": "Classe B",
      "default_operator": "AND"
    }
  }
}
해설 (0)

또한,당신은 당신을 사용할 수 있습 query_string 고 탈출하는 따옴표한 정확한 문구:

POST _search
{
    "query": {
      "query_string": {
        "query": "\"Classe A\""
     }
}
해설 (0)

용과 일치 문구를 아래와 같이 언급 쿼리

GET /company/employee/_search   
{     
    "query" : {      
        "match_phrase" : {      
            "about" : "rock climbing"      
        }      
    }      
}
해설 (3)