在我的弹性搜索数据库中插入6条记录后,我正在尝试一个弹性搜索示例。
插入的记录是具有Id和text两个属性的简单json
"OCC-001","Car Damaged During Loading"
"OCC-002","Car jango jango jango Damaged Loading"
"OCC-003","hjjkhjkasd hjkhjklhas d Cars asdasd jango asdsas jango jango Damaged asdsad asdasdasd Loading"
"OCC-004","This should not come at all "
"OCC-005","This may come Car"
"OCC-006","Will this come Cars"我正在做如下搜索
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(
matchQuery("title","Car Damaged"))
.build();
FacetedPage<Occurrence> occurrences = myElasticSearchRepository.search(searchQuery);
return occurrences; 我得到了错误的结果,并且顺序错误
"OCC-005","This may come Car"
"OCC-001","Car Damaged During Loading"
"OCC-002","Car jango jango jango Damaged Loading"当我使用下面的查询进行相同的搜索时,我得到了正确的结果,但顺序不同
http://localhost:9200/myIndex/cars/_search?q=Car%20Damaged
"OCC-001","Car Damaged During Loading"
"OCC-002","Car jango jango jango Damaged Loading"
"OCC-005","This may come Car"
"OCC-003","hjjkhjkasd hjkhjklhas d Cars asdasd jango asdsas jango jango Damaged asdsad asdasdasd Loading"看起来我做了一些根本不正确的事情。
敬请指教。
发布于 2017-03-04 06:34:58
我在这个例子中使用了嵌入式弹性搜索。在调试了一段时间后,我尝试删除并重新创建索引。
您可以使用http://localhost:9200/_cat/indices?v监控索引。对于所有主要功能--清除缓存、刷新索引等,都有弹性搜索的小抄。
可能我的索引被破坏了。我删除了旧的索引,并以不同的名称重新创建了索引,它的工作与预期的一样。
搜索结果是相关的,并且分数与预期结果相匹配。
发布于 2017-03-02 12:28:14
发布于 2017-08-31 22:26:35
如果你有多个分片和少量的数据,那么当你使用默认的搜索类型query_then_fetch时,你可能会得到错误的分数,因为当少量的数据分散在几个分片上时,IDF算法开始产生糟糕的结果。在这种情况下,您很可能正在寻找另一种搜索类型,即dfs_query_then_fetch。应该是这样的
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(matchQuery("title","Car Damaged"))
.withSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.build();有关搜索类型及其重要性的更多信息,请单击此处https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-search-type.html#search-request-search-type
https://stackoverflow.com/questions/42533922
复制相似问题