вложенный условный поиск foselasticabundle

вот мой конфиг

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 зависят друг от друга.

Как я могу этого добиться?


person Anil Gupta    schedule 20.11.2014    source источник
comment
Посмотрите на запрос bool; при необходимости они могут быть вложены друг в друга. Кроме того, не рекомендуется хранить сопоставления в файле конфигурации, поскольку их легко испортить при обновлении (например, забыть скопировать, изменить на одном узле, но не на другом и т. д.).   -  person pickypg    schedule 20.11.2014
comment
@pickypg, не могли бы вы привести пример?   -  person Anil Gupta    schedule 21.11.2014
comment
О... Я не заметил, что оба подполя также были nested. Взгляните на похожий вопрос/ответ, который требует от вас удалить поля и используйте скрипт.   -  person pickypg    schedule 23.11.2014