我在HTTP GET请求中尝试了下面的2个Lucene查询,以在我的ElasticSearch中搜索文档:
q=(Name:\"20190401_150454_992\" OR \"test video\")
和
q=(Name:\"test video\" OR \"20190401_150454_992\")
第一个结果仅包含此文档:
"_source": {
"Name": "test video",
"Latitude": 25.1062949,
...
}
,第二个结果包含上面的文档,和
"_source": {
"Name": "20190401_150454_992",
"Latitude": 0,
...
}
也。
我希望结果应该是相同的(它们应该在两个查询中返回 2个文档),因为我没有改变任何其他条件,除了查询字符串中查询字段的顺序,但否。谁能解释为什么?谢谢!
我正在使用ElasticSearch 5.5.2。
答案 0 :(得分:0)
您的问题是关于
的区别q =(名称:\“测试视频\”或\“ 20190401_150454_992 \”)
和
q =(名称:\“ 20190401_150454_992 \”或\“测试视频\”)
请注意,“名称”字段仅绑定到您的第一个短语。 所以请尝试
q =名称:(\“测试视频\”或\“ 20190401_150454_992 \”)
因为您的查询等于
q =名称:\“测试视频\”或_all:\“ 20190401_150454_992 \”
为什么?因为有一个默认的搜索字段: https://www.elastic.co/guide/en/elasticsearch/reference/5.2/mapping-all-field.html#querying-all-field