V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
GeekHao
V2EX  ›  程序员

请教各位一个 ES 关于 nested 检索问题

  •  
  •   GeekHao · May 18, 2023 · 1278 views
    This topic created in 1076 days ago, the information mentioned may be changed or developed.

    需求:查询出满足以下两个条件的人员

    • 两项实用新型专利
    • 论文以 [第一作者] 在 [ SCI ] 发布过两篇

    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

    3 replies    2023-05-18 15:23:06 +08:00
    Bmmmmmmmmmmmmmmm
        1
    Bmmmmmmmmmmmmmmm  
       May 18, 2023   ❤️ 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",并且在索引中的字段和嵌套对象的属性名称与提供的映射一致。如果您的实际情况不同,请相应地调整查询。
    Bmmmmmmmmmmmmmmm
        2
    Bmmmmmmmmmmmmmmm  
       May 18, 2023
    @baozhibo chatGPT 的回答。
    GeekHao
        3
    GeekHao  
    OP
       May 18, 2023
    @baozhibo minimum_should_match 是最少满足两个 bool 条件吧, 我用 gpt 尝试解决这个问题,但是它的回答似乎都不太正确
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3865 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 00:04 · PVG 08:04 · LAX 17:04 · JFK 20:04
    ♥ Do have faith in what you're doing.