MongoDBをElasticSearchと統合する
次のコマンドを使用して、ターミナルからデータベース「testmongo」のコレクション「person」にインデックスを付けました。
curl -XPUT 'http://localhost:9200/_river/mongodb/_meta' -d '{
"type": "mongodb",
"mongodb": {
"db": "testmongo",
"collection": "person"
},
"index": {
"name": "mongoindex",
"type": "person"
}
}'
そして、mongoターミナルを介して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()
}
Scalaリフトで検索機能を使用するためにAとBで使用する必要がある値は何ですか?
誰か助けてくれませんか
ご清聴ありがとうございました