ElasticSearch-如何进行查询以按值字段排序?

时间:2019-08-13 10:59:26

标签: python sorting elasticsearch

我需要知道要编写这样的请求-按字段值对记录进行排序。怎么做?

我有这个查询:

{
    "from": 0, 
    "size": 10, 
    "query": {
        "bool": {
            "must": {
                "match": {
                    "agency" 1064
                }
            }, 
            "must_not": {
                "match": {
                    "status": "archive"
                }
            }
        }
    }, 
    "sort": {
        "_script": {
            "type": "number",
            "script": {
                "lang": "painless",
                "source": "doc['status'].value == 'created'"
            },
        "order": "desc",
        }
    }, 
    "track_total_hits": true
}

我收到一条消息错误:'search_phase_execution_exception'

ScriptStack中的对象错误: 0:'doc [\'status \']。value == \'c ...' 1:'^ ----这里'

还从docker-compose记录日志:

关键所在-elasticsearch | “原因:java.lang.ClassCastException:无法从[boolean]转换为[double]。”,

elasticsearch | “ stacktrace”:[“ org.elasticsearch.script.ScriptException:编译错误”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine.convertToScriptException(PainlessScriptEngine.java:442)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine.compile(PainlessScriptEngine.java:362)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine.compile(PainlessScriptEngine.java:139)〜[?:?]”, elasticsearch | “在org.elasticsearch.script.ScriptService.compile(ScriptService.java:356)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.sort.ScriptSortBuilder.build(ScriptSortBuilder.java:365)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.sort.SortBuilder.buildSort(SortBuilder.java:153)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService.parseSource(SearchService.java:760)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService.createContext(SearchService.java:591)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:550)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:353)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService.lambda $ executeQueryPhase $ 1(SearchService.java:340)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.action.ActionListener.lambda $ map $ 2(ActionListener.java:145)〜[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.action.ActionListener $ 1.onResponse(ActionListener.java:62)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.search.SearchService $ 2.doRun(SearchService.java:1052)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:44)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.common.util.concurrent.ThreadContext $ ContextPreservingAbstractRunnable.doRun(ThreadContext.java:758)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)[elasticsearch-7.2.0.jar:7.2.0]”, elasticsearch | “在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)[?:?]”, elasticsearch | “在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:628)[?:?]”, elasticsearch | “在java.lang.Thread.run(Thread.java:835)[?:?]”, elasticsearch | “由于:java.lang.ClassCastException:无法从[boolean]转换为[double]。”, elasticsearch | “在org.elasticsearch.painless.PainlessScript $ Script.compile(doc ['status']。value =='created':1)〜[?:?]“, elasticsearch | “在org.elasticsearch.painless.AnalyzerCaster.getLegalCast(AnalyzerCaster.java:402)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.node.AExpression.cast(AExpression.java:121)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.node.SExpression.analyze(SExpression.java:64)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.node.SSource.analyze(SSource.java:222)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.node.SSource.analyze(SSource.java:182)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.Compiler.compile(Compiler.java:213)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine $ 2.run(PainlessScriptEngine.java:355)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine $ 2.run(PainlessScriptEngine.java:351)〜[?:?]”, elasticsearch | “在java.security.AccessController.doPrivileged(AccessController.java:389)〜[?:?]”, elasticsearch | “在org.elasticsearch.painless.PainlessScriptEngine.compile(PainlessScriptEngine.java:351)〜[?:?]”, elasticsearch | “ ...还有19个”]}

0 个答案:

没有答案