簡體   English   中英

如何使用Elasticsearch 5.2.2搜索突出顯示使用Java API

[英]How to get Elasticsearch 5.2.2 search highlighting working with Java API

使Elasticsearch Java API返回搜索突出顯示需要什么?

我用來構造查詢的代碼類似於以下內容:

        final HighlightBuilder highlight = new HighlightBuilder()
                .field("*")
                .highlighterType("fvh");

        final SearchRequestBuilder request = client.prepareSearch()
                .setTypes("mytype")
                .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
                .setQuery(query)
                .setFrom(currentPage)
                .setSize(perPage)
                .highlighter(highlight)
                .addSort(orderBy.getValue(), sortOrder);

轉儲查詢看起來像這樣:

{
  "from" : 0,
  "size" : 10,
  "query" : {
    "bool" : {
      "must" : [
        {
          "terms" : {
            "my.field" : [
              "myvalue"
            ],
            "boost" : 1.0
          }
        }
      ],
      "disable_coord" : false,
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  },
  "sort" : [
    {
      "myotherfield1.myotherfield2.myotherfield3" : {
        "order" : "desc"
      }
    }
  ],
  "highlight" : {
    "type" : "fvh",
    "fields" : {
      "*" : { }
    }
  }
}

我得到結果,但每次點擊的.getHighlightFields()方法返回一個空地圖。

這似乎有效。 需要單獨選擇字段,而不是使用'_all':

  for(String fieldName : allFields){
      query.should(QueryBuilders.matchPhrasePrefixQuery(fieldName, queryText));
  }
  query.minimumShouldMatch(1);

  final HighlightBuilder highlight = new HighlightBuilder()
          .highlighterType("plain")
          .preTags("")
          .postTags("");

  for(String fieldName : allSearchFields) {
      highlight.field(fieldName);
  }

  final SearchRequestBuilder request = client.prepareSearch()
          .setTypes("mytype")
          .setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
          .setQuery(query)
          .setFrom(currentPage)
          .setSize(perPage)
          .highlighter(highlight)
          .addSort(orderBy.getValue(), sortOrder);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM