繁体   English   中英

elasticsearch java搜索查询

[英]elasticsearch java search query

我正在进行一个ecomerce网站,对于我的初始页面,我将把十大产品完成。 所以我正在做的是一个匹配all的搜索查询,由finish_dat>过滤而不是+ 1h并将大小限制为10(我不知道这是否是最好的方法...)

这里的事情是我想用这个查询创建一个配置(为了将来改变,让我们说,改为top20,或者现在过滤+ 1d),所以我将查询字符串读取到xml文件然后使用esClient.prepareSearch("products").setTypes("product").setSearchType(SearchType.QUERY_AND_FETCH).setQuery(myQuery).execute().actionGet();

问题是我正在尝试使用curl中的body查询:

{  "sort" : [
        { "finish_date" : {"order" : "asc"}}     
    ],
     "query" : {"match_all" : {}},
      "filter": {
        "range": {
          "finish_date": {
            "from": "now+1h"
          }
        }
      }

而且是错误的

Root cause is: Failed to execute phase [query_fetch], all shards failed; shardFailures {[lWQlkEM_QQCJY0RzHBz_vw][auction][4]: RemoteTransportException[[MODAM][inet[/192.168.1.4:9301]][search/phase/query+fetch]]; nested: SearchParseException[[auction][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][3]: SearchParseException[[auction][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][1]: SearchParseException[[auction][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][2]: SearchParseException[[auction][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][0]: SearchParseException[[auction][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; } org.elasticsearch.action.search.SearchPhaseExecutionException: Failed to execute phase [query_fetch], all shards failed; shardFailures {[lWQlkEM_QQCJY0RzHBz_vw][auction][4]: RemoteTransportException[[MODAM][inet[/192.168.1.4:9301]][search/phase/query+fetch]]; nested: SearchParseException[[auction][4]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][3]: SearchParseException[[auction][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][1]: SearchParseException[[auction][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][2]: SearchParseException[[auction][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; }{[Ltw-Ez47SD6WkLgON6kvHQ][auction][0]: SearchParseException[[auction][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query_binary":"InNvcnQiIDogW3sgImZpbmlzaF9kYXRlIiA6IHsib3JkZXIiIDogImFzYyJ9fV0sInF1ZXJ5IiA6IHsibWF0Y2hfYWxsIiA6IHt9fSwiZmlsdGVyIjogeyJyYW5nZSI6IHsiZmluaXNoX2RhdGUiOiB7ImZyb20iOiAibm93KzFoIn19fSwgImZyb20iIDogMCwgInNpemUiIDogMTA="}]]]; nested: QueryParsingException[[auction] [_na] query malformed, must start with start_object]; } at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.onFirstPhaseResult(TransportSearchTypeAction.java:272) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$3.onFailure(TransportSearchTypeAction.java:224) at org.elasticsearch.search.action.SearchServiceTransportAction.sendExecuteFetch(SearchServiceTransportAction.java:307) at org.elasticsearch.action.search.type.TransportSearchQueryAndFetchAction$AsyncAction.sendExecuteFirstPhase(TransportSearchQueryAndFetchAction.java:71) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction.performFirstPhase(TransportSearchTypeAction.java:216) at org.elasticsearch.action.search.type.TransportSearchTypeAction$BaseAsyncAction$4.run(TransportSearchTypeAction.java:292) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 

有人知道怎么做吗? (一个例子或指向正确的方向)??

提前致谢

您需要使用模板查询,这是官方支持的执行所需操作的方式,它还支持将模板存储在文件系统上,但是作为小胡子模板而不是XML。

您可以在http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-template-query.html上阅读有关模板查询的更多信息。

您实际上不需要在项目中安装小胡子,但是如果您感兴趣,可以在http://mustache.github.io/上阅读更多相关信息。 他们甚至有Java版本, https://github.com/spullara/mustache.java

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM