所以我的问题与描述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字段获得任何结果,因为它的嵌套映射。我也无法摆脱嵌套属性 - 我用它来进行聚合。任何优雅的想法如何解决?
答案 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
我也不确定提升能否按预期工作,只要在不同的查询中设置即可。任何建议表示赞赏。