org.elasticsearch.actions.search.search.Search PhuseExectionException

12421 ワード

環境
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フィールドで並べ替えられていますが、研報庫にはこのフィールドがないので、エラーが発生しました。つまり、3つのテーブルを共同で検索する場合、並べ替えられたフィールドはすべてのライブラリにある必要があります。さもなければ、エラーが発生します。