在Elastic 5.5.1中,我有两个索引,两个索引中都有相同的数据,即608k条记录。当我对每个索引运行multi_match
查询时,我在它们之间检索到不同数量的结果。将搜索结果与原始数据源进行比较时,这就是我得到的:
_______________________________
| Source | Rows Found |
| ------------ | ---------- |
| SQL | 1300 |
| Elastic Index 1| 503 |
| Elastic Index 2| 626 |
-------------------------------
查询:
SQL:
SELECT field1 FROM Table WHERE field1 LIKE '78%'
ELASTIC:
/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"type": "phrase_prefix",
"query": "78",
"fields": [
"field1"
]
}
}
]
}
}
}
索引1:
PUT test_index_one
{
"mappings": {
"field1": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
索引2:
PUT test_index_two
{
"mappings": {
"field1": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
我的问题是,尽管索引不同,为什么对相同数据集使用相同查询却无法获得相同数量的匹配?我知道分数在各个分片上可能会有所不同,这就是search_type=dfs_query_then_fetch
参数起作用的地方,但是在这里我可能会缺少一些东西吗?