如果我在AND
以下的查询中运行,则不返回任何内容:
TF1:"rohan sharma" AND TF3:"gaurav"
但如果我使用OR
,则返回结果:
TF1:"rohan sharma" OR TF3:"gaurav"
这两个数据都可用
这是映射:
{
"TEST": {
"mappings": {
"indextestField1": {
"_ttl": {
"enabled": true
},
"properties": {
"TF1": {
"type": "string"
},
"TF2": {
"type": "string"
}
}
}
}
}
}
这是我的java代码
SearchResponse response = client.prepareSearch("TEST")
.setQuery(QueryBuilders.queryString("TF1:\"rohan sharma\" AND TF2:\"milind bagal\""))
.execute()
.actionGet();
答案 0 :(得分:0)
您的映射必定是错误的,请将您的分析器添加到字段TF1
和TF3
。
{
"TEST": {
"mappings": {
"properties": {
"TF1": {
"type": "string",
"index": "not_analyzed"
},
"TF2": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
参考文献,
答案 1 :(得分:0)
关于您提供的命令,您双引"rohan sharma"
,这意味着两个单词的位置必须按顺序排列。
我想你要找到的文件,这两个单词"rohan sharma"
并不是彼此相邻,这意味着这个条件失败了,并且使用AND运算符导致不匹配。
因此,如果您不需要位置标准,请不要使用双引号,只需使用:
TF1:rohan AND TF1:sharma AND TF3:gaurav
这只是我的假设。有关更详细的答案,您可能需要使用您提供的命令提供要查找的文档。