在ElasticSearch中禁用对某些字段的搜索

e1xvtsh3  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(3)|浏览(466)

我想只在一个字段“xyz”中启用搜索。我正在使用下面的代码,但它给了我错误。你能帮我一下吗?

{
  "dynamic": "false",
  "properties": {
    "ABC": {
      "type": "text",
      "index": false,
      "store": true

    },
    "PQR": {
      "type": "text",
       "index": false,
      "store": true
    },
    "XYZ": {
      "type": "text"
    }
  }
}

p、 我想字段“”和“pqr”存储在ElasticSearch,但我也想禁用这些字段的搜索。

bnl4lu3b

bnl4lu3b1#

我认为您没有正确使用语法:

PUT indexName
{
  "mappings": { // <=============== This is missing
    "dynamic": false,
    "properties": {
      "ABC": {
        "type": "text", //<============= If type is object, use 'enabled' instead of 'index' 
        "index": false, 
        "store": true
      },
      "PQR": {
        "type": "text",
        "index": false,
        "store": true
      },
      "XYZ": {
        "type": "text"
      }
    }
  }
}

注:
enabled=false通常用于object类型的字段
index=false用于文本等预定义类型
index=false和enabled=false都将使字段不可索引,但该字段仍将存在于\u源中。
对于index=false的字段,对这些字段的任何搜索请求都将导致以下错误:

Cannot search on-field [xyz] since it is not indexed

对于enabled=false的任何字段(type=object),对这些字段的任何搜索请求都不会导致任何错误。

moiiocjp

moiiocjp2#

看起来你得到了以下例外:
“reason”:“创建查询失败:无法搜索字段[pqr],因为它没有索引。”,
为了搜索它,它需要被索引,这是由设置为false的index param控制的。
您当前的设置是正确的,您需要从搜索查询中排除没有索引的字段,这是许多应用程序遵循的一种非常常见的模式,否则,您可以遵循bhavya的答案,但这些字段将作为 _source 并确保未禁用(默认情况下已启用)。

nkhmeac6

nkhmeac63#

可以使用启用的Map参数
启用的设置只能应用于顶级Map定义和对象字段,导致elasticsearch完全跳过字段内容的解析。json仍然可以从\u source字段中检索,但它不可搜索或以任何其他方式存储:
索引Map:

{
  "mappings": {
    "properties": {
      "ABC": {
        "enabled":false
      },
      "PQR": {
        "enabled":false
      },
      "XYZ": {
        "type": "text"
      }
    }
  }
}

索引数据:

{
    "ABC": "b",
    "PQR": "c",
    "XYZ": "a"
}

搜索查询:在上搜索时 PQR 字段中,没有搜索结果。

{
  "query": {
    "match": {
      "PQR": {
        "query": "c"
      }
    }
  }
}

搜索结果:

"hits": {
    "total": {
      "value": 0,
      "relation": "eq"
    },
    "max_score": null,
    "hits": []
  }

搜索查询:

{
  "query": {
    "match": {
      "XYZ": {
        "query": "a"
      }
    }
  }
}

搜索结果:

"hits": [
      {
        "_index": "stof_64113718",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.13353139,
        "_source": {
          "ABC": "b",
          "PQR": "c",
          "XYZ": "a"
        }
      }
    ]

相关问题