The link表示在多值字段上使用词组匹配时会发生奇怪的事情。但就我而言,短语匹配不能匹配多值字段。奇怪的事情并没有发生。 创建和搜索:
curl -XPUT http://localhost:9200/my_index/groups/1 -d '
{
"names": [ "John Abraham", "Lincoln Smith"]
}
'
curl -XGET http://localhost:9200/my_index/groups/_search -d '
{
"query": {
"match_phrase": {
"names": "Abraham Lincoln"
}
}
}
'
响应:
{
"took": 5,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 0,
"max_score": null,
"hits": [ ]
}
}
不确定我错在哪里?我不能像教程那样得到结果吗?任何帮助/指针都非常感谢。
注意:我在Elasticsearch 2.1.1,2.4.4和5.0.1上运行此脚本。所有结果都是一样的。
答案 0 :(得分:1)
您所指的链接是指向ES 5.x尚未更新的“ES 2.x权威指南”的旧链接。 user guide提到默认值为100。
您还可以通过点击_analyze
端点
POST my_index/_analyze
{
"text": [ "John Abraham", "Lincoln Smith"],
"field": "names"
}
产生这个(见第三和第四项的位置)
{
"tokens": [
{
"token": "john",
"start_offset": 0,
"end_offset": 4,
"type": "<ALPHANUM>",
"position": 0
},
{
"token": "abraham",
"start_offset": 5,
"end_offset": 12,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "lincoln",
"start_offset": 13,
"end_offset": 20,
"type": "<ALPHANUM>",
"position": 102
},
{
"token": "smith",
"start_offset": 21,
"end_offset": 26,
"type": "<ALPHANUM>",
"position": 103
}
]
}
因此,如果您添加100的斜率,那么您将找到匹配项:
POST my_index/groups/_search
{
"query": {
"match_phrase": {
"names": {
"query": "Abraham Lincoln",
"slop": 100
}
}
}
}