突出显示稀疏字段的弹性搜索很慢

时间:2014-08-14 19:43:50

标签: performance elasticsearch highlight sparse-matrix

我最近开始使用elasticsearch。我有文件,其中有父子关系,但我决定将孩子存储在编号字段中。例如:

{
    "id": "1",
    "name": "parent1",
    "child": {
        "1": {
            "id": "13"
            "content": "child 13 content"
        },
        "2": {
            "id": "25"
            "content": "child 25 content"
        },
        "3": {
            "id: "75"
            "content": "child 75 content"
        },
        "4": {
            "id": "125"
            "content": "child 125 content"
        }
    }
}

我这样做了所以我可以在这些字段上使用突出显示,并在以后轻松找到突出显示的孩子的ID。我用这样的荧光笔:

"highlight": {
    "order": "score",
    "fields": {
        "name": {
            "number_of_fragments": 0
        },
        "child.*.content": {
        }
    }
}

这种结构导致很多空字段,一个父母可能有数百个孩子,而大多数只有一对或没有。

我运行了一些测试搜索,突出显示非常慢。然后我尝试将突出显示的字段限制为我的测试搜索中的最大字段数。 (其中1个结果包含36个孩子,所以在我的荧光笔中使用“孩子。*。内容”而不是用1-36岁儿童替换它。令我惊讶的是,它将搜索时间缩短了10倍。我尝试将字段37-72添加到突出显示中,它几乎使搜索时间加倍。

对我而言,突出空场需要花费很多时间,这有点令人惊讶。有没有更好的处理稀疏字段的突出显示方法?或者以任何方式强制突出显示器跳过这些字段(或定义突出显示器如何处理空字段)?

我真的想避免使用父/子关系,使用当前结构会更容易。

0 个答案:

没有答案