gpt4 book ai didi

elasticsearch - Elasticsearch使用数组字段索引multi_field

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

我是Elasticsearch的新手,正在尝试创建一个包含stringarray of strings字段的multi_field索引。使用string字段都可以很好地工作,但是当我尝试在数组中获取一些结果时,它返回一个空的结果。

我的数据:

{
"string_field_one": "one",
"string_field_two": "two",
"array_of_strings_field": [
"2010", "2011", "2012", "2013"
]
}

映射:
{
"string_field_one" : {
"type" : "string",
"analyzer": "snowball",
"copy_to": "group"
},
"string_field_two" : {
"type" : "string",
"analyzer": "snowball",
"copy_to": "group"
},
"array_of_strings_field" : {
"type" : "string",
"analyzer": "keyword",
"copy_to": "group"
}
"group" : {
"type": "multi_field"
}
}

搜索:
 "body": {
"query": {
"multi_match": {
"query": "one two 2010",
type: "cross_fields",
operator: "and",
fields: [
"string_field_one",
"string_field_two",
"array_of_strings_field",
"group"
]
}
}
}

期望值:
  • 通过onetwo2010搜索应返回结果
  • 通过one two搜索应返回结果
  • 通过one two 2010搜索应返回结果
  • 通过one two 2008搜索不应返回结果

  • 我想念什么?

    最佳答案

    Cross_fields具有所有字段应具有相同search analyzer的约束,或者所有查询项应出现在具有相同搜索分析器的字段中。这里不是这种情况。
    在上述情况下,您需要使用query_string:

    例:

    "body": {
    "query": {
    "query_string": {
    "query": "one two 2010",
    "default_operator": "AND",
    "fields": [
    "string_field_one",
    "string_field_two",
    "array_of_strings_field",
    "group"
    ]

    }
    }
    }

    关于elasticsearch - Elasticsearch使用数组字段索引multi_field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34266044/

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