弹性搜索嵌套的多匹配查询

时间:2015-08-05 10:18:57

标签: elasticsearch nested match nested-properties

所以我的问题与描述here的问题基本相同,但该组仍然没有答案。

我的映射:

{
    "abstract": {
        "properties": {
            "summary": {
                "type": "string"
            }
        }
    },
    "authors": {
        "type": "nested",
        "properties": {
            "first_name": {
                "type": "string"
            },
            "last_name": {
                 "type": "string"
            }
        }
    }
}

我想对这两个字段进行全文搜索,可能是不均衡的加权。我想到的问题,但不幸的是不起作用,将是这样的:

{
    "query": {
        "bool": {
            "should": [{
                "multi_match": {
                    "query": "higgs boson",
                    "fields": ["abstract.summary^5", "author.last_name^2"]
                }
            }]
        }
    }
}

我没有从authors字段获得任何结果,因为它的嵌套映射。我也无法摆脱嵌套属性 - 我用它来进行聚合。任何优雅的想法如何解决?

2 个答案:

答案 0 :(得分:11)

将映射更改为使用include_in_root: true的以下映射将允许您使用原始写的查询:

{
    "abstract": {
        "properties": {
            "summary": {
                "type": "string"
            }
        }
    },
    "authors": {
        "type": "nested",
        "include_in_root": true,
        "properties": {
            "first_name": {
                "type": "string"
            },
            "last_name": {
                 "type": "string"
            }
        }
    }
}
  

您可能希望将内部对象索引为嵌套字段和展平对象字段。这可以通过将include_in_parent设置为true来实现。 - Link

注意:include_in_root可能会在未来版本的elasticsearch中弃用,而不是copy_to

答案 1 :(得分:8)

我设法解决的唯一解决方案,这不是方便也不优雅,但不知何故有效是这样的查询:

death type time event
1       Type3   81     1
2          NA  868     0
3       Type3 1022     1
4          NA  868     0
5          NA  868     0
6          NA  868     0
7          NA  868     0
8          NA  887     0
9       Type3  156     1
10         NA  868     0
11         NA  868     0
12         NA  868     0
13      Type3  354     1
14      Type3  700     1
15      Type3  632     1
16         NA  868     0
17      Type1  308     1
18         NA 1001     0
19         NA 1054     0
20         NA 1059     0
21      Type3  120     1
22         NA  732     0
23      Type3  543     1
24      Type1  379     1
25         NA  613     0
26         NA 1082     0
27      Type3  226     1
28      Type2    1     0
29         NA  976     0
30         NA 1000     0
31         NA  706     0
32         NA 1015     0
33      Type3  882     1
34         NA 1088     0
35         NA  642     0
36      Type3  953     1
37         NA 1068     0
38         NA  819     0
39         NA 1029     0
40      Type3   34     1
41         NA 1082     0
42      Type3  498     1
43         NA  923     0
44         NA 1041     0
45      Type3  321     1
46         NA  557     0
47         NA  628     0
48      Type3  197     1
49      Type3  155     1
50         NA  955     0

我也不确定提升能否按预期工作,只要在不同的查询中设置即可。任何建议表示赞赏。