当前位置: 首页 > 面试题库 >

在Elasticsearch 2.3.3中添加突出显示不适用于has_child查询

赵同
2023-03-14
问题内容

当我使用hasChildQuery时,一切正常。但是,当我添加addHighlightedField()方法时,它不起作用。以下是我的代码:

TermsLookupQueryBuilder terms = QueryBuilders.termsLookupQuery("uuid")
                .lookupIndex("bropen_framework_core_security_user").lookupType("user").lookupId("5")
                .lookupPath("uuids");


HasChildQueryBuilder bookNameQuery = QueryBuilders.hasChildQuery("process",
                QueryBuilders.hasChildQuery("permission", terms));


SearchResponse searchResponse1 = client
                .prepareSearch()
                //.addHighlightedField("_all")
                .setQuery(hasChildQuery)
                .setPostFilter(QueryBuilders
                               .queryStringQuery(query.toString()))
                .setFrom(0)
                .setSize(1000)
                .execute().actionGet();

异常信息:

RemoteTransportException[[node-224][192.168.0.224:9300]   [indices:data/read/search[phase/fetch/id]]]; nested: FetchPhaseExecutionException[Fetch Failed [Failed to highlight 
field [_all]]]; 
nested: IllegalStateException[can't load global ordinals for 
reader of type: class 
org.apache.lucene.search.highlight.WeightedSpanTermExtractor
$DelegatingLeafReader must be a  DirectoryReader];

我想强调所有领域,如何实现?


问题答案:

这与git
问题中指定的错误有关。线程中提到的解决方法是在highlight_query

范例:

PUT test
{
   "mappings": {
      "my_parent": {
         "_all": {
            "store": true
         }
      },
      "my_child": {
         "_parent": {
            "type": "my_parent"
         }
      }
   }
}

PUT test/my_parent/1 
{
  "text": "This is a parent document"
}

PUT test/my_child/2?parent=1 
{
  "text": "This is a child document"
}

POST test/my_parent/_search
{
   "query": {
      "bool": {
         "must": [
            {
               "has_child": {
                  "type": "my_child",
                  "query": {
                     "match": {
                        "text": "child document"
                     }
                  }
               }
            },
            {
               "match": {
                  "_all": "parent"
               }
            }
         ]
      }
   },
   "highlight": {
      "fields": {
         "_all": {}
      },
      "highlight_query": {
         "match": {
            "_all": "parent"
         }
      }
   }
}

结果:

  {
            "_index": "test",
            "_type": "my_parent",
            "_id": "1",
            "_score": 1.016466,
            "_source": {
               "text": "This is a parent document"
            },
            "highlight": {
               "_all": [
                  "This is a <em>parent</em> document "
               ]
            }
         }

在Java
Client中,您应该可以通过此api实现它



 类似资料:
  • 这在我处理项目时创建了一个新文件后突然发生。几乎所有字符都是简单的白色文本(括号除外,因为我启用了括号对着色) 我已经尝试重置我的配置,检查我的配置(全局和在我的工作区中),并尝试了这个提供替代语法突出显示的扩展(有效,但我更喜欢使用 Visual Studio Code )。

  • 问题内容: 我正在尝试在ubuntu上的VIM中添加Go语言语法高亮显示,其资源和方向在此处http://go-lang.cat-v.org/text- editors/vim/ 提供。 Go随附了一个包含VIM语法设置的文件,以上页面提供了以下说明 将$ GOROOT / misc / vim / syntax / go.vim放在〜/ .vim / syntax /中,然后将以下内容放入〜/

  • 这在我在处理项目时创建了一个新文件后突然发生。几乎所有字符都是简单的白色文本(括号除外,因为我启用了括号对着色) 我已经尝试了重置我的配置,检查了我的配置(包括全局配置和工作区配置),尝试了这个提供可选语法高亮显示的扩展(这很有效,但我更喜欢使用VS Code 1)。

  • 我正在为VSCode开发一个自定义语言语法高亮扩展。我遇到了一个问题,lookbehinds在空白旁边使用时行为异常。 我想强调的代码示例: 我尝试使用的代码示例(在中): 此模式包含在(另一个模式中,该模式存在于整个文件中): 症结在于正则表达式的部分。您应该能够执行或或和之间的任意数量的空格,不管有多少。但是,当我尝试使用它时,我得到了这个: 我也试过< code>\\s和< code>\\s

  • 本文向大家介绍HTML 突出显示,包括了HTML 突出显示的使用技巧和注意事项,需要的朋友参考一下 示例 该<mark>元素是HTML5中的新元素,用于“由于其在另一个上下文中的相关性”而标记或突出显示文档中的文本。1 最常见的示例是用户输入搜索查询并显示结果以突出显示所需查询的搜索结果。 输出: 常见的标准格式是黄色背景上的黑色文本,但是可以使用CSS进行更改。

  • 我正在PyCharm中查看这个很酷的功能 但是我不知道mac上的这个按钮是什么: https://www.jetbrains.com/help/pycharm/2016.1/highlighting-usages.html