我正在使用Elasticsearch 5.4.1。这是映射:
If Target = Sheet1.range("$B$3") and Target.value = Sheet1.range("$C$2").value Then
Sheet1.range("$C$3").value = Sheet1.range("$A$3").value
End If
当我使用URI搜索时,我会收到结果。另一方面,在使用Request Body搜索期间,无论如何都有空结果。
{
"testi": {
"mappings": {
"testt": {
"properties": {
"last": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
答案 0 :(得分:1)
在这里发生一些事情:
last
和name
,您将字段索引为text
,然后将子字段索引为keyword
。这是你的意图吗?您希望能够在原始字段上进行分析/标记化搜索,然后在子字段上进行关键字搜索吗?name
为您提供了字段的分析版本(您设计的类型文本意味着Elasticsearch在其上应用了standard analyzer并应用了小写过滤器,一些基本的标记化和词干化等)和{{1 }}为您提供此字段的未更改关键字版本name.keyword
与您要查询的字段匹配。由于您在查询输入中使用了大写,因此您可能希望使用John
的关键字子字段,因此请尝试使用name
。 "term" : { "name.keyword" : "John" }
应也可以"term" : { "name.keyword" : "john" }
中看到结果,因为它只是执行_search
。如果您确实传递了基本文本参数,那么它将针对match_all
执行,_all
是每个文档中所有字段的串联,因此keyword
和text
版本都可用