elasticsearch 7.3“字段扩展匹配太多字段”

时间:2019-09-11 18:54:59

标签: elasticsearch nosql

我有一个具有约65k条记录的索引的弹性实例。每个文件都不是我所说的大文件。我尝试过尽可能多地映射字段,并且要尽可能多地使用KEYWORD数据类型。当前POST查询没有问题,但是任何uri查询(例如“?q = slug:example-slug”)都会引发此错误:

  failed_shards: [{
    shard: 0,
    index: "items",
    node: "FC4TMXu1RxCOBGM8nUhsVw",
    reason: {
        type: "query_shard_exception",
        reason: "failed to create query: { "
        query_string " : { "
        query " : "
        slug: example-slug ", "
        fields " : [ ], "
        type " : "
        best_fields ", "
        default_operator " : "
        or ", "
        max_determinized_states " : 10000, "
        enable_position_increments " : true, "
        fuzziness " : "
        AUTO ", "
        fuzzy_prefix_length " : 0, "
        fuzzy_max_expansions " : 50, "
        phrase_slop " : 0, "
        analyze_wildcard " : false, "
        escape " : false, "
        auto_generate_synonyms_phrase_query " : true, "
        fuzzy_transpositions " : true, "
        boost " : 1.0 } }",
        index_uuid: "sXQAz8gzRKmXXXmZn8j7Rw",
        index: "items",
        caused_by: {
            type: "illegal_argument_exception",
            reason: "field expansion matches too many fields, limit: 1024, got: 1093"
        }
    }
}]

我知道我可以进行.yml编辑,以允许更多子句,但是由于弹性文档上的性能警告,因此我很犹豫。...大多数情况下,我不理解为什么这个uri查询导致这种情况,尤其是因为只有一个名为slug的字段及其关键字。我还能做些什么吗?

3 个答案:

答案 0 :(得分:0)

在设置中更改index.query.default_field。

答案 1 :(得分:0)

https://www.elastic.co/guide/en/elasticsearch/reference/current/breaking-changes-7.0.html#_limiting_the_number_of_auto_expanded_fields

执行使用字段自动扩展的查询(例如 query_string,simple_query_string或multi_match)可以具有效果 具有大量字段的索引的问题。维护 与此相对的是,默认限制为1024个字段 使用“所有字段”模式(“ default_field”:“ ”)或其他查询 字段名称扩展名(例如“ foo ”)。 如果需要,您可以更改此设置 限制使用动态集群 设置。

注意:indices.query.bool.max_clause_count需要在elasticsearch.yml中更新

答案 2 :(得分:0)

我在AWS ELK服务中遇到了同样的问题,我从AWS控制台对其进行了更新。

  • 选择域
  • 编辑域
  • 高级选项
  • 最大子句数

enter image description here