我想在具有几个字段的文档中搜索关键字。 搜索应该只发生在两个字段上:id和name。elasticsearch在多个字段上
我需要编写一个查询,该查询具有以下属性: 如果您的搜索输入(关键字)是数字,并且它发生在id字段和名称字段中包含此关键字的两个不同记录, id字段应该首先显示(它不必是ID字段中的完美匹配)。
例如,如果我有这两个记录: 1. ID:5名: “裤裤” 2 ID:10名: “kuku523”
,我期待为 “5” 为关键词,我应该得到第一个记录的更高分(在命中列表中)。
“id”字段是数字,“name”字段是字符串。
我一直在尝试使用matchQuery,multiMatchQuery和fuzzyLikeThis。
multiMatchQuery给第二张唱片提供了更高的分数,而不是第一张唱片,这对我来说看起来很奇怪(因为第一张唱片上有一个“完美匹配”)。
setQuery(QueryBuilders.multiMatchQuery(searchParam, ID, NAME));
and the fuzzyLike这引发了一个有关数字字段的异常。
setQuery(QueryBuilders.fuzzyLikeThisQuery(ID,NAME).likeText(searchParam))
tremQuery并没有真正给出解决方案。
在这种情况下我应该使用什么查询?
它可以使用java API来完成它吗? – user3169643
什么部分?查询或映射? – Rahul