【发布时间】:2014-02-28 06:27:14
【问题描述】:
我在ES中有如下记录:
"authInput" : {
"uID" : "foo",
"userName" : "asdfasdfasdfasdf",
"userType" : "External",
"clientType" : "Unknown",
"authType" : "Redemption_regular",
"uIDExtensionFields" :
[
{
"key" : "IsAccountCreation",
"value" : "true"
}
],
"externalReferences" : []
}
“uIDExtensionFields”是一个键/值对数组。我想查询 ES 以查找所有记录:
- "uIDExtensionFields.key" = "IsAccountCreation"
- AND "uIDExtensionFields.value" = "true"
这是我认为我应该使用的过滤器,但它从不返回任何数据。
GET devdev/authEvent/_search
{
"size": 10,
"filter": {
"and": {
"filters": [
{
"term": {
"authInput.uIDExtensionFields.key" : "IsAccountCreation"
}
},
{
"term": {
"authInput.uIDExtensionFields.value": "true"
}
}
]
}
}
}
如果你们能给我任何帮助,我们将不胜感激。
干杯!
更新:在以下回复的帮助下,我解决了我的问题:
- 小写我正在搜索的值。 (将“IsAccoutCreation”更改为“isaccountcreation”)
- 更新了映射,使“uIDExtensionFields”成为嵌套类型
- 将我的过滤器更新为以下内容:
_
GET devhilden/authEvent/_search
{
"size": 10,
"filter": {
"nested": {
"path": "authInput.uIDExtensionFields",
"query": {
"bool": {
"must": [
{
"term": {
"authInput.uIDExtensionFields.key": "isaccountcreation"
}
},
{
"term": {
"authInput.uIDExtensionFields.value": "true"
}
}
]
}
}
}
}
}
【问题讨论】:
-
尝试“isaccountcreation”的小写键值,取决于您的映射,可能不关心大小写。
-
将“IsAccountCreation”更改为“isaccountcreation”确实解决了我的查询问题,非常感谢!
标签: elasticsearch