gpt4 book ai didi

elasticsearch - 某些Elastic字段DSL查询可搜索,而某些则不可

转载 作者:行者123 更新时间:2023-12-03 00:38:12 26 4
gpt4 key购买 nike

我正在使用Elastic Search 6.8.1和动态映射。我现在在索引中有一个文档,并且正在测试在各个 Realm 的搜索。我在http://localhost:9200/documents/_search上发帖并发送DSL查询

{
"query":
{"bool":{"must":{"term":{"name": "item2"}}} }
}

我得到了我期望的文件:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.2876821,
"hits": [
{
"_index": "documents",
"_type": "document",
"_id": "nRMOs5DZg",
"_score": 0.2876821,
"_source": {
"freeform": "DEF",
"name": "item2",
"url": "s3://mybucket/key",
"visible": true
}
}
]
}
}

现在,我想确保可以通过将查询更改为“自由格式”字段来进行搜索
{
"query":
{"bool":{"must":{"term":{"freeform": "DEF"}}} }
}

结果没有命中,我不明白为什么。

[编辑]
这是动态映射
{
"documents": {
"aliases": {},
"mappings": {
"document": {
"properties": {
"freeform": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"url": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"visible": {
"type": "boolean"
}
}
}
},
"settings": {
"index": {
"creation_date": "1564776393764",
"number_of_shards": "5",
"number_of_replicas": "1",
"uuid": "2er2TF-ySEKgk6gd32K6Ig",
"version": {
"created": "6080199"
},
"provided_name": "documents"
}
}
}
}

最佳答案

没有看到您的映射很难回答,但是我的猜测是:

动态映射尝试猜测要分配给您的字段的数据类型。字符串字段的默认值为 "text" data type,这意味着将分析它们的值并将其存储为规范化术语的列表,这对于自由文本搜索很有用。字符串"item2"恰好在此分析中幸免于难,但是"DEF"将被分析为"def"

由于您使用的是term查询,因​​此所查询的术语不会经过相同的分析过程,因此您必须使用已分析的术语进行查询才能匹配文档。

尝试搜索"def"而不是"DEF"来测试此假设。另外,看看为索引自动生成的映射,您将看到每个字段映射到的数据类型。

如果确实如此,则可以执行以下操作之一:

  • 如果要精确字符串匹配:将映射从text更改为keyword(可以使用Dynamic Templates控制动态映射);或使用keyword子字段进行搜索,该子字段是通过搜索freeform.raw而不是freeform为您自动创建的。
  • 如果要“自由文本”匹配:请使用match查询而不是term查询,以便输入和文档值都经过相同的分析(但请确保您了解分析和匹配查询的工作方式)。
  • 关于elasticsearch - 某些Elastic字段DSL查询可搜索,而某些则不可,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57333516/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com