我想使用loId=6
AND (actionType = "SAVE_DATA"
OR 获取所有文档actionType = "OPEN_SCREEN")
。
我写错了这个逻辑吗?
为什么我的查询返回0个结果?
注意 :我可以接受查询或过滤器来解决此问题。
这些是一些示例文档:
{
"_index": "logs",
"_type": "record",
"_id": "eIIt3vtrSxmdOVGClQmN3w",
"_score": 1,
"_source": {
"timestamp": 1373569919000,
"uid": 6,
"paId": 56298,
"loId": 6,
"prId": 2,
"vId": 6577,
"actionType": "SAVE_DATA"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "yQGCia6qRYCImZLyH7DrEA",
"_score": 1,
"_source": {
"timestamp": 1373570314000,
"uid": 6,
"paId": 56641,
"loId": 6,
"prId": 2,
"vId": 6578,
"actionType": "CHECK_IN"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "2raajrNKTKeRKG88wiNPpw",
"_score": 1,
"_source": {
"timestamp": 1373570532000,
"uid": 6,
"paId": 56641,
"loId": 6,
"prId": 2,
"vId": 6579,
"actionType": "LOAD_DATA"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "0FDBxW2ESl6tfmj81YJvIg",
"_score": 1,
"_source": {
"timestamp": 1373570761000,
"uid": 6,
"paId": 56298,
"loId": 6,
"prId": 2,
"vId": 6577,
"actionType": "OPEN_SCREEN"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "-bFQyEdCQVWiXNldtxz04g",
"_score": 1,
"_source": {
"timestamp": 1373570777000,
"uid": 6,
"paId": 56298,
"loId": 6,
"prId": 2,
"vId": 6577,
"actionType": "OPEN_SCREEN"
}
}
询问
{
"query": {
"filtered": {
"query": {
"term": {
"loId": 6
}
},
"filter": {
"or": {
"filters": [
{
"term": {
"actionType": "SAVE_DATA"
}
},
{
"term": {
"actionType": "OPEN_SCREEN"
}
}
],
"_cache": false
}
}
}
}
}
您无法获得结果的主要原因是因为您试图对进行term
过滤actionType
,这是一个已分析的字段。如果要term
对该字段进行匹配,则需要更新类型映射以将该字段设置为not_analyzed
。请参见以下示例映射:
{
"record": {
"properties": {
"actionType": {
"type": "string",
"index": "not_analyzed",
},
"loId": {
"type": "long"
},
"paId": {
"type": "long"
},
"prId": {
"type": "long"
},
"timestamp": {
"type": "long"
},
"uid": {
"type": "long"
},
"vId": {
"type": "long"
}
}
}
}
从此处开始阅读有关映射的信息:http :
//www.elasticsearch.org/guide/reference/mapping/。您需要重新索引数据。修复该问题后,下面的查询将起作用:
{
"query": {
"filtered": {
"query": {"match_all":{}},
"filter": {
"bool": {
"must": [
{"term": {"loId":6}},
{
"or": [
{"term":{"actionType": "SAVE_DATA"}},
{"term":{"actionType": "OPEN_SCREEN"}}
]
}
]
}
}
}
}
}
问题内容: 我每天要进行几个实验,在Elasticsearch中存储实验的 错误 和 布尔 值(如果结果正确)。现在,我想在图形中显示结果(使用highchart js)。我使用这样的汇总查询来接收每天的汇总错误,包括标准差: 我面临的问题是,我无法像从数据库中获得双重错误一样检索布尔值。当我只是将字段名称更改为 我收到此错误消息: 但是,可以将所有布尔值合计为true,将true设置为1,将fa
我对Bool查询和在elasticsearch中查找精确值有点困惑。具体来说,我有一个title_field和post_field,我想搜索。但是我使用的所有其他字段,因为我想查找它们是否存在或不存在,或者有多少次(如网址或用户名,必须是准确的)。 因此,我可以从文档中看到,我可以对title_字段和post_字段进行多重匹配查询。 但我希望得到确切答复的其他领域呢?我是否执行布尔查询(使用mus
这是我试图实现的:我有ActioBar,我有一个名为登录在ActionBar上的菜单项。当点击这个登录菜单项时,它会在动作栏中添加一个新选项卡,并在父活动的容器中加载带有login_layout的片段。如果我点击任何其他选项卡,登录选项卡就会消失。只有再次点击登录菜单项,它才能重新出现。一旦登录成功,我想将菜单项的标题更改为注销。现在,在将登录菜单项的标题设置为注销后,如果我点击它,它不应该在动作
问题内容: 我在一本书中找到了这段代码,并在Netbeans中执行了它: 我只是不明白为什么这段代码的输出是真实的,任何人都可以启发我,谢谢。 问题答案: 它缺少双等号。因此,它是在做赋值而不是相等比较(请记住,赋值的返回值是新值)。在大多数情况下,大多数类型都不是布尔值,这意味着结果不是布尔值,因此对一条语句而言它是非法的,从而导致编译器错误。但是,由于此处的类型已经是布尔值,因此赋值会导致布尔
问题内容: 我正在做一个简单的游戏,您在屏幕上移动一个球,并尝试避免屏幕上出现其他障碍。 我遇到的问题是,当我尝试评估您是否接触另一个块时,无论我的布尔值等于什么,我的if语句总是返回第一个结果。这是我评估陈述的方法 这是发送 sect 布尔值的代码部分: 这是完整的代码: 请告诉我我在做什么错!!! 谢谢! 问题答案: 你需要 代替 甚至 更好的 办法是使用
问题内容: 最近,我被介绍了node.js以及一些很酷的包,例如express和jade。我有几个问题经常会敲门: 如果选择node.js构建下一个网站,我将使用JavaScript编写服务器端复杂的逻辑吗?但我认为您无法将JavaScript与Java或Python进行比较来编写服务器端代码,因为它们拥有如此众多的库。node.js是真的吗?还是我错过了什么? 我可以从node.js调用Java