elasticsearch - 有什么方法可以在文档中添加该字段,但对_source隐藏该字段,还应该对文档进行分析和搜索

标签 elasticsearch elasticsearch-6 elasticsearch-mapping

我想在文档中添加一个字段,该字段应该是可搜索的,但是当我们执行get / search时,它不应出现在_source下。

我已经尝试过索引和存储选项,但无法通过它实现。
它更像是_all或copy_to,但在我看来,该值是由我提供的(不是从文档的其他字段收集的)。

我正在寻找可以实现以下情况的映射。

当我放置文件时:

PUT my_index/_doc/1
{
  "title":   "Some short title",
  "date":    "2015-01-01",
  "content": "A very long content field..."
}

并搜索

GET my_index / _search

输出应该是
{
    "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.0,
        "_source" : {
          "title" : "Some short title",
          "date" : "2015-01-01"
        }
      }
    ]
  }
}

当我做下面的搜索时
GET my_index/_search
{
  "query": {
    "query_string": {
      "default_field": "content",
      "query": "long content"
    }
  }
}

它应该导致我
"hits" : {
    "total" : 1,
    "max_score" : 0.5753642,
    "hits" : [
      {
        "_index" : "my_index",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.5753642,
        "_source" : {
          "title" : "Some short title",
          "date" : "2015-01-01"
        }
      }
    ]
  }

最佳答案

只需使用source filtering排除content字段即可:

GET my_index/_search
{
  "_source": {
    "excludes": [ "content" ]
  },
  "query": {
    "query_string": {
      "default_field": "content",
      "query": "long content"
    }
  }
}

关于elasticsearch - 有什么方法可以在文档中添加该字段,但对_source隐藏该字段,还应该对文档进行分析和搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55339289/

相关文章:

elasticsearch - 使用Java API索引文档时未知主机异常(RestHighLevelClient)Elasticsearch

elasticsearch - 如何在elasticsearch6.4.3中设置集群重启以实现正常运行并控制分片的分配方式

elasticsearch - 映射程序附件到Kibana问题

elasticsearch - 如何使用 RestHighLevelClient 从 Elasticsearch 中的索引中删除所有文档

elasticsearch - 在elasticsearch中搜索字幕数据

elasticsearch - 在 Elasticsearch 中映射解析器异常

Elasticsearch 映射 - 同一字段中的不同数据类型

c# - 按类型选择时,NEST错误

elasticsearch - 什么是执行关键字搜索的正确方法?

elasticsearch - 保存的方法运行迁移时出错