вот мой конфиг
fos_elastica:
clients:
default: { host: localhost, port: 9200 }
indexes:
allstock:
types:
clip:
mappings:
clipInfo:
type: "nested"
properties:
title : { boost: 10 }
description : { boost: 2 }
filterCategories:
type: "nested"
properties:
tags:
type: "nested"
properties:
tag : { boost: 5 }
filterCategory:
type: "nested"
properties:
name: ~
persistence:
driver: orm
model: Application\myBundle\Entity\Clip
provider: ~
listener: ~
finder: ~
и это мои данные индекса
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 4,
"max_score": 1.0,
"hits": [
{
"_index": "allstock",
"_type": "clip",
"_id": "11",
"_score": 1.0,
"_source": {
"clipInfo": {
"title": "title 1",
"description": "some desc"
},
"filterCategories": [
{
"tags": [
{
"tag": "Interior"
}
],
"filterCategory": {
"name": "Setting"
}
},
{
"tags": [
{
"tag": "Sunny"
}
],
"filterCategory": {
"name": "Season"
}
}
]
}
},
{
"_index": "allstock",
"_type": "clip",
"_id": "12",
"_score": 1.0,
"_source": {
"clipInfo": {
"title": "title 2",
"description": "desc 2"
},
"filterCategories": [
{
"tags": [
{
"tag": "Sunny"
},
{
"tag": "Rainy"
}
],
"filterCategory": {
"name": "Weather"
}
},
{
"tags": [
{
"tag": "Autumn"
},
{
"tag": "Winter"
}
],
"filterCategory": {
"name": "Season"
}
}
]
}
}
]
}
}
Я пытаюсь построить условный поиск по вложенной коллекции filterCategories
when tag in tags == 'sunny'
then name in filterCategory == 'Weather'
то есть tag
в tags
и name
в filterCategory
зависят друг от друга.
Как я могу этого добиться?
bool
; при необходимости они могут быть вложены друг в друга. Кроме того, не рекомендуется хранить сопоставления в файле конфигурации, поскольку их легко испортить при обновлении (например, забыть скопировать, изменить на одном узле, но не на другом и т. д.). - person pickypg   schedule 20.11.2014nested
. Взгляните на похожий вопрос/ответ, который требует от вас удалить поля и используйте скрипт. - person pickypg   schedule 23.11.2014