2014-11-06 41 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"} 
} 

我希望幫助。

相關問題