Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在Elasticsearch中过滤doc_值为true的非索引字段 - Fatal编程技术网

是否可以在Elasticsearch中过滤doc_值为true的非索引字段

是否可以在Elasticsearch中过滤doc_值为true的非索引字段,
Warning: implode(): Invalid arguments passed in /data/phpspider/zhask/webroot/tpl/detail.html on line 45
,,在Elasticsearch 5.6中,使用以下映射: "category" => [ "type"=>"keyword", "doc_values"=>true, "index"=>false "store"=>true ] 我得到的建议是,尽管index属性被设置为false,但由于doc_值的设置,可以编写一个对该字段进行过滤的查询,但是doc_值字段似乎只对聚合和排序有用 是否可以创建在此字段上筛选的查询?默认情况下,数据类

在Elasticsearch 5.6中,使用以下映射:

"category" => [
    "type"=>"keyword",
    "doc_values"=>true,
    "index"=>false
    "store"=>true
]
我得到的建议是,尽管index属性被设置为false,但由于doc_值的设置,可以编写一个对该字段进行过滤的查询,但是doc_值字段似乎只对聚合和排序有用

是否可以创建在此字段上筛选的查询?

默认情况下,数据类型已启用。您不需要显式地启用它。如果搜索到确切的文本,则可以在查询中过滤关键字字段。 例如,我有以下带有映射的索引

PUT index_name
{
  "mappings": {
    "type_name": {
      "properties": {
        "id": {
          "type": "long"
        },
        "name": {
          "type": "keyword"
        }
      }
    }
  }
}
样本文件:

{
    "id":1,
    "name":"hatim"
}
所以,在查询部分,我可以像这样过滤它来搜索

GET index_name/type_name/_search
{
  "query": {
    "term": {
      "name": "hatim"
    }
  }
}
以此类推,您可以像这样在其上添加聚合

GET index_name/type_name/_search
{
  "query": {
    "term": {
      "name": "hatim"
    }
  },
  "aggs": {
    "count": {
      "value_count": {
        "field": "name"
      }
    }
  }
}

未编制索引的字段不可搜索。Elasticsearch不会将其放入反向索引(用于搜索)。如果您尝试运行搜索查询,您将得到一个错误,如
无法搜索字段[category],因为它没有索引。

即使在映射中将“index”设置为false时,这些按关键字搜索是否有效?将字段类型定义为“keyword”时,您不需要定义任何其他选项。默认情况下,“关键字”数据类型的doc_值为true,index为true,store为false。使用索引映射查看我的更新答案。如果该字段没有索引,则无法搜索。感谢@andrestefan,如果您可以将此作为答案编写,我很乐意将其奖励给您。感谢,如果我对“category.keyword”执行术语搜索,我不会得到错误,只会得到零结果(当我与我知道存在的确切值进行匹配时)。当字段不在反向索引中时,这仍然是预期的行为吗?一位顾问留下了这个映射的文档,说可以在字段上进行筛选,我只是想弄清楚我是否遗漏了什么,因为正如你所说,根据定义,这是不可能的。类别字段的完整映射是什么?包含的子字段与问题中列出的相同,只是还有一个“copy_to”=>“TIER1”属性。TIER1有一系列的分析器等,它充当多个字段的分组,可以作为一个字段进行搜索和增强。我的理解是,这提供了对所有这些字段的自由文本搜索作为一个集合,但前提是您显式搜索第1层字段。我假设它不会显式地影响对category字段的搜索,因此不会提供对该字段进行过滤的方法。另外,如果我搜索“category”而不是“category.keyword”,我会得到您提到的错误,这就是我要求完整映射的原因。
.keyword
部件应该有自己的映射。要获取索引的完整、真实的映射,请运行
get/index_name/_mapping
。字段映射为:“category”:{“type”:“keyword”,“index”:false,“store”:true,“copy_To”:[“TIER1”]},关键字部分没有进一步的映射信息,只有“type”:“keyword”属性。