# Solr Survey
###### tags: `HH`
**Solr admin web ui**
1. 測試機:
http://10.57.232.105:8983/solr/
- spc query
http://10.57.232.105:8983/solr/#/spc/query
2. 正式機:
http://10.160.29.105:8983/solr/
- spc query
http://10.160.29.105:8983/solr/#/spc/query
**Common query parameter:**
1. q(query) -> 查詢條件
```
q=*:*
q=key:value AND key:value
q=key:value OR key:value
#找出SPC_0>=173388
q=SPC_0:[173388 TO *]
#找出timestamp在2019-08-09 10:30:00 到 2019-08-09 12:30:00
q=timestamp:[1565317800 TO 1565325000]
#找出timestamp_iso在2019-08-09 10:30:00 到 2019-08-09 12:30:00
timestamp_iso的時區->Asia/Taipei timezone:
q=timestamp_iso:[2019-08-09T10:30:00Z TO 2019-08-09T12:30:00Z]
````
2. fq(filter query) -> 將query查回來的資料放入cache, 再進行複雜的條件過濾
```
fq=key:value
fq=key:value or key:value
````
3. sort -> 排序
```
sort=spc_0 asc
sort=spc_0 asc, machine_id desc
````
4. start -> 從第n筆開始, default是從第1筆開始
```
start=11
````
5. rows -> 撈出的筆數上限, default是取得10筆資料
```
rows=2880
````
6. fl(filter list) -> 搜尋特定欄位, default是全部欄位都搜尋
```
fl=spc_0,timestamp
````
# Query data api
**目前有5個Core:**
1. spc
[http://10.57.232.105:8983/solr/#/spc/query](http://10.57.232.105:8983/solr/#/spc/query)
2. machinestatus
[http://10.57.232.105:8983/solr/#/machinestatus/query](http://10.57.232.105:8983/solr/#/machinestatus/query)
3. historyrecord
[http://10.57.232.105:8983/solr/#/historyrecord/query](http://10.57.232.105:8983/solr/#/historyrecord/query)
4. alarmrecord
[http://10.57.232.105:8983/solr/#/machinestatus/query](http://10.57.232.105:8983/solr/#/machinestatus/query)
5. dc_event
[http://10.57.232.105:8983/solr/#/dc_event/query](http://10.57.232.105:8983/solr/#/dc_event/query)
**Example:**
- 查詢2019-08-09 10:30:00 到 2019-08-09 12:30:00, 機台A03的模次資料
**1. spc**
query data api對照
```
example輸入參數:
{"sdate": "2019-08-09 10:30:00","edate": "2019-08-09 12:30:00","no": "A03","type": "_Spc"}
````
solr api
```
1.timestamp
http://10.160.29.105:8983/solr/spc/select?q=machine_id:A03 AND timestamp:[1565317800 TO 1565325000]&sort=SPC_0 asc&rows=272
2.timestamp_iso
http://10.160.29.105:8983/solr/spc/select?q=machine_id:A03 AND timestamp_iso:[2019-08-09T10:30:00Z TO 2019-08-09T12:30:00Z]&sort=SPC_0 asc&rows=272
````
**2. machinestatus**
```
1.timestamp
http://10.160.29.105:8983/solr/machinestatus/select?q=timestamp:[1565317800 TO 1565325000] AND machine_id:A03&sort=spc asc&rows=5760
2.timestamp_iso
http://10.160.29.105:8983/solr/machinestatus/select?q=timestamp_iso:[2019-08-09T10:30:00Z TO 2019-08-09T12:30:00Z] AND machine_id:A03&sort=spc asc&rows=5760
```
**3. historyrecord**
```
1.timestamp
http://10.160.29.105:8983/solr/historyrecord/select?q=timestamp:[1565317800 TO 1565325000] AND machine_id:A03&rows=5760
2.timestamp_iso
http://10.160.29.105:8983/solr/historyrecord/select?q=timestamp_iso:[2019-08-09T10:30:00Z TO 2019-08-09T12:30:00Z] AND machine_id:A03&rows=5760
````
**4. alarmrecord**
```
1.timestamp
http://10.160.29.105:8983/solr/alarmrecord/select?q=timestamp:[1565317800 TO 1565325000] AND machine_id:A03&rows=5760
2.timestamp_iso
http://10.160.29.105:8983/solr/alarmrecord/select?q=timestamp_iso:[2019-08-09T10:30:00Z TO 2019-08-09T12:30:00Z] AND machine_id:A03&rows=5760
````
# Insert data to Solr
1. create solr core:
http://10.160.29.112:8983/solr/#/~cores/alarmrecord
- copy core資料夾
$ cd /opt/solr/server/solr/
$ cp -r ${old_core_name} ${new_core_name}
- 刪除 core.properties
$ rm -rf core.properties
- 修改 managed-schema
$ vim managed-schema
1. 調整 schema name="${new_core_name}"
2. 新增field, 從id field開始調整

一定要設定uniquekey <uniqueKey>id</uniqueKey>
3. 回到solr admin web, 按下add core button
http://10.160.29.112:8983/solr/#/~cores/alarmrecord

2. insert data to solr:
- install pysolr package
- python sample code:
http://10.57.232.171:8888/ap5d2/data-mgmt-api/blob/master/app/addSolrData.py
```
import pysolr
from settings import SOLR_PORT, ENV, SERVER_IP
def addOEEData(coreName, data_collector):
# SERVER_IP
host = SERVER_IP
port = SOLR_PORT
url = 'http://' + host + ':' + port + '/solr/' + coreName
# http://10.160.29.112:8983/solr/oee_test
solr = pysolr.Solr(url, timeout=10)
document = [{
"id": "1",
"machine_id": "A01",
"timestamp": "1569168000",
"timestamp_iso": "2019-09-23T16:02:00.000Z",
"activation": "88.88",
"performance": "99.25",
"quality": "78.69",
},{
"id": "2",
"machine_id": "A03",
"timestamp": "1569168000",
"timestamp_iso": "2019-09-23T16:02:00.000Z",
"activation": "78.88",
"performance": "95.25",
"quality": "85.69",
},{
"id": "3",
"machine_id": "A05",
"timestamp": "1569168000",
"timestamp_iso": "2019-09-23T16:02:00.000Z",
"activation": "95.88",
"performance": "90.25",
"quality": "89.69",
},{
"id": "4",
"machine_id": "A06",
"timestamp": "1569168000",
"timestamp_iso": "2019-09-23T16:02:00.000Z",
"activation": "89.88",
"performance": "96.25",
"quality": "83.69",
}]
solr.add(document)
````
(盡可能一次 insert 多筆,因為效能比逐筆 insert 好很多)
- 查詢資料是否insert成功
http://10.160.29.112:8983/solr/#/oee_test/query