springboot整合es实现不同的type关联查询
时间: 2023-12-29 22:52:25 浏览: 37
在Elasticsearch 7.x版本中,已经不再支持使用不同type进行关联查询。因此,如果需要实现不同type的关联查询,可以考虑以下两种方式:
1. 使用相同的type进行关联查询
在同一个index中可以定义多个type,将不同的数据类型存储在不同的type中。可以通过在查询时指定不同的type进行关联查询,例如:
```
GET /my_index/_search
{
"query": {
"bool": {
"must": [
{ "match": { "type1.field": "value" } },
{ "match": { "type2.field": "value" } }
]
}
}
}
```
2. 使用parent-child关联查询
在Elasticsearch中,可以使用parent-child关联查询实现不同type的关联查询。这种方式需要在创建index时指定parent和child的关系,例如:
```
PUT /my_index
{
"mappings": {
"parent": {
"properties": {
"name": { "type": "text" }
}
},
"child": {
"_parent": { "type": "parent" },
"properties": {
"age": { "type": "integer" }
}
}
}
}
```
在查询时,可以使用has_child或has_parent查询来实现关联查询,例如:
```
GET /my_index/_search
{
"query": {
"has_child": {
"type": "child",
"query": {
"match": { "age": 10 }
}
}
}
}
```
以上就是实现不同type关联查询的两种方式,可以根据具体需求选择合适的方式。