elasticsearch,indexing,Java,Performance,elasticsearch,Indexing" /> elasticsearch,indexing,Java,Performance,elasticsearch,Indexing" />

Java ElasticSearch查询性能差一个100K文档数据集

Java ElasticSearch查询性能差一个100K文档数据集,java,performance,elasticsearch,indexing,Java,Performance,elasticsearch,Indexing,我在ElasticSearch上使用默认的动态映射,并通过Java API调用search方法,如下所示: response = client.prepareSearch("test") .setSearchType(SearchType.DFS_QUERY_THEN_FETCH) .setQuery(QueryBuilders.queryStringQuery(query)) .setFrom(0).setSize(1000).setExplain(false

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

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

在对内存问题进行了多次优化(包括堆大小、禁用交换)后,与其他引擎相比,性能非常差。例如,查询“Name:*”几乎需要2分钟才能执行。我可以做些什么来显著提高性能?文档非常小,每个字段几乎有一个标记

我的问题在于使用的查询类型。QueryStringQuery检查一个文档中的每个字段。通过使用匹配查询,性能得到了提高。谢谢你的宝贵意见

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