org.elasticsearch.action.search.SearchPhaseExecutionException

环境

elasticsearch:1.2.7
java:.7

前言

纯属做笔记

场景

需求:有新闻库、公告库、研报库、都是es库;需要同时查着三张表,并排好序;
在执行时,报错了;以下是我打日志的查询条件:

(((create_date:[2004-12-31T16:00:00.000Z TO *] AND 
((_exists_:pro_org AND _exists_:pro_type AND pro_org:<=2 AND pro_type:<=1)) AND
 _exists_:report_title AND organ_id:>0) OR _missing_:report_title) AND 
sort=@timestamp desc ignoreUnmapped false;, 
fields=[title, guid, text_id, organ_name, sitename, source, report_title, @timestamp, create_date, code, code_name, format], page=120, rows=20}

执行后报错:

org.elasticsearch.action.search.SearchPhaseExecutionException: 
Failed to execute phase [query], all shards failed; 
shardFailures {[zBvIhCckQK2guKPm4IlRUg][reports_v2][1]: 
SearchParseException[[reports_v2][1]: 
query[+((+create_date:[1104508800000 TO *] +(+ConstantScore(cache(BooleanFilter(_field_names:pro_org))) +ConstantScore(cache(BooleanFilter(_field_names:pro_type))) +pro_org:[* TO 2] +pro_type:[* TO 1]) +ConstantScore(cache(BooleanFilter(_field_names:report_title))) +organ_id:{0 TO *]) ConstantScore(cache(NotFilter(cache(BooleanFilter(_field_names:report_title)))))) +((code:00700) (code:00042) (code:600898) (code:603128) (code:000002) (code:600519) (code:600809) (code:601088) (code:600887) (code:002507) (code:600066) (code:600059) (code:000895) (code:300003) (code:300068) (code:002372) (code:600588) (code:601012) (code:600298) (code:600104) (code:00042) (code:300351) (code:002081) (code:002047) (code:000656) (code:000573) (code:600512) (code:601908) (code:600149) (code:000918) (code:000738) (code:600919) (code:600936))],from[2380],size[20]: 
Parse Failure [Failed to parse source [{\"from\":2380,\"size\":20,\"query\":{\"query_string\":{\"query\":\"(((create_date:[2004-12-31T16:00:00.000Z TO *] AND ((_exists_:pro_org AND _exists_:pro_type AND pro_org:<=2 AND pro_type:<=1)) AND _exists_:report_title AND organ_id:>0) OR _missing_:report_title) AND code:(\\\"00700\\\" \\\"00042\\\" \\\"600898\\\" \\\"603128\\\" \\\"000002\\\" \\\"600519\\\" \\\"600809\\\" \\\"601088\\\" \\\"600887\\\" \\\"002507\\\" \\\"600066\\\" \\\"600059\\\" \\\"000895\\\" \\\"300003\\\" \\\"300068\\\" \\\"002372\\\" \\\"600588\\\" \\\"601012\\\" \\\"600298\\\" \\\"600104\\\" \\\"00042\\\" \\\"300351\\\" \\\"002081\\\" \\\"002047\\\" \\\"000656\\\" \\\"000573\\\" \\\"600512\\\" \\\"601908\\\" \\\"600149\\\" \\\"000918\\\" \\\"000738\\\" \\\"600919\\\" \\\"600936\\\" ))\"}},\"_source\":{\"includes\":[\"title\",\"guid\",\"text_id\",\"organ_name\",\"sitename\",\"source\",\"report_title\",\"@timestamp\",\"create_date\",\"code\",\"code_name\",\"format\"],\"excludes\":[]},\"sort\":[{\"@timestamp\":{\"order\":\"desc\",\"ignore_unmapped\":false}}]}]]]; nested: SearchParseException[[reports_v2][1]: query[+((+create_d
...

原因

我查询中按照timetamp字段排序,但是研报库中没有这个字段,所以报错!
也就是说,要三表联合查询时,排序的字段必须每个库都要有,否则就会出错。

你可能感兴趣的:(Java,elasticsearch)