Как найти объекты с внутренними объектами, имеющими несколько полей по определенным значениям в Elastic Search - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть индекс с объектами с именем «DynamicFields», и у каждого из них есть внутренние объекты с именем «Fields», например:

 {
                "DynamicFields": [
                    {
                        "Fields": [
                            {
                                "DFieldVal": "Value1",
                                "Owned": 0,
                                "DFieldRelCode": 181254,
                                "DFieldCode": 1835
                            },
                            {
                                "DFieldVal": "Value2",
                                "Owned": 0,
                                "DFieldRelCode": 181255,
                                "DFieldCode": 1836
                            },
                            {
                                "DFieldVal": "Value3",
                                "Owned": 1,
                                "DFieldRelCode": 181256,
                                "DFieldCode": 1837
                            },
                            {
                                "DFieldVal": "Value4",
                                "Owned": 0,
                                "DFieldRelCode": 181257,
                                "DFieldCode": 1838
                            }
                        ]
                    }
                ]
            }

Мне нужно найти объекты «DynamicFields», в которых есть внутренние объекты «Fields»."с этими точными значениями:

" DFieldCode ": 1837

и

" В собственности ": 0

Я использую этот запрос для него, но ондает неправильный результат, он должен возвращать пустой результат, потому что нет никакого внутреннего объекта "Поля", имеющего оба значения:

{
  "from":0,
  "size":10,
  "query": {
    "bool":{
        "must":[
            { "terms": { "DynamicFields.Fields.Owned" : [0] } },
            { "terms": { "DynamicFields.Fields.DFieldCode" : [1837] } }
        ]
    }
  }
}

Я думаю, что проблема в том, что упругий поиск видит свойства внутренних объектовкак обычное свойство для корневого объекта, поэтому он возвращает объекты, которые имеют упомянутые поля во всех внутренних объектах, независимо от того, что находится в одном и том же внутреннем объекте.

РЕДАКТИРОВАТЬ: я суммировал данные, чтобы упростить отображение полностьюкарта данных:

{
"marketplace": {
    "mappings": {
        "object": {
            "properties": {
                "Addresses": {
                    "properties": {
                        "AddrID": {
                            "type": "long"
                        },
                        "AddressText": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "AddressTree": {
                            "properties": {
                                "AddrFieldRelID": {
                                    "type": "long"
                                },
                                "AddrTitleName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "AddrTitlePersianName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "AddrValName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "Latitude": {
                                    "type": "float"
                                },
                                "Longitude": {
                                    "type": "float"
                                }
                            }
                        },
                        "Latitude": {
                            "type": "float"
                        },
                        "Longitude": {
                            "type": "float"
                        },
                        "Tel": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                },
                "DelFlag": {
                    "type": "long"
                },
                "DynamicFields": {
                    "properties": {
                        "DynamicDefCode": {
                            "type": "long"
                        },
                        "DynamicDefDataTypeName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "DynamicDefName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "DynamicValKind": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "Fields": {
                            "properties": {
                                "DFieldCode": {
                                    "type": "long"
                                },
                                "DFieldRelCode": {
                                    "type": "long"
                                },
                                "DFieldVal": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "Owned": {
                                    "type": "boolean"
                                }
                            }
                        }
                    }
                },
                "GFRefCode": {
                    "type": "long"
                },
                "GoodsDesc": {
                    "properties": {
                        "FName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "GoodsFullName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "Supplier": {
                            "properties": {
                                "Barcode": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "GPackDayPrice": {
                                    "type": "long"
                                },
                                "GoodsEnterDate": {
                                    "type": "date"
                                },
                                "GoodsFinalCode": {
                                    "type": "long"
                                },
                                "GoodsFullName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "GoodsWHStock": {
                                    "type": "long"
                                },
                                "StoreName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "UserName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "WHName": {
                                    "type": "text",
                                    "fields": {
                                        "keyword": {
                                            "type": "keyword",
                                            "ignore_above": 256
                                        }
                                    }
                                },
                                "WareHouseCode": {
                                    "type": "long"
                                }
                            }
                        },
                        "UserName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                },
                "GoodsFinalCode": {
                    "type": "long"
                },
                "Images": {
                    "type": "text",
                    "fields": {
                        "keyword": {
                            "type": "keyword",
                            "ignore_above": 256
                        }
                    }
                },
                "IsMainObject": {
                    "type": "boolean"
                },
                "ObjectDetailPackID": {
                    "type": "long"
                },
                "ObjectKind": {
                    "type": "long"
                },
                "Prices": {
                    "properties": {
                        "Barcode": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        },
                        "GPWeight": {
                            "type": "float"
                        },
                        "GpackDayPrice": {
                            "type": "long"
                        },
                        "PackingName": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                },
                "RefGoodsFinalCode": {
                    "type": "long"
                },
                "TreePath": {
                    "properties": {
                        "DFieldCode": {
                            "type": "long"
                        },
                        "DFieldRelCode": {
                            "type": "long"
                        },
                        "DFieldVal": {
                            "type": "text",
                            "fields": {
                                "keyword": {
                                    "type": "keyword",
                                    "ignore_above": 256
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

}

спасибо.

1 Ответ

1 голос
/ 23 апреля 2019

Как показывает ваш индекс, вы сохранили свой массив как объект, Подробнее об этом здесь

В основном, если не указано иное, упругий поиск выравнивает массивы при сохранении, заставляя объекты в массивах терять свою структуру. Вы должны определить тип полей как вложенные, чтобы избежать этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...