我已经索引了两个文档
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"
}
}
]
如果查询使用的是默认分析器(因为我没有使用过任何分析器),那么这里的匹配项中的“ +”怎么不出现?