Elasticsearch AND运算符无法正常工作

时间:2014-08-30 19:21:05

标签: elasticsearch

如果我在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();

2 个答案:

答案 0 :(得分:0)

您的映射必定是错误的,请将您的分析器添加到字段TF1TF3

{
  "TEST": {
    "mappings": {
      "properties": {
        "TF1": {
          "type": "string",
          "index": "not_analyzed"
        },
        "TF2": {
          "type": "string",
          "index": "not_analyzed"
        }
      }
    }
  }
}

参考文献,

hack on elasticsearch (3 hrs)

Scripts example

答案 1 :(得分:0)

关于您提供的命令,您双引"rohan sharma",这意味着两个单词的位置必须按顺序排列。

我想你要找到的文件,这两个单词"rohan sharma"并不是彼此相邻,这意味着这个条件失败了,并且使用AND运算符导致不匹配。

因此,如果您不需要位置标准,请不要使用双引号,只需使用:

TF1:rohan AND TF1:sharma AND TF3:gaurav

这只是我的假设。有关更详细的答案,您可能需要使用您提供的命令提供要查找的文档。