Преглед на файлове

agIndexes.erl模块优化改进

erlArango_v1
AICells преди 5 години
родител
ревизия
65e1dc6971
променени са 1 файла, в които са добавени 107 реда и са изтрити 81 реда
  1. +107
    -81
      src/agApi/agIndexes.erl

+ 107
- 81
src/agApi/agIndexes.erl Целия файл

@ -13,51 +13,57 @@
%
% 访_key属性 _from和_to属性快速访问文档
%
% _id键不支持用户创建的任何索引
% _id任何索引类型均不支持在用户定义的索引中使用system属性
%
% /访
%
% _keysystem属性中_key和_id属性的查询
%
%
%
%
%
%
%
%
%
%
%
% TTL
% TTL索引可用于自动从集合中删除过期的文档线
%
% 使libicu提供的单词边界分析来完成单词标记化
%
% ArangoDB中的所有索引都有唯一的句柄ArangoDB管理URI下找到
% http://server:port/_api/index/index-handle
% demo / 63563528URL为
% http://localhost:8529/_api/index/demo/63563528
% 使HTTP使用索引
%
% GET /_api/index/{index-id}
%
% index-id
% index-id
%
% id
% type
% id
% type
% selectivityEstimate属性中提供了选择性估计
%
% 200HTTP 200
% 404 HTTP 404
% 200HTTP 200
% 404 HTTP 404
getIndexInfo(PoolNameOrSocket, IndexId) ->
Path = <<"/_api/index/", (agMiscUtils:toBinary(IndexId))/binary>>,
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, Path, [], undefined).
%
%
% POST /_api/index#general
%
%
% collection
% json
% collection中创建一个新索引
% type属性中指定要创建的索引的类型
@ -69,27 +75,29 @@ getIndexInfo(PoolNameOrSocket, IndexId) ->
%
%
%
%
% sparse属性设置为truenull的文档
%
% hash或skiplist的数组索引支持可选的重复数据删除属性true
%
%
% 200HTTP 200
% 201 HTTP 201
% 400使HTTP 400
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 400使HTTP 400
% 404HTTP 404
newIndex(PoolNameOrSocket, CollName, MapData) ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr).
%
% DELETE /_api/index/{index-id}
%
% index-idID
% index-idID
% index-id的索引
%
% 200HTTP 200
% 404index-id未知HTTP 404
% 200HTTP 200
% 404index-id未知HTTP 404
delIndex(PoolNameOrSocket, IndexId) ->
Path = <<"/_api/index/", (agMiscUtils:toBinary(IndexId))/binary>>,
agHttpCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, [], undefined).
@ -97,12 +105,12 @@ delIndex(PoolNameOrSocket, IndexId) ->
%
% GET /_api/index
%
%
% collection
% 使
%
% 200JSON对象
% 200JSON对象
getIndexList(PoolNameOrSocket, CollName) ->
Path = <<"/_api/index", CollName/binary>>,
Path = <<"/_api/index?collection=", CollName/binary>>,
agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, Path, [], undefined).
% 使
@ -111,24 +119,28 @@ getIndexList(PoolNameOrSocket, CollName) ->
%
% POST /_api/index#hash
%
%
% collection
% JSON对象是必需的
% hash
%
% uniquetrue
% sparsetrue
% false
% type hash
% fields
% uniquetrue
% sparsetrue
% deduplicatefalse
% collection-name创建哈希索引
% fieldnull的文档将从索引中排除
% 使null值
%
%
% 200HTTP 200
% 201 HTTP 201
% 400使HTTP 400
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 400使HTTP 400
% 404HTTP 404
newIndexOfHash(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"hash">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"hash">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
@ -137,7 +149,6 @@ newIndexOfHash(PoolNameOrSocket, CollName, MapData) ->
{error, param}
end.
%
% PUT /_api/simple/by-example
% 使3.4.0使AQL查询取代
@ -174,28 +185,31 @@ newIndexOfHash(PoolNameOrSocket, CollName, MapData) ->
% 使
% /_api/simple/range其他操作将使用该索引来执行查询
%
% POST /_api/index#skiplist
%
%
% collection
% JSON对象是必需的
% skiplist
%
% uniquetrue
% sparsetrue
% false
% type skiplist
% fields
% uniquetrue
% sparsetrue
% deduplicatefalse
% collection-name创建一个跳过列表索引
% fieldnull的文档将从索引中排除
% 使null值
%
%
% 200HTTP 200
% 201 HTTP 201
% 400HTTP 400
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 400HTTP 400
% 404HTTP 404
newIndexOfSkipList(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"skiplist">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"skiplist">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
@ -210,23 +224,27 @@ newIndexOfSkipList(PoolNameOrSocket, CollName, MapData) ->
%
% POST /_api/index#persistent
%
%
% collection
% JSON对象是必需的
% persistent
%
% uniquetrue
% sparsetrue
% type persistent
% fields
% uniquetrue
% sparsetrue
% collection-name创建一个持久索引
% fieldnull的文档将从索引中排除
% 使null值
%
%
% 200HTTP 200
% 201 HTTP 201
% 400HTTP 400
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 400HTTP 400
% 404HTTP 404
newIndexOfPersistent(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"persistent">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"persistent">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
@ -240,19 +258,23 @@ newIndexOfPersistent(PoolNameOrSocket, CollName, MapData) ->
% TTL
% POST /_api/index#ttl
%
%
% collection
% JSON对象是必需的
% ttl
% fields
% expireAfter
% type ttl
% fields
% expireAfter
% collection-name创建TTL索引
%
% 200HTTP 200
% 201 HTTP 201
% 400TTL索引HTTP 400TTL索引
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 400TTL索引HTTP 400TTL索引
% 404HTTP 404
newIndexOfTtl(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"ttl">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"ttl">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
@ -261,26 +283,30 @@ newIndexOfTtl(PoolNameOrSocket, CollName, MapData) ->
{error, param}
end.
% 使
%
%
% POST /_api/index#geo
%
%
% collection
% JSON对象是必需的
% geo
%
% type geo
% fields
% location的数组使location作为坐标的路径在所有文档上创建地理空间索引double值的数组
% latitude和经度的数组使
%
% geoJsongeoJson为truehttp://geojson.org/geojson-spec.html#positions中描述的格式
% collection-name中创建地理空间索引
%
%
%
% 200HTTP 200
% 201 HTTP 201
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 404HTTP 404
newIndexOfGeo(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"geo">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"geo">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
@ -334,25 +360,25 @@ newIndexOfGeo(PoolNameOrSocket, CollName, MapData) ->
% 400JSON表示形式
% 404collection指定的collection未知
%
% /_api/simple/fulltext则将使用该索引执行指定的全文查询
%
%
%
% POST /_api/index#fulltext
%
%
% collection
% JSON对象是必需的
% fulltext
%
% minLength
% type
% fields
% minLength
% collection-name创建全文索引
%
% 200HTTP 200
% 201 HTTP 201
% 404HTTP 404
% 200HTTP 200
% 201 HTTP 201
% 404HTTP 404
newIndexOfFulltext(PoolNameOrSocket, CollName, MapData) ->
case MapData of
#{type := <<"fulltext">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),
agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, Path, [], BodyStr);
#{<<"type">> := <<"fulltext">>} ->
Path = <<"/_api/index?collection=", CollName/binary>>,
BodyStr = jiffy:encode(MapData),

Зареждане…
Отказ
Запис