2015-03-31 1 views
3

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

curl -XPOST 'http://localhost:9200/thread_and_messages' -d 
'{"mappings" : { 
    "message": { 
     "properties": { 
      "messages": { 
       "type": "nested", 
       "include_in_parent": true, 
       "properties": { 
        "message_id": {"type": "string"}, 
        "message_text": {"type": "string"}, 
        "message_nick": {"type": "string"} 
       } 
      } 
     } 
    } 
}}' 

Тогда это то, как я индексируется документ:

curl -XPUT 'http://localhost:9200/thread_and_messages/thread/1' -d 
'{ 
    "thread_id":"2", 
    "thread_name":"Windows", 
    "created":"Wed Mar 25 2015", 
    "first_nick":"Admin", 
    "messages":[ 
     {"message_id":"5", "message_text":" Pc with a mouse", "message_nick":"Admin"}, 
     {"message_id":"6", "message_text":"Keyboard", "message_nick":"Admin"}, 
     {"message_id":"7", "message_text":"iPhone", "message_nick":"Admin"}, 
     {"message_id":"8", "message_text":"Gym", "message_nick":"Admin"}]" 
}' 

Это мой запрос:

curl -XGET 'http://localhost:9200/thread_and_messages/thread/_search' -d 
'{"query": { 
    "bool": { 
     "must": [ 
      {"match": {"thread_name": "windows"}}, 
      {"nested": { 
       "path": "messages", "query": { 
       "bool": { 
        "must": [{ 
         "match": {"messages.message_text": "gym"} 
        }] 
       } 
       } 
      }} 
     ]} 
    } 
}' 

Я получаю эту ошибку , Хотя я четко отображаются сообщения в виде вложенного типа:

QueryParsingException[[thread_and_messages] [nested] nested object under path [messages] is not of nested type 

ответ

5

Это потому, что вы определили ваше отображение для типа "message", но затем индексируется документ в качестве типа "thread". Таким образом, тип "thread" динамически создается, но не с вложенным подтипом. Я побежал код, как отвечал, потом посмотрел на отображение:

GET /test_index/_mapping 
... 
{ 
    "test_index": { 
     "mappings": { 
     "message": { 
      "properties": { 
       "messages": { 
        "type": "nested", 
        "include_in_parent": true, 
        "properties": { 
        "message_id": { 
         "type": "string" 
        }, 
        "message_nick": { 
         "type": "string" 
        }, 
        "message_text": { 
         "type": "string" 
        } 
        } 
       } 
      } 
     }, 
     "thread": { 
      "properties": { 
       "created": { 
        "type": "string" 
       }, 
       "first_nick": { 
        "type": "string" 
       }, 
       "messages": { 
        "properties": { 
        "message_id": { 
         "type": "string" 
        }, 
        "message_nick": { 
         "type": "string" 
        }, 
        "message_text": { 
         "type": "string" 
        } 
        } 
       }, 
       "thread_id": { 
        "type": "string" 
       }, 
       "thread_name": { 
        "type": "string" 
       } 
      } 
     } 
     } 
    } 
} 

Когда я изменил "message" к "thread" в отображении и начал снова, ваш запрос работал нормально.

Вот код, который я использовал, чтобы проверить:

http://sense.qbox.io/gist/8a06b7849cf49006afd464ed4ee5b4e770759d5a

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

  • Нет связанных вопросов^_^