如何使用ElasticSearch查找文本中的数字范围
我一直在网上阅读,试图找出如何使用弹性搜索在一段文本中找到一个数字范围。但是我没有运气 这里有一个例子,假设我有下面的一组文档,请注意文档并没有拆分为多个字段,它只是一个文本块 文件1{ 我有7本书 } 文档2{ 我有15本书 } 文件3{ 我有19本书 } 是否可以使用ElasticSearch形成一个查询来查找所有拥有10到20本书的人 谢谢 Rich在ES 1.5中,显然是为这类事情而设计的。我在这段代码中用ES 1.5设置了它,它似乎可以工作: 然而,我实际上并不需要这些来让它工作。根据空格将文本划分为标记,这样您就可以应用范围查询。过滤器对字段也起作用,它似乎可以执行您想要的操作: 我建立了一个简单的索引:如何使用ElasticSearch查找文本中的数字范围,search,text,
elasticsearch,Search,Text,
elasticsearch,我一直在网上阅读,试图找出如何使用弹性搜索在一段文本中找到一个数字范围。但是我没有运气 这里有一个例子,假设我有下面的一组文档,请注意文档并没有拆分为多个字段,它只是一个文本块 文件1{ 我有7本书 } 文档2{ 我有15本书 } 文件3{ 我有19本书 } 是否可以使用ElasticSearch形成一个查询来查找所有拥有10到20本书的人 谢谢 Rich在ES 1.5中,显然是为这类事情而设计的。我在这段代码中用ES 1.5设置了它,它似乎可以工作: 然而,我实际上并不需要这些来让它工作。根据
DELETE /test_index
PUT /test_index
POST /test_index/doc/_bulk
{ "index": { "_id": 1 }}
{ "msg": "I have 7 books" }
{ "index": { "_id": 2 }}
{ "msg": "I have 15 books" }
{ "index": { "_id": 3 }}
{ "msg": "I have 19 books" }
然后使用范围查询:
POST /test_index/_search
{
"query": {
"range": {
"msg": {
"from": 10,
"to": 20
}
}
}
}
...
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 1,
"hits": [
{
"_index": "test_index",
"_type": "doc",
"_id": "2",
"_score": 1,
"_source": {
"msg": "I have 15 books"
}
},
{
"_index": "test_index",
"_type": "doc",
"_id": "3",
"_score": 1,
"_source": {
"msg": "I have 19 books"
}
}
]
}
}
下面是第二个示例的代码:
感谢斯隆的详细回复。所以你是说这是开箱即用的?我曾使用JavaAPI1.5尝试过这一点,但没有成功。今晚我将再试一次。一旦我确认你的答案有效,我会把它标记为正确的。再次感谢。我没有尝试使用Java,我只是在启用CORS的本地ES实例上运行了sense链接中的代码片段,并且成功了。经过测试,它似乎工作得很好,谢谢。不过,我确实注意到了其他问题。我将查询更改为gt:10-这没有产生我预期的结果。