带有保留字符的Elasticsearch查询问题

时间:2018-09-20 06:56:22

标签: elasticsearch

我已经索引了两个文档

1){"title": "+" }

2){"title": "a + b" }

通过使用查询字符串query,我以不同的方式对上述两个文档进行了查询。 另外,我没有更改任何分析器。已使用默认的分析器。

1。

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "+"
    }
  }
}

上面的查询给出了合法的解析异常。

2。

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "\\+"
    }
  }
}

此查询输出:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 0.9808292,
    "_source": {
      "title": "+"
    }
  }
]

上面的输出似乎也是合法的。

3。

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": " + "
    }
  }
}
在上述查询空间中的

在“ +”字符之前和之后存在,这将输出:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 1.2039728,
    "_source": {
      "title": "+"
    }
  }
]

我的问题是,为什么这里没有引发解析异常,为什么这里没有必要转义“ +”呢?如果Elasticsearch正在寻找一种以某种方式解析“ +”的方式,那么为什么“ a + b”不在点击?

4。

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "a + b"
    }
  }
}

此查询输出:

"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "005",
    "_score": 0.9808292,
    "_source": {
      "title": "+"
    }
  }
]

我不明白我的查询如何解析“ +”并且不引发异常。如果Elasticsearch正在寻找一种以某种方式解析“ +”的方法,那么为什么“ a + b”不在匹配中? 5。

{
  "query": {
    "query_string": {
      "default_field": "title",
      "query": "a \\+ b"
    }
  }
}

此查询的输出:

"max_score": 0.6931472,
"hits": [
  {
    "_index": "my_index1",
    "_type": "my_item",
    "_id": "007",
    "_score": 0.6931472,
    "_source": {
      "title": "a + b"
    }
  }
]

如果查询使用的是默认分析器(因为我没有使用过任何分析器),那么这里的匹配项中的“ +”怎么不出现?

0 个答案:

没有答案