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

在Elastic中搜索_all字段并以高亮显示返回结果

闻人锦
2023-03-14

我使用Elastic5.4,想要查询包含多种类型文档的索引。(类型a和类型b)。下面是索引中的示例文档:

文件:

{
  "_index": "test",
  "_type": "a",
  "_id": "1",
  "_source": {
    "id": "1",
    "name": "john-usa-soccer",
    "class": "5",
    "lastseen": "2017-07-05",
    "a_atts": {
      "lastname": "tover",
      "hobby": "soccer",
      "country": "usa"
    }
  }
}

 {
  "_index": "test",
  "_type": "b",
  "_id": "2",
  "_source": {
    "id": "2",
    "name": "john-usa",
    "class": "5",
    "lastseen": "2017-07-05",
    "b_atts": {
      "lastname": "kaml",
      "hobby": "baseball",
      "country": "usa"
    }
  }
}

映射:

{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_ngram_analyzer": {
          "tokenizer": "my_ngram_tokenizer"
        }
      },
      "tokenizer": {
        "my_ngram_tokenizer": {
          "type": "ngram",
          "min_gram": "3",
          "max_gram": "3",
          "token_chars": [
            "letter",
            "digit"
          ]
        }
      }
    }
  },
  "mappings": {
    "a": {
      "dynamic_templates": [
        {
          "strings": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "analyzer": "my_ngram_analyzer",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                },
                "suggest": {
                  "type": "completion",
                  "analyzer": "simple"
                },
                "analyzer1": {
                  "type": "text",
                  "analyzer": "simple"
                },
                "analyzer2": {
                  "type": "text",
                  "analyzer": "standard"
                }
              }
            }
          }
        }
      ]
    },
    "b": {
      "dynamic_templates": [
        {
          "strings": {
            "match": "*",
            "match_mapping_type": "string",
            "mapping": {
              "type": "text",
              "analyzer": "my_ngram_analyzer",
              "fields": {
                "keyword": {
                  "type": "keyword",
                  "ignore_above": 256
                },
                "suggest": {
                  "type": "completion",
                  "analyzer": "simple"
                },
                "analyzer1": {
                  "type": "text",
                  "analyzer": "simple"
                },
                "analyzer2": {
                  "type": "text",
                  "analyzer": "standard"
                }
              }
            }
          }
        }
      ]
    }
  }
}

我的查询是在任何类型的任何字段中搜索所有包含“John”的文档,并突出显示找到匹配的字段。这个查询是按照弹性文档构造的。我的模式映射将ngram_analyzer配置为分析器,而不是模式中所有字符串类型字段的默认分析器。

{
  "query": {
    "bool": {
      "should": [
        { "match": { "_all": "john"} }
      ]
    }
  },
  "highlight": {
    "fields": {
      "name": { 
        "require_field_match": false
      },
      "a_atts.lastname":{
        "require_field_match": false
      },
      "a_atts.hobby":{
        "require_field_match": false
      },
      "a_atts.country":{
        "require_field_match": false
      }
    }
  }
}
{
  "took": 79,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 0.17669111,
    "hits": [
      {
        "_index": "student",
        "_type": "a",
        "_id": "AV1WjBeYEZrDBYsdGMtY",
        "_score": 0.17669111,
        "_source": {
          "name": "john-usa-soccer",
          "class": "5",
          "lastseen": "2017-07-05",
          "a_atts": {
            "lastname": "tover",
            "hobby": "soccer",
            "country": "usa"
          }
        }
      },
      {
        "_index": "student",
        "_type": "b",
        "_id": "AV1WjHFxEZrDBYsdGMtZ",
        "_score": 0.17669111,
        "_source": {
          "name": "john-usa",
          "class": "5",
          "lastseen": "2017-07-05",
          "b_atts": {
            "lastname": "kaml",
            "hobby": "baseball",
            "country": "usa"
          }
        }
      }
    ]
  }
}
    "highlight": {
      "name": [
        "<em>john</em>-usa-soccer"
      ]
    }

如何在结果中返回高亮显示?

共有1个答案

张伯寅
2023-03-14

我得到了荧光笔工作,通过以下答案在这个链接提供。

"highlight": {
    "fields": {
      "*": {}
    },
    "require_field_match": false
 }
 类似资料:
  • 本文向大家介绍Vue实现搜索结果高亮显示关键字,包括了Vue实现搜索结果高亮显示关键字的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Vue实现搜索结果高亮显示关键字的具体代码,供大家参考,具体内容如下 1. 需要解决的问题 父组件将搜索的字段传到子组件 子组件接受数据,正则匹配,并替换字段 2. 具体代码 父组件代码 子组件代码 以上就是本文的全部内容,希望对大家的学习有所帮助,也

  • 问题内容: 我希望突出显示匹配的结果。如果我提到字段名称,它对我有用,它返回突出显示的文本,但是,如果我将字段指定为“ _all”,则它不返回任何值。这对我有用: 这将返回预期值,如下所示:[突出显示] => stdClass对象([my_field] =>数组([0] => stackoverflow 是最适合技术人员的网站)) 但是当我给这个: 我得到空值/无结果。 如何使它在任何字段上都能使

  • 本文向大家介绍vue2实现搜索结果中的搜索关键字高亮的代码,包括了vue2实现搜索结果中的搜索关键字高亮的代码的使用技巧和注意事项,需要的朋友参考一下 具体代码如下所示: 开源项目地址: github.com/alex-0407/v… 效果演示 总结 以上所述是小编给大家介绍的vue2实现搜索结果中的搜索关键字高亮的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此

  • 本文向大家介绍JavaScript实现的搜索及高亮显示功能示例,包括了JavaScript实现的搜索及高亮显示功能示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript实现的搜索及高亮显示功能。分享给大家供大家参考,具体如下: 情景: 用来筛选列表中的数据, 由于单条数据很简短, 没有用php+mysql去实现筛选功能, 只用javascript进行筛选, 匹配的高亮,

  • 我已经测试了elastic search highlight field函数,它运行良好。我使用了elastic search 2.4.4和spring-data-elasticsearch-2.0.0.RELEASE 示例代码在下面的帖子中 如何使用Spring data elasticsearch提供高亮显示 我最近将elastic search升级到5.5.0和spring-data-ela

  • 问题内容: 我想使用Tire gem作为ElasticSearch的客户端来索引pdf附件。在我的映射中,我从_source中排除了附件字段,因此附件不存储在索引中, 也不在搜索结果中返回 : 运行以下curl命令时,仍然可以看到搜索结果中包含的附件​​内容: 我已经在这个线程中发布了我的问题: 但是我刚刚注意到,不仅附件包含在搜索结果中,而且所有其他字段(包括未映射的字段)也都包含在内,如下所示