当前位置: 首页 > 知识库问答 >
问题:

Elasticsearch父子映射:在两者中搜索并突出显示

封弘伟
2023-03-14

我有以下elasticsearch 1.6.2索引映射:父项和子文档。一个项目可以有多个文档。文档没有嵌套,因为它们包含base64数据(mapper-attachments-plugin ),并且不能用项目更新。

"mappings" : {
  "document" : {
    "_parent" : {
      "type" : "item"
    }, 
    "_routing" : {
      "required" : true
    },
    "properties" : {
      "extension" : {
        "type" : "string",
        "term_vector" : "with_positions_offsets",     
        "include_in_all" : true
      }, ...
    },
 }
 "item" : { 
    "properties" : {
      "prop1" : {
        "type" : "string",
        "include_in_all" : true
      }, ...
   }
}

我喜欢在两个索引中搜索,但总是返回项目。如果文档中存在匹配项,则返回相应的项。如果项目中存在匹配项,请返回该项目。如果两者都为真,则返回该项。

是否可以组合has_child和has_parent搜索?

此搜索仅搜索文档并返回项目:

{
 "query": {
  "has_child": {
    "type": "document",
    "query": {
      "query_string":{"query":"her*}
  },
     "inner_hits" : {
      "highlight" : {
             "fields" : {
                 "*" : {}              
             }
           }
       }
}

例子

GET index/item/174
{
  "_type" : "item",
  "_id" : "174",
  "_source":{"prop1":"Perjeta construction"}
}

GET index/document/116
{
  "_type" : "document",
  "_id" : "116", 
  "_source":{"extension":"pdf","item": {"id":174},"fileName":"construction plan"}
} 

__POSSIBLE SEARCH RESULT searching for "constr*"__

{
"hits": {
  "total": 1,
  "hits": [
     {
        "_type": "item",
        "_id": "174",
        "_source": {
           "prop1": "Perjeta construction"
        },
        "highlight": {
           "prop1": [
              "Perjeta <em>construction<\/em>"
           ]
        },
        "inner_hits": {
           "document": {
              "hits": {
                 "hits": [
                    {
                       "_type": "document",
                       "_id": "116",
                       "_source": {
                          "extension": "pdf",
                          "item": {
                             "id": 174
                          },                              
                          "fileName": "construction plan"
                       },
                       "highlight": {
                          "fileName": [
                             "<em>construction<\/em> plan"
                          ]
                       }
                    }
                 ]
              }
           }
        }
     }
  ]
}
}

共有1个答案

陆和泰
2023-03-14

我可以用不回答我的问题“有没有可能将has_child和has_parent结合起来”。

一次只应在一个索引上使用一个索引。

 类似资料:
  • 问题内容: 我想使用jQuery / Java脚本搜索并突出显示文本。 示例HTML 1: 当我搜索字符串“ Good Morning”时,div1和div3中的内容都应突出显示。即。输出html应该是 我使用了插件https://raw.github.com/bartaz/sandbox.js/master/jquery.highlight.js将搜索到的内容包含在span中。但是只有div3高

  • 问题内容: 如何突出显示使用php的mysql查询的搜索结果? 这是我的 [修改] 代码: 问题答案: 您可以使用preg_replace();,当它在文本中找到匹配项时,您可以在匹配词周围放置一个带有突出显示类别的div。然后,您可以向突出显示类添加背景颜色和边框,以使其突出显示 preg_replace期望3个参数; 第一个是您要寻找的 第二个是应该更改为 他应从中搜索并替换的文本字符串 例如

  • 搜索“adida shi”,应该会得到两个商品,一个是名称为“adidas shirts”,另一个是“adidas red shirts” 预期突出显示: 实际突出显示: 有什么想法让它工作吗?

  • 问题内容: 我正在使用此代码突出显示搜索关键字: 但是,这仅突出显示一个关键字。如果用户输入多个关键字,则会缩小搜索范围,但不会突出显示任何单词。如何突出显示多个单词? 问题答案: 正则表达式是必经之路! 要以不区分大小写的方式进行匹配,请在正则表达式中添加“ i” 注意:对于像“ä”这样的非英语字母,结果可能会因地区而异。

  • 我有一个反应原生应用程序,我有一个搜索栏和一个FlatList。我的搜索逻辑如下 搜索栏: FlatList: 渲染项: 项目组成部分: 我想要一个搜索过滤器高亮显示,如下所示,当我开始在搜索栏中键入文本时,平面列表中的文本必须高亮显示。 我如何实现这个??反应本族语突出词?有什么功能吗?请帮忙

  • 如果所有未分析的字段与搜索查询匹配,我希望突出显示它们。 索引实体如下所示: 假设我有一个,它带有,然后运行一个具有相同值的搜索查询,并使用以下代码突出显示搜索结果: 因此,我得到以下代码片段:. 这似乎是合理的,因为分析器将符号视为停止字,而将视为分隔符,并且不突出显示它们。但是我不知道如何在突出显示这个字段的同时避免使用analyzer。类中有一些方法需要而不是,但我不知道如何使用它们。 我想