想象一下,在一台服务器上具有 2 节点的测试集群,其中包含ElasticSearch 0.90.6。
让我们创建测试索引tindex
:
curl -X PUT localhost:9200/tindex -d '{
"settings" : {
"index" : {
"number_of_shards" : 8,
"number_of_replicas" : 1
}
}
}'
和测试类型ttype
,插入一些数据(例如10000个查询/行),映射如下:
{"title": "...", "description": "..."}
当我执行搜索查询以查找foo
时:
curl -X POST localhost:9200/tindex/ttype/_search?pretty -d '{
"min_score": 0.01,
"query":
{
"common":
{
"_all":
{
"query": "foo",
"cutoff_frequency": 0.001
}
}
},
"highlight":
{
"pre_tags": ["<b>"],
"post_tags": ["</b>"],
"fields":
{
"title":
{},
"description":
{}
}
},
"suggest":
{
"text": "foo",
"results":
{
"phrase":
{
"field": "title",
"size": 5,
"confidence": 0.01,
"highlight":
{
"pre_tag": "<b>",
"post_tag": "</b>"
}
}
},
"results1":
{
"phrase":
{
"field": "description",
"size": 5,
"confidence": 0.01,
"highlight":
{
"pre_tag": "<b>",
"post_tag": "</b>"
}
}
}
}
}'
每当我有不同的奇数和偶数结果时,正如我意识到的那样,每个节点都有不同的结果。这是由节点重启解决。此外,我还试图通过_cache API清除缓存,没有任何意义。
是否有更好的解决方案可以实时解决这种不一致问题?