我想從 Elasticsearch 中獲取如下匹配的檔案。
{
"configurationId": "dp4wb8kpw4k1s2z",
"type": 1,
"items": [
{
"text": "car",
"rank": 1
},
{
"text": "ship",
"rank": 2
}
],
"date": "2021-07-08"
}
但是我想匹配 items 陣列中的所有物件,并且我想獲取具有此匹配項的檔案。例如,items陣列中rank值為1的物件的文本值肯定是“car”,陣列中rank值為2的物件的文本值肯定應該是“ship”。
我如何在 Elasticsearch 中為此撰寫查詢?
uj5u.com熱心網友回復:
您需要在 Elasticsearch 中使用嵌套物件而不是物件陣列。
物件陣列不會像您期望的那樣作業:您不能獨立于陣列中的其他物件查詢每個物件。如果您需要能夠做到這一點,那么您應該使用嵌套資料型別而不是物件資料型別。
有關更多資訊,請在此處查看有關陣列的 Elasticsearch 官方檔案和此處的嵌套物件。
將映射更改為嵌套物件后,您將能夠像這樣查詢:
詢問:
GET my-index-000001/_search
{
"query": {
"nested": {
"path": "items",
"query": {
"bool": {
"must": [
{ "match": { "items.text": "car" }},
{ "match": { "items.rank": 1 }}
]
}
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/464126.html
標籤:弹性搜索
