Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;“订购”;弹性搜索_Python_Sorting_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Sqlite - Fatal编程技术网 elasticsearch,sqlite,Python,Sorting,elasticsearch,Sqlite" /> elasticsearch,sqlite,Python,Sorting,elasticsearch,Sqlite" />

Python &引用;“订购”;弹性搜索

Python &引用;“订购”;弹性搜索,python,sorting,elasticsearch,sqlite,Python,Sorting,elasticsearch,Sqlite,我正在将sqlite3中的数据库重新创建为elasticsearch中的数据库 在一个python脚本中,我有一行代码,按照类似的状态对sqlite3数据库进行排序 `rows = cur.execute("""SELECT * FROM {tn} ORDER BY (CASE state when 'CRITICAL' THEN 1 WHEN 'WARNING' then 2 WHEN 'UNKNOWN' THEN 3 ELSE 100 END) ASC;""".format(tn=table

我正在将sqlite3中的数据库重新创建为elasticsearch中的数据库

在一个python脚本中,我有一行代码,按照类似的状态对sqlite3数据库进行排序

`rows = cur.execute("""SELECT * FROM {tn} ORDER BY (CASE state when 'CRITICAL' THEN 1 WHEN 'WARNING' then 2 WHEN 'UNKNOWN' THEN 3 ELSE 100 END) ASC;""".format(tn=table_name))`
我想知道是否有办法,如果有,如何用elasticsearch python客户端复制这种“按案例排序”

使用elasticsearch_dsl搜索对象,到目前为止我有这个

    ##Query for ID ##
    s = Search( using=client, index="logstash-*", )\
    .query("match", host="{h}".format(h=host_name))

    ## Sort by State ##
    s = s.sort("state", {"order" : "CRITICAL", "WARNING", "UNKNOWN"})

谢谢

既然您正在重新创建数据,我建议您也借此机会对其进行一点改造。这将是最简单的选择。例如,将状态存储为数据中的整数,而不是字符串或字符串之外的整数。您可以有一个包含整数值的额外字段
state_num
,然后将“CRITICAL”映射为1,“WARNING”映射为2,等等。按此字段排序很容易:

"sort" : [
  { "state_num" : "asc" }
]
如果您不想重新构建数据,另一个选项是使用。例如:

"sort" : {
  "_script" : {
    "script" : "switch(doc['state'].value) { case 'CRITICAL': return 1; case 'WARNING': return 2; case 'UNKNOWN': return 3; default: return 100; }",
  "type" : "number",
  "order" : "asc"
  }
}

这很有帮助。非常感谢你!我最终只是实现了“state_num”,它在Kibana可视化过程中特别有用。非常感谢。