首页 > 解决方案 > 用于设置索引“否”的 Elasticsearch 使用哪种类型,关键字或文本?

问题描述

Elasticsearch 设置 "index": "no", with "index": false "type", "keyword" OR "text" 应该用什么会有什么区别吗?

因为由于该字段未编入索引,我认为不会有任何区别?

标签: elasticsearch

解决方案


在 Elasticsearch 2.x 或Elasticsearch > 5.x 中将index选项设置为不会为该字段创建倒排索引,这意味着您无法对其执行搜索或过滤。但是您可以通过创建一个名为using doc_values的数据视图来进行排序和聚合,这是该字段的重要性。 我通过将字段设置为一次和下一次来创建并运行搜索查询。nofalsefielddatatype

my_indextext_or_keyword_fieldtypetextkeyword

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "text_or_keyword_field": {
          "type": "keyword",
          "index": "false"
        }
      }
    }
  }
}

Elasticsearch 提出了一个search_phase_execution_exception给出预期的原因:

{
  "error": {
    "root_cause": [
      {
        "type": "query_shard_exception",
        "reason": "failed to create query: {\n  \"match\" : {\n    \"text_or_keyword_field\" : {\n      \"query\" : \"brown fox\",\n      \"operator\" : \"OR\",\n      \"prefix_length\" : 0,\n      \"max_expansions\" : 50,\n      \"fuzzy_transpositions\" : true,\n      \"lenient\" : false,\n      \"zero_terms_query\" : \"NONE\",\n      \"auto_generate_synonyms_phrase_query\" : true,\n      \"boost\" : 1.0\n    }\n  }\n}",
        "index_uuid": "hz4Vq6mPRaCc9HSxB-MEYg",
        "index": "my_index"
      }
    ],
    "type": "search_phase_execution_exception",
    "reason": "all shards failed",
    "phase": "query",
    "grouped": true,
    "failed_shards": [
      {
        "shard": 0,
        "index": "my_index",
        "node": "LvCoGAkyTbiVIeyF7UtXTw",
        "reason": {
          "type": "query_shard_exception",
          "reason": "failed to create query: {\n  \"match\" : {\n    \"text_or_keyword_field\" : {\n      \"query\" : \"brown fox\",\n      \"operator\" : \"OR\",\n      \"prefix_length\" : 0,\n      \"max_expansions\" : 50,\n      \"fuzzy_transpositions\" : true,\n      \"lenient\" : false,\n      \"zero_terms_query\" : \"NONE\",\n      \"auto_generate_synonyms_phrase_query\" : true,\n      \"boost\" : 1.0\n    }\n  }\n}",
          "index_uuid": "hz4Vq6mPRaCc9HSxB-MEYg",
          "index": "my_index",
          "caused_by": {
            "type": "illegal_argument_exception",
            "reason": "Cannot search on field [text_or_keyword_field] since it is not indexed."
          }
        }
      }
    ]
  },
  "status": 400
}

推荐阅读