ElasticSearch - 搜索任何嵌套字段是在范围
问题描述:
我有下一个提交的作为弹性元件的一部分:ElasticSearch - 搜索任何嵌套字段是在范围
"PayPlan" : {
"ActivePlans" : {
"plan1" : {
"startsOn" : "1",
"endsOn" : "999999"
}
},
"someOtherData" : [
NumberLong(0), 0]
},
计划名称是完全没有逻辑(可以是“plan2323a”或“plan_hh_jj”和等等)。
如何搜索所有具有ANO计划的元素,其中startsOn小于X且endsOn大于X? 谢谢大家
我无法用QUERY_STRING或通过使用查询范围,并使用接下来的格式要做到这一点“PayPlan.ActivePlans。*。startsOn”(星号不作为通配符的范围内工作
谢谢大家
这是elasticsearch查询我现在已经工作,但我想改变“计划1”到“*”,因此它会为所有子计划搜索:
{
"query": {
"filtered": {
"query": {
"match_all": {}
},
"filter": {
"bool": {
"must": [
{
"match_all": {}
},
{
"or": {
"filters": [
{
"bool": {
"must": [
{
"range": {
"PayPlan.ActivePlans.plan1.startsOn": {
"lte": "1234"
}
}
},
{
"range": {
"PayPlan.ActivePlans.plan1.endsOn": {
"gte": "1236"
}
}
}
]
}
}
]
}
}
]
}
}
}
}
}
答
你可以用一个开始query string,如:
GET test1/_search
{
"query": {
"query_string": {
"default_field": "PayPlan.ActivePlans.plan*.startsOn",
"query": ">0"
}
}
}
输出(带有快速试运行):
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "test1",
"_type": "plan",
"_id": "AVq000G1mKJs7uLU8liY",
"_score": 1,
"_source": {
"PayPlan": {
"ActivePlans": {
"plan2": {
"startsOn": "2",
"endsOn": "999998"
}
}
}
}
},
{
"_index": "test1",
"_type": "plan",
"_id": "AVq00p0pmKJs7uLU8liW",
"_score": 1,
"_source": {
"PayPlan": {
"ActivePlans": {
"plan1": {
"startsOn": "1",
"endsOn": "999999"
}
}
}
}
}
]
}
}
+0
感谢您的回答,它让我走上了正轨,只是一个小小的更新 - 我用“查询” :“(endsOn Avishay
你能分享你使用的是完整的查询? – Adonis
我编辑了问题,并添加了我想重写的当前工作查询,以便搜索任何子“计划”元素 – Avishay