2012-12-02 30 views
0

我集成MongoDB的具有彈性的搜索的MongoDB + elasticsearch +階提升

我已經從使用下面的命令終端數據庫「testmongo」索引集「人」:

curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d '{ 
    "type": "mongodb", 
    "mongodb": { 
        "db": "testmongo", 
        "collection": "person" 
    }, 
    "index": { 
        "name": "mongoindex", 
        "type": "person" 
    } 
}' 

,並添加通過蒙戈終端的一些數據到mongodb的:

use testmongo 
var p = {firstName: "John", lastName: "Doe"} 
db.person.save(p) 

使用此命令來搜索數據:

curl -XGET 'http://localhost:9200/mongoindex/_search?q=firstName:John' 

直到這裏的一切完美的作品

我的問題是這樣的:

如何,我要創建客戶端節點查詢 我有下面的代碼不起作用:

package code 
    package snippet 

    import net.liftweb._ 
    import http._ 
    import common._ 
    import util.Helpers._ 
    import scala.xml._ 
    import org.elasticsearch.node.NodeBuilder._ 
    import org.elasticsearch.index.query.QueryBuilders._ 
    import collection.JavaConversions._ 


    class SearchTerms extends StatefulSnippet with Loggable{ 


     private var term = "" 

     def dispatch = { 
     case "render" => render _ 
     } 

     def render(xhtml: NodeSeq): NodeSeq = { 

     def doSearchTerm { 

      val node = nodeBuilder().client(true).node() 
      val client = node.client() 

      val query = queryString(term) 
      val response = client 
      .prepareSearch("A") 
      .setTypes("B") 
      .setQuery(query) 
      .execute() 
      .actionGet() 

      val hits = response.getHits 

      logger.info("Found %d hits for query '%s'".format(hits.getTotalHits, term)) 

      hits.getHits.foreach(hit => 
      logger.info("* %s".format(hit.sourceAsMap()("text"))) 
     ) 

      client.close() 
      node.close() 
     } 

我必須在A和B中使用什麼值才能在scala lift中使用搜索功能

can som EONE請幫我

非常感謝你的關注

回答

0

我想,它是:

  • mongoindex作爲索引名
  • 人類型名稱

所以,東西如:

 val response = client 
     .prepareSearch("mongoindex") 
     .setTypes("person") 
     .setQuery(query) 
     .execute() 
     .actionGet() 

它有幫助嗎?

順便說一句,術語應該包含像「名字:約翰」