Elasticsearch如何处理索引?我有一个名为Coordinates
的字段,在名为lat
的集合中有子字段lng
和users
。我想在这个集合中搜索,但是通过索引坐标字段。在我的MongoDB配置中,coordinate
字段已经是2D索引。我怎样才能告诉ElasticSearch搜索该字段的索引?它知道坐标是一个索引吗?或者我应该通过这个脚本告诉它?
curl -XPUT "localhost:9200/_river/artist/_meta" -d'
{
"type": "mongodb",
"mongodb": {
"db": "mydb",
"collection": "users"
},
"index": {
"name": "coordin",
"type": "coordinates"
}
}'
答案 0 :(得分:1)
我认为这里的“索引”就像MongoDB和SQL服务器那样。在elasticsearch上下文中,它是types
和documents
的集合,更像是数据库是tables
和rows
的集合。默认情况下,elasticsearch中的所有字段都存储在Lucene数据结构中,可以从中有效地查询。
Elasticsearch支持索引的地理空间数据,可以从here找到文档。
答案 1 :(得分:1)
Elasticsearch通过您的索引配置工作,假设您已经配置了所有内容,并且您已准备好接收编辑/etc/elasticsearch/templates/
中所需文件所需的一些文件
在我的下面示例中是log4net
,我添加了我找到的地理空间配置here:
{
"log4net": {
"template": "log4net*",
"mappings": {
"fluentd": {
"_ttl": {
"enabled": true,
"default": "62d"
},
"properties": {
"hostname": {
"type": "string",
"index": "not_analyzed"
},
"level": {
"type": "string",
"index": "not_analyzed"
},
"enviroment": {
"type": "string",
"index": "not_analyzed"
},
"site": {
"type": "string",
"index": "not_analyzed"
},
"username": {
"type": "string",
"index": "not_analyzed"
},
"logger": {
"type": "string",
"index": "not_analyzed"
},
"thread": {
"type": "string",
"index": "not_analyzed"
},
"systemname": {
"type": "string",
"index": "not_analyzed"
},
"message": {
"type": "string",
"index": "not_analyzed"
},
"location": {
"type": "geo_point",
"fielddata": {
"format": "compressed",
"precision": "1cm"
}
}
}
}
}
}
}