【问题标题】:ElasticSearch poor query performance one 100K documents datasetElasticSearch 一个 100K 文档数据集的查询性能不佳
【发布时间】:2016-07-08 15:16:24
【问题描述】:

我在 ElasticSearch 上使用默认的动态映射,并通过 Java API 调用搜索方法,如下所示:

    response = client.prepareSearch("test")
    .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
    .setQuery(QueryBuilders.queryStringQuery(query)) 
    .setFrom(0).setSize(1000).setExplain(false)
    .execute().actionGet();

在内存问题上经过多次优化,包括堆大小,禁用交换,与其他引擎相比性能很差。例如,查询“Name:*”需要将近 2 分钟的时间来执行。我能做些什么来显着提高性能?文档非常小,每个字段几乎有 1 个标记。

【问题讨论】:

  • 你是否发现非通配符搜索也很慢?
  • 从正常大小开始,比如 10 而不是 1000,它会产生什么?
  • 请更新您的文档映射。此外,不推荐使用通配符进行搜索。
  • @bhspencer 即使没有通配符查询,其他搜索也很慢,我没有显式映射,我使用的是elasticsearch动态映射。这可能是问题吗?
  • 要考虑的一件事是存储索引的硬盘类型。使用无法完全适应 RAM HD 访问时间的大索引会产生巨大的影响。当我切换到服务器上的 SSD 时,查询时间加快了 10 倍。

标签: java performance elasticsearch indexing


【解决方案1】:

我的问题在于使用的查询类型。 QueryStringQuery 检查一个文档中的每个字段。通过使用 matchQuery,性能提高了分配。感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    相关资源
    最近更新 更多