我有一個稱爲經驗字段用戶文件,它是對象的數組,如:Elasticsearch連接範圍和術語,以相同的數組項
{
"experiences": [
{
"end_date": "2017-03-02",
"is_valid": false
},
{
"end_date": "2015-03-02",
"is_valid": true
}
]
}
有了這個文檔我要搜索的用戶,其中端日期在去年,is_valid是真的。 在這個時候我有一個查詢 - > BOOL我添加兩個必須有,一個範圍爲END_DATE併爲is_valid一個長期。
{
"query": {
"bool": {
"must": {
"term": {
"experiences.is_valid": true
},
"range": {
"experiences.end_date": {
"gte": "now-1y",
"lte": "now"
}
},
}
}
}
}
其結果是,該用戶被選中是因爲他在去年END_DATE(第一EXP)和另外一個EXP。與is_valid true。 當然這不是我所需要的,因爲我需要的是end_date和is_valid必須被引用到同一個對象,但我們如何在Elasticsearch上做到這一點?
映射:
"experiences": {
"properties": {
"comment": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"end_date": {
"type": "date"
},
"id": {
"type": "long"
},
"is_valid": {
"type": "boolean"
},
"start_date": {
"type": "date"
}
}
}
您的索引共享映射..'GET index/type/_mapping'。我想經驗是'對象'類型的。 – Richa
新增,但沒有「類型」的經驗... – Grork
默認爲「對象」.. :) – Richa