Coffeescript 如何在ElasticSearch中组合多个查询
以下代码仅供参考。我正在尝试制作一个hubot插件,该插件记录到elasticsearch,然后使用hubot命令搜索这些日志 我正在尝试检索与两个查询匹配的记录Coffeescript 如何在ElasticSearch中组合多个查询,coffeescript,
elasticsearch,hubot,Coffeescript,
elasticsearch,Hubot,以下代码仅供参考。我正在尝试制作一个hubot插件,该插件记录到elasticsearch,然后使用hubot命令搜索这些日志 我正在尝试检索与两个查询匹配的记录 { query: { match: { user: "SomeUsername" }, range: { date: { from: (Date.now() - 3600) }
{
query: {
match: {
user: "SomeUsername"
},
range: {
date: {
from: (Date.now() - 3600)
}
}
},
size: 50
}
我期待着:
- 最多50条记录
- 具有给定用户的记录
- 过去一小时的记录
- 最多10条记录
- 具有给定用户的记录
- 从任何时候起
Select (*) from messages where user_name = ? and time > ?
您需要使用将不同的查询组合在一起。然后,您可以选择每个查询是否必须匹配、是否应该匹配(可选)或是否必须不匹配。如果有人无意中发现了这个问题,并想知道在ElasticSearch中组合匹配和范围查询会是什么样子,那么这个示例应该是这样的
curl 'localhost:9200/<index>/_search?pretty=true' -d '{
"query" : {
"bool": {
"must": [
{
"match": {
"user": "SomeUsername"
}
},
{
"range" : {
"date": {
"gt": "now-1h"
}
}
}
]
}
}
}'
curl'localhost:9200/\u search?pretty=true'-d'{
“查询”:{
“布尔”:{
“必须”:[
{
“匹配”:{
“用户”:“SomeUsername”
}
},
{
“范围”:{
“日期”:{
“gt”:“现在-1h”
}
}
}
]
}
}
}'
查询是否按照指定的顺序运行?如中所示,范围查询将应用于第一个用户找到的用户?@EvaldasRaisutis我假设是这样的,基于API的选择,在“匹配”中使用列表,但我不确定。