0

私はelasticsearch-river-couchdbとノードelasticsearchclientをインストールしました。現在、ノードelasticsearchclientを使用してcouchdbでデータを検索しています。私はこのようなJSON構造を持っています、

{   
    first_name: "aruna", 
    interests: [ {name: "pets", level: 5}, 
                 {topic: "es", degree: "strong"}
              ] ,
designation: "SE",
company: "DOM",
salary: 200000
}

ここで、クエリで指定した値を検索する必要があります。そのために、以下のコードを試しました。

var searchText = '*aru*'
testSearch = function() {
var qryObj = {
    "size" : 50,
            "query" : { 
           "wildcard" : { 
                "_all" :searchText
                }
             } 
     };
elasticSearchClient.search("test", "",qryObj, size)
    .on('data', function(data) {
        console.log("Search: "+data)
        assert.ok(JSON.parse(data), "testSearch failed.")
    })
    .exec()
}

searchText の値を aruna または SE または DOM または 200000 として指定すると、完全なドキュメントを取得できます。しかし、ペット、強い、5、または es を検索すると、ドキュメントが取得されませんでした。誰でもこれを解決するのを手伝ってください。

4

1 に答える 1

0

私はノードを使用していませんが、curl を使用してインデックスを作成したら:

curl -XPOST 'http://localhost:9200/test/contact/' -d '
{   
first_name: "aruna", 
interests: [ {name: "pets", level: 5}, 
             {topic: "es", degree: "strong"}
          ] ,
designation: "SE",
company: "DOM",
salary: 200000
}
'
{"ok":true,"_index":"test","_type":"contact","_id":"B1it8B1wTqGkx3qSQqSo1Q","_version":1}

query_string を使用して文字列ペットを検索できます。

curl -XGET http://localhost:9200/test/contact/_search -d '
{"query":{"bool":{"must":[{"query_string":    {"default_field":"_all","query":"pets"}}],"must_not":[],"should":      []}},"from":0,"size":50,"sort":[],"facets":{}}
'       

{"took":3,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":    {"total":1,"max_score":0.06780553,"hits":         [{"_index":"test","_type":"contact","_id":"B1it8B1wTqGkx3qSQqSo1Q","_score":0.06780553,   "_source" : 
{   
first_name: "aruna", 
interests: [ {name: "pets", level: 5}, 
             {topic: "es", degree: "strong"}
          ] ,
designation: "SE",
company: "DOM",
salary: 200000
}

注:フィールド内にハッシュを使用してインデックスを作成する場合、ネストされたインデックスと呼ばれ、ワイルドカードクエリがネストされたフィールドをクエリするかどうかはわかりません。ただし、クエリ文字列はそうです。また、19.4 では、特殊な構文を使用して query_string でネストされたフィールドをクエリできます。

http://www.elasticsearch.org/blog/2012/05/21/0.19.4-released.html

于 2012-06-22T22:16:02.150 に答える