需求:查询出满足以下两个条件的人员
es 版本:7.4.2
mapping 设计:
{
"mappings": {
"person": {
"properties": {
"patents": {
"type": "nested",
"properties": {
"patent_type": {"type": "text"},
"patent_name": {"type": "text"}
}
},
"awards": {
"type": "nested",
"properties": {
"award_name": {"type": "text"},
"award_level": {"type": "keyword"}
}
},
"papers": {
"type": "nested",
"properties": {
"paper_name": {"type": "text"},
"role": {"type": "keyword"},
"publication_level": {"type": "keyword"}
}
}
}
}
}
}
希望各位可以给出参考建议,方便的话可以直接贴出 DSL
1
baozhibo 2023-05-18 15:05:10 +08:00 1
以下是满足您提供条件的 Elasticsearch 查询 DSL:
```json { "query": { "bool": { "must": [ { "nested": { "path": "patents", "query": { "term": { "patents.patent_type": "实用新型专利" } } } }, { "nested": { "path": "papers", "query": { "bool": { "must": [ { "term": { "papers.role": "第一作者" } }, { "term": { "papers.publication_level": "SCI" } } ] } } } } ], "minimum_should_match": 2 } } } ``` 您可以使用上述查询 DSL 在 Elasticsearch 中执行搜索,以获得满足条件的人员。请注意,该查询假设您的索引类型为 "person",并且在索引中的字段和嵌套对象的属性名称与提供的映射一致。如果您的实际情况不同,请相应地调整查询。 |