2014-11-06 31 views
1

在ElasticSearch中,我有自动生成_id字段的文档。我需要通过这个_id进行搜索。不幸的是,当_id作为第一个字符自动生成时,它不能被搜索。我应该在这个领域设置一个映射吗? (到目前为止我对这个整个指数无映射)Elasticsearch自动生成_id以连字符开头不可搜索

参见下面的例子中,我得到了通过让http://localhost:9200/cazv/issue/_search?pretty=true&q=*:*

..., { 
     "_index" : "cazv", 
     "_type" : "issue", 
     "_id" : "vvQWnjYqSU2GJ4hrRnOBXw", 
     "_score" : 1.0, 
     "_source":{"volumeId": "At8YmsUdRqmqX-OUJKvdcQ", 
"number": "No. 3"} 
    }, { 
     "_index" : "cazv", 
     "_type" : "issue", 
     "_id" : "-yTCu-HxSkOhwDOp4JVblg", 
     "_score" : 1.0, 
     "_source":{"volumeId": "Z97A5vG8TOSl7Bv0UlFGYg", 
"number": "No. 1"} 
    } 
, ... 

当我试图找到第一个问题,使用http://localhost:9200/cazv/issue/_search?pretty=true&q=_id:vvQWnjYqSU2GJ4hrRnOBXw

我没问题得到

{ 
    "took" : 137, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 1, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "cazv", 
     "_type" : "issue", 
     "_id" : "vvQWnjYqSU2GJ4hrRnOBXw", 
     "_score" : 1.0, 
     "_source":{"volumeId": "At8YmsUdRqmqX-OUJKvdcQ", 
"number": "No. 3"} 
    } ] 
    } 
} 

但是当我尝试通过获取http://localhost:9200/cazv/issue/_search?pretty=true&q=_id:-yTCu-HxSkOhwDOp4JVblg

拿到第二个问题

我得到一个错误,而不是:

{ 
    "error" : "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[NfwFTkfwTAuyO6QGG9hUUw][cazv][0]: SearchParseException[[cazv][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"query_string\":{\"query\":\"_id:-yTCu-HxSkOhwDOp4JVblg\",\"lowercase_expanded_terms\":true,\"analyze_wildcard\":false}}}]]]; nested: QueryParsingException[[cazv] Failed to parse query [_id:-yTCu-HxSkOhwDOp4JVblg]]; nested: ParseException[Cannot parse '_id:-yTCu-HxSkOhwDOp4JVblg': Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; nested: ParseException[Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; }{[NfwFTkfwTAuyO6QGG9hUUw][cazv][1]: SearchParseException[[cazv][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"query_string\":{\"query\":\"_id:-yTCu-HxSkOhwDOp4JVblg\",\"lowercase_expanded_terms\":true,\"analyze_wildcard\":false}}}]]]; nested: QueryParsingException[[cazv] Failed to parse query [_id:-yTCu-HxSkOhwDOp4JVblg]]; nested: ParseException[Cannot parse '_id:-yTCu-HxSkOhwDOp4JVblg': Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; nested: ParseException[Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; }{[NfwFTkfwTAuyO6QGG9hUUw][cazv][2]: SearchParseException[[cazv][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"query_string\":{\"query\":\"_id:-yTCu-HxSkOhwDOp4JVblg\",\"lowercase_expanded_terms\":true,\"analyze_wildcard\":false}}}]]]; nested: QueryParsingException[[cazv] Failed to parse query [_id:-yTCu-HxSkOhwDOp4JVblg]]; nested: ParseException[Cannot parse '_id:-yTCu-HxSkOhwDOp4JVblg': Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; nested: ParseException[Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; }{[NfwFTkfwTAuyO6QGG9hUUw][cazv][3]: SearchParseException[[cazv][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"query_string\":{\"query\":\"_id:-yTCu-HxSkOhwDOp4JVblg\",\"lowercase_expanded_terms\":true,\"analyze_wildcard\":false}}}]]]; nested: QueryParsingException[[cazv] Failed to parse query [_id:-yTCu-HxSkOhwDOp4JVblg]]; nested: ParseException[Cannot parse '_id:-yTCu-HxSkOhwDOp4JVblg': Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; nested: ParseException[Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; }{[NfwFTkfwTAuyO6QGG9hUUw][cazv][4]: SearchParseException[[cazv][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\"query\":{\"query_string\":{\"query\":\"_id:-yTCu-HxSkOhwDOp4JVblg\",\"lowercase_expanded_terms\":true,\"analyze_wildcard\":false}}}]]]; nested: QueryParsingException[[cazv] Failed to parse query [_id:-yTCu-HxSkOhwDOp4JVblg]]; nested: ParseException[Cannot parse '_id:-yTCu-HxSkOhwDOp4JVblg': Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; nested: ParseException[Encountered \" \"-\" \"- \"\" at line 1, column 4.\r\nWas expecting one of:\r\n <BAREOPER> ...\r\n \"(\" ...\r\n \"*\" ...\r\n <QUOTED> ...\r\n <TERM> ...\r\n <PREFIXTERM> ...\r\n <WILDTERM> ...\r\n <REGEXPTERM> ...\r\n \"[\" ...\r\n \"{\" ...\r\n <NUMBER> ...\r\n ]; }]", 
    "status" : 400 
} 
+0

通过查询报价解决: 'HTTP://本地主机: 9200/cazv/issue/_search?pretty = true&q = _id:“ - yTCu-HxSkOhwDOp4JVblg”' 也许编码双引号会更好,所以这个URL看起来像这样: 'http:// localhost:9200/cazv /问题/ _search漂亮=真&q = _id:%22 yTCu-HxSkOhwDOp4JVblg%22' – Beyboy 2014-11-25 09:59:15

回答

2

您正在使用查询解析器,它将-解释为NOT前缀运算符,我个人认为它是第二个 - 它让人困惑。你可能会想提出引号术语或只使用一个术语查询的id字段或只是把它的URL /index/type/id

西蒙

0

我也有类似的问题,所以我使用的映射来超越我productId使用_id。 你的情况设置_id到volumeId,但我不知道你的volumeId是否是唯一的。

映射:

{ 
"issue" : { 
    "_id" : { 
    "path" : "volumeId" 
    } 
} 

映射之后:

..., { 
    "_index" : "cazv", 
    "_type" : "issue", 
    "_id" : "At8YmsUdRqmqX-OUJKvdcQ", 
    "_score" : 1.0, 
    "_source":{"volumeId": "At8YmsUdRqmqX-OUJKvdcQ","number": "No. 3"} 
}, { 
    "_index" : "cazv", 
    "_type" : "issue", 
    "_id" : "Z97A5vG8TOSl7Bv0UlFGYg", 
    "_score" : 1.0, 
    "_source":{"volumeId": "Z97A5vG8TOSl7Bv0UlFGYg","number": "No. 1"} 
} 

我希望帮助。

相关问题