没有为[匹配]注册的查询

时间:2013-03-27 01:40:52

标签: elasticsearch

我正在研究ElasticSearch Server书中的一些示例,并尝试编写一个简单的匹配查询

{ 
  "query" : { 
    "match" : {
        "displayname" : "john smith"
    }
  }
}

这给了我错误:

{\"error\":\"SearchPhaseExecutionException[Failed to execute phase [query],      
....
SearchParseException[[scripts][4]: from[-1],size[-1]: Parse Failure [Failed to parse source 
....
QueryParsingException[[kb.cgi] No query registered for [match]]; }

我也试过

{ 
    "match" : {
    "displayname" : "john smith"
    }
}

根据http://www.elasticsearch.org/guide/reference/query-dsl/match-query/

上的示例 编辑:我认为我使用的远程服务器不是最新的0.20.5版本,因为使用“text”而不是“match”似乎允许查询工作

我在此处看到了类似的问题:http://elasticsearch-users.115913.n3.nabble.com/Character-escaping-td4025802.html

2 个答案:

答案 0 :(得分:4)

我使用的远程服务器似乎不是最新的0.20.5版本的ElasticSearch,因此不支持“匹配”查询 - 而是“text”,它可以工作

我在看到此处报告的类似问题后得出了这个结论:http://elasticsearch-users.115913.n3.nabble.com/Character-escaping-td4025802.html

答案 1 :(得分:0)

您的第一个查询看起来很好,但也许您在请求中使用的方式不正确。这是一个有效的完整示例:

curl -XDELETE localhost:9200/test-idx
curl -XPUT localhost:9200/test-idx -d '{
    "settings": {
        "index": {
            "number_of_shards": 1,
            "number_of_replicas": 0
        }
    },
    "mappings": {
        "doc": {
            "properties": {
                "name": {
                    "type": "string", "index": "analyzed"
                 }
            }
        }
    }
}
'
curl -XPUT localhost:9200/test-idx/doc/1 -d '{
    "name": "John Smith"
}'
curl -XPOST localhost:9200/test-idx/_refresh
echo
curl "localhost:9200/test-idx/_search?pretty=true" -d '{
    "query": {
        "match" : {
            "name" : "john smith"
        }
    }
}
'
echo