2016-06-24 2 views
0

elasticsearch에서 검색하고 싶습니다. 나는 elasticsearch에 대한 나의 운전자로 mongoosastic을 사용하고 있습니다. 여기서 한 필드에 문자열이 있는지 여부를 검색하고 정확히 일치해야하는지 여부를 한 필드 더 검색하려고합니다. mongoosastic에서 어떻게 할 수 있습니까?elasticsearch에서 검색하는 방법

답변

1

탄성 검사의 특징은 bool query입니다.

나는 당신이 그 과정에서 갇혀 있는지 모른다. 그러나 나는 그 과정을 설명하려고 노력할 것이다.

모델을 Elasticsearch로 색인화하려면 플러그인을 추가하기 만하면됩니다.

var mongoose  = require('mongoose'), 
    mongoosastic = require('mongoosastic'), 
    Schema  = mongoose.Schema 

var User = new Schema({ 
    name: String, 
    country: String, 
    age: Number, 
    email: String, 
    city: String}) 

User.plugin(mongoosastic) 

그럼 당신은 모델에 ES 검색을 수행 할 수 있지만 먼저 당신은 당신의 쿼리를 포맷합니다. 의 당신이 런던에서 영국에서 살고있는 모든 사용자를 원하지만 가정 해 봅시다, 당신은 30 40 세 사이의 사용자에 맞게 싶습니다

var query = { 
    "bool" : { 
     "must" : { 
      "term" : { "country" : "england" } 
     }, 
     "must_not" : { 
      "city" : { "city" : "london" } 
     }, 
     "should" : { 
      "range" : { 
       "age" : { "from" : 30, "to" : 40} 
      } 
     } 
    } 
} 
당신의 관점에서 검색어와 일치하지 않는 사용자를 얻을 것이다

연령,하지만 ES는 점수 시스템을 사용하여 결과를 정렬합니다.

는 ES를 제공해드립니다 완료하고 결과를 처리하려면

User.search(query, function (err, users) { 
    if (err) { 
     //Handle error 
    } 

    var results = users.hits.hits; 

    //work with your hits 
}