我有一个具有约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的字段及其关键字。我还能做些什么吗?
答案 0 :(得分:0)
在设置中更改index.query.default_field。
答案 1 :(得分:0)
执行使用字段自动扩展的查询(例如 query_string,simple_query_string或multi_match)可以具有效果 具有大量字段的索引的问题。维护 与此相对的是,默认限制为1024个字段 使用“所有字段”模式(“ default_field”:“ ”)或其他查询 字段名称扩展名(例如“ foo ”)。 如果需要,您可以更改此设置 限制使用动态集群 设置。
注意:indices.query.bool.max_clause_count
需要在elasticsearch.yml中更新
答案 2 :(得分:0)