java - Elasticsearch 优先考虑从匹配开始

标签 java elasticsearch indexing full-text-search

我正在使用Elasticsearch 6.8版本进行文档索引,并且在搜索时有此要求。我已经使用以下设置创建了索引。

{
  "settings": {
"number_of_shards": 3,
"number_of_replicas": 2,
"analysis": {
  "analyzer": {
    "default": {
      "type": "custom",
      "tokenizer": "icu_tokenizer"
    }
  }
}
  },
      "mappings": {
"person": {
  "properties": {
    "firstName": {
      "type": "text"
    },
    "lastName": {
      "type": "text"
    },
    "technologies": {
      "type": "nested"
    }
  }
}
  }
}

例如,我正在使用以下技术创建3个文档。
  • 1st document-“技术”:[“我的测试技术”]
  • 第二份文档-“技术”:[“测试技术”]
  • 第三个文档“技术”:[“技术测试”]

  • 因此,当通过关键字“test”进行搜索时,它将返回所有文档,这是正确的行为,但是我希望第二个文档具有优先权,因为它以test *开头。因此,我的要求是从以下优先级入手。

    搜索结果应为:
  • 第一个结果-第二个文档-“技术”:[“测试技术”]
    其他人可以按任意顺序
  • 1st document-“技术”:[“我的测试技术”]
  • 第三个文档“技术”:[“技术测试”]

  • 这是我的搜索Java代码。我正在使用elasticsearch-rest-high-level-client库。

    SearchRequest searchRequest = new SearchRequest(“profile1”);
    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        QueryBuilder queryBuilder = QueryBuilders
                .boolQuery()
                .must(QueryBuilders
                        .matchQuery("technologies.name", technology));
    
        searchSourceBuilder.query(QueryBuilders
                .nestedQuery("technologies",
                        queryBuilder,
                        ScoreMode.Avg));
    
        searchRequest.source(searchSourceBuilder);
    
        SearchResponse response =
                client.search(searchRequest, RequestOptions.DEFAULT);
    

    我在搜索文档时缺少什么?请帮我。谢谢。

    最佳答案

    关于java - Elasticsearch 优先考虑从匹配开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60902231/

    相关文章:

    启用 'information_schema' 时,mysql-slow.log 显示 'log-queries-not-using-indexes' 查询

    java - Android SharedPreferences 似乎不起作用

    java - 什么软件可以帮助我解压 war 文件并获取其中的 java 源代码?

    elasticsearch - Kafka 连接器将主题键映射为 ElasticSearch 中的文档 ID

    elasticsearch - 我们可以在没有 id 的情况下从 Elasticsearch 数据库更新/删除文档吗

    sql - 用 INT IDENTITY PK 替换 GUID PK

    java - 如何附加gc日志

    java - Logback 不解析创建日志文件时的文件名日期模式

    django - 在SearchResult django haystack的数据库中找不到对象

    sql - Postgres 索引统计