我在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();
在对内存问题进行多次优化(包括堆大小,禁用交换)之后,与其他引擎相比,性能非常糟糕。例如,查询"名称:*"需要将近2分钟才能完成。我该怎么做才能显着提高性能?文档非常小,每个字段几乎有1个令牌。
答案 0 :(得分:1)
我的问题在于使用的查询类型。 QueryStringQuery检查一个文档中的每个字段。通过使用matchQuery,性能提高了分配。感谢您提供的有用评论。