Elasticsearch使用数组字段索引multi_field

我是Elasticsearch的新手,正在尝试使用stringarray of

strings字段创建多字段索引。有了这些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"

]

}

}

}

  • onetwo或搜索,2010应返回结果
  • 搜索one two应返回结果
  • 搜索one two 2010应返回结果
  • 搜索依据one two 2008不应返回结果

回答:

Cross_fields具有约束,所有字段应具有相同的搜索分析器,或者所有查询项应出现在具有相同搜索分析器的字段中。这里不是这种情况。在上述情况下,您需要使用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使用数组字段索引multi_field 的全部内容, 来源链接: utcz.com/qa/427927.html

回到顶部