一直在挣扎,需要一些帮助。
我在PHP中有一个类似于
的文档数组array("title"=>"some title",
"description" => "Short description",
"categories" => array ( array("id" => "1", "name" => "category 1"),
array("id" => "5", "name" => "category 5"),
array("id" => "55", "name" => "category 55"),
)
);
所以基本上我有一个分配了许多类别的文档。我的最终目标是按ID返回包含特定类别的所有文档。
我有设置映射,文档索引正常。我试过两个"嵌套"类别的映射类型,根本没有映射,"列表"类型,但在创建映射时出错,根本不起作用。
我如何设置"列表"
的示例array(
'_source' => array(
'enabled' => true
),
'properties' => array(
'title' => array(
'type' => 'string',
'analyzer' => 'standard'
),
'description' => array(
'type' => 'string',
'analyzer' => 'standard'
),
'categories' => array(
"type" => "lists",
"properties"=> array(
"id" => array("type"=> "integer" ),
"name" => array( "type"=> "string" ),
),
),
)
);
为了完整起见,我如何将其设置为"嵌套"
array(
'_source' => array(
'enabled' => true
),
'properties' => array(
'title' => array(
'type' => 'string',
'analyzer' => 'standard'
),
'description' => array(
'type' => 'string',
'analyzer' => 'standard'
),
'categories' => array(
"type" => "nested",
"properties"=> array(
"id" => array("type"=> "integer" ),
"name" => array( "type"=> "string" ),
),
),
)
);
尝试对嵌套映射进行搜索时,它会告诉我
QueryParsingException: [nested] nested object under path [categories] is not of nested type
当尝试对未映射的类别集进行嵌套搜索(默认为系统找到的内容)时,它也会返回与上面相同的错误。
我的问题是:
我应该为这些类别数组设置哪种映射?
给出" match_all"查询,我应该使用什么过滤器(以及如何)来获得单个类别?
非常感谢任何花时间阅读此内容的人,更不用说回答了。我真的希望你能提供帮助。
答案 0 :(得分:0)
答案很简单。我误读了文档并在我的映射请求中添加了一个额外的对象类型,而不需要在那里。
'categories' => array(
"type" => "lists",
"properties"=> array(
"id" => array("type"=> "integer" ),
"name" => array( "type"=> "string" ),
),
),
应该是
'categories' => array(
"properties"=> array(
"id" => array("type"=> "integer" ),
"name" => array( "type"=> "string" ),
),
),
不需要将数组类型定义为类型,假定它是一个数组。删除后,它会正确加载映射。
现在开始搜索......