【发布时间】: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