2014-02-03 2 views
0

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

У меня есть следующее отображение определено:

curl -XPUT http://localhost:9200/test/product/_mapping -d '{ 
    "product": { 
     "properties": { 
      "properties": { 
      "type": "nested" 
      } 
     } 
    } 
}' 

Но когда я добавить элемент:

curl -XPUT http://localhost:9200/test/product/1432008 -d '{ 
    "properties": [ 
     { 
      "data_type": 0, 
      "id": 19, 
      "name": "Vendor", 
      "value": "TEST TEST", 
      "value_id": 16577846 
     } 
    ] 
    }' 

я получаю следующее:

{ 
    "test": { 
     "product": { 
      "properties": { 
      "properties": { 
       "type": "nested", 
       "properties": { 
        "data_type": { 
         "type": "long" 
        }, 
        "id": { 
         "type": "long" 
        }, 
        "name": { 
         "type": "string" 
        }, 
        "value": { 
         "type": "string" 
        }, 
        "value_id": { 
         "type": "long" 
        } 
       } 
      } 
      } 
     } 
    } 
} 

Что на самом деле выглядит правильно. Однако я получаю 0 обращений за:

curl -XGET http://localhost:9200/test/product/_search -d ' 
{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "properties", 
      "query":{ 
      "filtered": { 
       "query": { "match_all": {}}, 
       "filter": { 
       "and": [ 
        {"term": {"properties.name": "vendor"}}, 
        {"term": {"properties.value": "test test"}} 
       ] 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
}' 

Кто-нибудь знает, что я делаю неправильно?

ответ

0

Попробуйте это,

curl -XGET http://localhost:9200/test/product/_search -d ' 
{ 
    "query": { 
    "filtered": { 
     "query": {"match_all": {}}, 
     "filter": { 
     "nested": { 
      "path": "properties", 
      "query":{ 
      "filtered": { 
       "query": { "match_all": {}}, 
       "filter": { 
       "and": [ 
        {"term": {"name": "Vendor"}}, 
        {"term": {"value": "TEST"}} 
       ] 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
}' 
0

я понял, что здесь происходит. В моем примере выше я немного изменил его, чтобы скрыть детали бизнеса. Я забыл, что термин фильтр имел значение с пробелом в нем «test test». Прошлое. Меня. Спасибо за вашу помощь.

Смежные вопросы