gpt4 book ai didi

elasticsearch - 我使用 Elasticsearch 搜索所有字段,你知道哪个字段匹配吗?

转载 作者:行者123 更新时间:2023-11-29 02:56:05 24 4
gpt4 key购买 nike

我使用 Elasticsearch 搜索所有字段,你知道哪个字段匹配吗?

PUT my_index/user/1 
{
"first_name": "John",
"last_name": "Smith",
"date_of_birth": "1970-10-24"
}

GET my_index/_search
{
"query": {
"match": {
"_all": "john 1970"
}
}
}

在上面的示例中,搜索“john 1970”的所有字段。由于 put 文档匹配“first_name”和“date_of_birth”,因此返回结果。

我怎么知道它匹配“first_name”和“date_of_birth”?

最佳答案

_all 是一个字段,在索引时将所有其他字段的所有值复制到该字段中。具体来说,当你索引你的文档时,ES 在概念上看到的是这个(尽管源没有被修改为包含 _all 并且 _all 本身没有被存储,只是被索引):

{
"first_name": "John",
"last_name": "Smith",
"date_of_birth": "1970-10-24",
"_all": "john smith 1970 10 24"
}

因此,如果您匹配 _all,那么唯一可以匹配的字段就是 _all 本身,没有办法“逆向工程”哪个字段只包含哪个匹配值基于_all

但是,您可以使用另一个称为突出显示的功能。由于 _all 字段未存储,因此无法突出显示,但其他字段可以突出显示,因此您可以突出显示哪些原始字段匹配哪些值:

{
"query": {
"match": {
"_all": "john 1970"
}
},
"highlight": {
"fields": {
"*": {
"require_field_match": false
}
}
}
}

在响应中,您会看到类似这样的内容,表明 first_name 与查询匹配。

"highlight": {
"first_name": [
"<em>John</em>"
]
}

关于elasticsearch - 我使用 Elasticsearch 搜索所有字段,你知道哪个字段匹配吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41256067/

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