我有这样的文档结构:
<div class="alert alert-danger fade in">
<a href="#" class="close" data-dismiss="alert" aria-label="close" >×</a>Don't forget Ramsey's Birthday
</div>
我想搜索主文档和嵌套部分,然后返回一组结果,其中嵌套的public class Client {
Context context;
Intent intent;
String value = "";
public Client(Activity activity) {
context = activity;
intent = ((Activity) context).getIntent();
value = intent.getStringExtra("String_i_need");
}
}
部分是顶级,以便文档在结果中出现两次或更多次如果[{
id: XXX,
title: 'A Title',
variations: [
{attribute: 'value', created_at: date},
...
]
},
...
]
匹配。我也希望以variation
顺序返回这些结果。这是“转动”吗?
e.g。搜索可能是“variations
包含X的所有变体,{Y} created_at
,按attribute
排序”
我可以创建一个单独的索引,其中变体是顶级文档,但是如何在没有大量重复数据的情况下包含实际的顶级文档?
https://www.muchbetteradventures.com/adventures/discover/是基于顶级文档作为假日的搜索。
https://www.muchbetteradventures.com/adventures/timeline/是节假日的个人离职,即假期可以在此列表中出现多次,因为它可能有多次出发。
目前,第一页是使用ES生成的,第二页是数据库查询。我们希望在第二个视图中添加更多的ES搜索和速度。
答案 0 :(得分:0)
根据您提供的信息,我尝试根据父子关系为您设置最小工作solution,并且您希望仅根据父文档和子文档中的属性值获取嵌套/子文档。 / p>
PUT index_name
{
"mappings": {
"parent_document" : {
"properties": {
"title" : {
"type": "text"
}
}
},
"child_document" : {
"_parent": {
"type": "parent_document"
},
"properties": {
"attribute" : {
"type": "text"
}
}
}
}
}
POST index_name/parent_document
{
"title" : "document three"
}
注意:将父查询参数作为您要将此子项关联到的父文档的ID传递。
POST index_name/child_document?parent=AV1PoQdYA2MvrCm0IPxT
{
"attribute": "value9",
"created_at": "2017-08-08"
}
POST index_name/child_document/_search
{
"query": {
"bool": {
"must": [{
"has_parent": {
"parent_type": "parent_document",
"query": {
"bool": {
"must": [{
"term": {
"title": {
"value": "document"
}
}
}]
}
}
}
},
{
"term": {
"attribute": {
"value": "value9"
}
}
}
]
}
}
}
希望这会让你开始。 感谢